总结

**结论:**宏晶科技的串口ISP(In-System-Programming)程序就是使用IAP功能来对用户的程序进行在线升级的,ISP原理是由厂商在单片机内部固化一段ISP代码,STC单片机是在上电时检测是否有连续的‘d’字符,如果检测到,则认为进入ISP准备阶段。如果超时没有收到’d’,则执行用户代码区。若进入ISP准备阶段,根据STC定义的协议接收数据帧,最后完成程序的擦除、写入。在ISP准备阶段若未收到数据帧,则超时退出ISP,执行用户代码区。但是出于对用户代码的安全着想,底层代码和上层应用程序都没有开源,为此宏晶科技推出了IAP系列单片机,即整颗MCU的Flash空间,用户均可在自己的程序中进行改写,从而使得有用户需要开发字节的ISP程序的想法得以实现。除IAP12C5A62S2AP12LE5A62S2等芯片可在应用程序区修改应用程序区外。程序在用户应用程序区时,仅可以对数据 Flash区( EEPROM进行字节读/字节编程/扇区擦除)。综上的出结论,STC12C5A60S2不支持远程升级。
**关于结论:**淘宝店家:(访问数量8家)2家没回我,5家不知道,1家询问之后和我说不可以百度知道:STC都支持isp现场升级功能,STC单片机中IAP开头的还支持远程升级
在线编程目前有两种实现方法:在系统编程(ISP)和在应用编程(IAP)。ISP一般是通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程。而IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。芯片手册:程序在用户应用程序区时,仅可以对数据 Flash区( EEPROM进行字节读/字节编程/扇区擦除,IAP12C5A62S2AP12LE5A62S2等除外,这几个型号可在应用程序区修改应用程序区。 相同资源可替换芯片:IAP12C5A62S2为什么STC8A8K64S4A12可以实现远程升级?方式是什么?和IAP有何区别?
**网上的办法:**1、bootloader加载片外flash在线升级程序。自己写一个引导程序bootloader来实现程序的烧录,比如用bootloader接收串口数据、读取外挂flash的数据或者SD卡数据,然后一边读数据、一边烧录应用程序。STC8A8K64S4A12一上电就执行ISP区代码,超时后,会执行bootloader程序,bootloader会检查是否要更新程序,如果没有,就直接跳去执行应用程序。这种方法和好处是可以不用串口去更新程序,因为串口要再加一颗MCU,或者要用专用的上位机,多了成本。通过STC8A8K64S4A12主动拷贝数据来更新程序可以说是一种省成本的方式。根据是否外挂flash,分为片上型(onchip)和片外型(offchip)。片上型,单片机没有外挂flash,程序升级全部依靠单片机内部存储。比较典型的是CC2541的OTA(空中升级),CC2541将内部存储分成BIM、Image A和Image B。其中BIM是引导程序,Image A和Image B是用户应用程序。当执行在Image A时,可以升级Image B程序,完成后重启,让BIM选择切换运行Image B程序,反之亦然。这种方式有优点,亦有缺点,优点就是OTA过程中如果失败,不怕程序奔溃,顶多不切换就行,缺点就是两个功能类似的用户程序占用更多存储空间。片外型,单片机有外挂flash,程序升级时单片机的用户程序先将升级数据写入到外部flash中,完成后重启,重启后bootloader会将外部flash的升级数据读出,然后写入到内部flash,完成后,切换到升级后的用户程序。比较典型的是CC2640R2F的OTA-Offchip。这种方式的优点是将外部flash作为升级程序数据缓存,无需占用内部flash,用户程序存储空间利用率高,缺点就是需要增加一片flash的成本。接下来,我介绍一下本次STC8A8K64S4A12单片机采用片外型来在线升级程序功能实现。首先是空间分配问题,STC8A8K64S4A12单片机的程序存储空间ROM有64K,ROM的擦除是按照512字节/扇区,所以存储空间分配要按照512字节的整数倍。我将前面3K存储空间(0x0000-0x0BFF)分配给BIM程序区来作为bootloader,剩下61K存储空间(0x0C00-0xFFFF)分配给IMAGE程序区。开发板的外部flash型号是W25X16CL,存储空间为2M。由于flash的擦除是按照4K/扇区,所以存储空间分配要按照4K的整数倍。我将前面的4K存储空间作为IMAGE文件信息区,将接下来的64K存储空间作为IMAGE文件数据区。2、原理就是整个代码空间都设置为flash空间,用户程序可以在运行时修改flash内容。具体办法:收到的升级代码放在外部flash,用户程序擦除内部flash(即旧代码),将外部flash的升级代码写入内部falsh,最后重启。用户程序分成两部分,正常的应用部分和升级部分。两部分分开存放,升级部分只擦除、写入应用部分的flash空间
与STC12C5A60S2区别:没查到不确定是什么导致的,有可能只用STC8A8K64S4A12试过,奇怪STC芯片没有类似做远程升级的文章。猜测可能是STC8A8K64S4A12可以分配EEPROM,而stc12c5a60s2只有1KEEPROM。

关于STC12C5A60S2单片机实现IAP远程升级研究相关推荐

  1. STC51单片机实现IAP远程升级过程分享

    STC51单片机实现IAP远程升级过程分享 1.STC内部ISP更新机制 2.了解51单片机IAP分区 3.IAP分区的调用流程与IAP部分源码: 4.IAP步骤总结 5.源码下载 关于STC单片机I ...

  2. STM32F407开发板的HTTP模式IAP远程升级之官方例程移植

    版权声明:本文为博主原创文章,转载请注明出处:https://blog.csdn.net/wbdxz/article/details/82859237 关于远程升级的模板建立,可以参考下面的博文 ST ...

  3. STM32 10个工程篇:1.IAP远程升级(一)

    清晨一大早起来开始撰写STM32 10个例程篇的第一章即串口IAP远程升级,虽然网络上有很多免费和付费的STM32教程,但是仍然不断地说服自己沉住气.静下心写一份独一无二的,这份独一无二中也凝聚了一名 ...

  4. STM32F407(ucosII)利用4G模块进行IAP远程升级

    一.硬件资源 STM32F407VET6  flash:512K SIMCOM7600CE模块(MQTT) 二.软件情况 工程代码分两个来做,一个是BootLoader工程代码,一个是APP应用工程代 ...

  5. Cortex-M3单片机的IAP在线升级上位机和下位机

    最近有个项目要做在线升级功能,我也是第一次做,把学习的过程总结下,希望能够帮助到 其他人吧.本篇博客主要介绍两个部分,下位机和上位机. 首先说下要实现功能: 1.上位机能够把APP的bin文件烧写进下 ...

  6. 远程升级stm32程序_STM32IAP远程升级带C#上位机

    关注"电子芯吧客" ,每周都有精彩文章推荐 在很多场景应用中需要我们的控制器能够实现远程升级,比如我之前做的一个项目中,项目的主要需求就是老师的电脑能够获取学生的实验设备的实验数据 ...

  7. 基于IAP实现的STM32F系列固件升级(远程升级 + SD卡升级)

    谈到STM32固件更新,首先就要了解一下固件的概念.固件是指下载到芯片里面去运行的二进制代码数据,是代码工程编译之后生成的,大家如果用的是MDK Keil的话,点了那个编译之后,就会生成固件,点击下载 ...

  8. 差分升级 增量升级 单片机 STM32 IAP升级OTA升级,物联网车联网可用

    差分升级 增量升级 单片机 STM32 IAP升级OTA升级,物联网车联网可用 介绍博客 https://blog.csdn.net/zhou74281/article/details/1177776 ...

  9. 51单片机IAP在线升级

    51单片机IAP在线升级 爱矽半导体E85F3325单片机IAP在线升级教程,此处可查看更新及demo下载 文章目录 前言 一.ROM资源 二.KEIL有关知识 1.BL51连接器: 2.LX51连接 ...

  10. 基于IAP和Keil MDK的远程升级设计

    写在前面:三周之前,我突然想写一个远程升级的程序.那个时候我只是大概知道IAP的意思是在应用编程,但怎么编,我还一无所知.我给自己定下一个个阶段目标,从最基础的代码一点点写起,解决一个又一个的问题.三 ...

最新文章

  1. 软件学院学生在数据管理国际会议SIGMOD程序竞赛中喜获佳绩
  2. JS实现表格列宽拖动
  3. python 利用多进程实现文件的拷贝
  4. Struts2自定义Result处理JSON
  5. python列表的复制,扯一下浅拷贝与深拷贝的区别
  6. C# Repeater绑定显示数组
  7. iOS 开发疑难杂症(01)
  8. Palindrome subsequence HDU - 4632 区间dp|记忆化搜索
  9. 加班累到住院,到30岁年薪百万:你所谓的拼命,绝不是职场捷径
  10. category和extension的区别
  11. 编译内核出错:invalid option `abi=aapcs-linux'
  12. C++输入输出操作符重载
  13. 【回归预测】基于matlab离群鲁棒极限学习机(ORELM)求解回归预测问题【含Matlab源码 1441期】
  14. Javascript面向对象编程与继承机制的设计思想(转)
  15. Java qq登录界面设计
  16. elasticsearch版本介绍
  17. 单片机C语言LED点阵编程,基于单片机的8*8 LED点阵显示技术
  18. linux eclipse glib.h,eclipse Glib
  19. 移动web基础:视口(viewport),流式布局 JDM京东移动端开发
  20. 新中大连接服务器文件,新中大软件服务器地址修改

热门文章

  1. Java打印正三角形
  2. typescript获取时间戳
  3. JAVA系列-设计模式-中介者模式
  4. 【用户端】家庭医生高保真Axure原型模板
  5. 中国所有省市区的ip经纬度接口
  6. 高德地图JSAPI点位相关操作
  7. matlab程序复制出现乱码,matlab程序复制到Word文档里变成乱码,该如何改?
  8. SSM框架整合-404
  9. Android App 架构设计
  10. nodejs代理请求转发