IAP在stm32f103c8t6上的实现
来源:互联网 发布:软件测试需要会什么 编辑:程序博客网 时间:2024/05/22 20:27
手上的单片机是STM32F103C8T6,ROM容量是64KB,起始地址为 0x0800 0000;RAM容量是16KB,起始地址为0x0200 0000。开发环境是Keil5,用到的工具还有串口助手。我将待下载的程序生成为bin文件,再通过串口助手发送给单片机接收。
在设计IAP程序时,要考虑ROM和RAM的大小。一方面,APP程序下载到单片机时是存放在ROM中的,如果你想下载多个APP程序,肯定需要ROM大些;另一方面,在串口接收数据时,APP代码首先存在一个数组变量中,这需要占用很大的RAM。我的APP程序是一个简单的灯闪烁程序,仅为验证IAP可行。
首先要完成bin文件的生成:
第一步:配置程序到底写在flash的哪个区域。APP代码首先从0x0800 C000 开始写,字长为0x4000,表示给APP代码预留16K的空间,另外48KB全部留给Bootloader程序。RAM不作修改,因为我是写进ROM(即flash)里的呀。由此还可知地址偏移量为0xC000(从0x0800 0000偏到0x0800 C000)
第二步:在代码初始化阶段添加一条代码: SCB->VTOR = FLASH_BASE | 0xC000;//flash偏移量为0xc000,这是对中断向量表的重定向。
第三步:配置程序如何生成bin文件。在Option(即配置单片机型号、下载器那个窗口)里找到User,在.....After Build\Rebuild 里 勾选Run#1,并黏贴如下内容:C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o "$L@L.bin" "#L"(其中\Keil_v5之前为安装路径)
第四步:编译程序。在工程文件夹搜索有没有bin格式的文件,应该只有唯一的一个,它就是所谓的APP代码,类似于HEX。
之后就是编写Bootloader程序:
主要就是两个函数,将APP代码写入flash,和跳转函数。其实不用太深究,会用就好。
0 0
- IAP在stm32f103c8t6上的实现
- 用STM32F103C8T6的做IAP时,在跳转时一直进入HardFault_Handler 解决方法
- 用STM32F103C8T6的做IAP时,在跳转时一直进入HardFault_Handler 解决方法
- 【云隐】STM32F103C8T6实现串口IAP方式升级固件
- STM32F103C8T6 IAP程序
- I2C接口硬件加密芯片SMEC98SP在STM32F103C8T6系统上的应用
- 在STM8L上实现IAP(In Application Programming)
- STM32的IAP实现
- 关于STM32在实现IAP时的一些注意
- STM32L151C8T6 的IAP实现方案
- stm32 IAP + app的实现
- 在GPRS模块(GA6)和STM32F103C8T6单片机上移植MQTT协议
- STM32F103C8T6按键中断功能实现
- IAP一个实例---LPC2214的IAP实现方案
- 移植uC/OS-II到STM32F103C8T6上(参考了野火的移植手册)
- stm32f103c8t6的usb开发记录
- STM32f103c8t6作USBCDC的尝试
- IAP 实现
- 图片的缩放和移动
- iOS开发------简单实现图片多选功能(Photos.framework篇)
- YoMail新版发布会:YoMail+石墨文档+坚果云,重新定义Email APP发展新方向
- gitlab报错 "fatal: index-pack failed error: RPC failed; result=18, HTTP code = 200"解决方案
- 大数据时代的技术hive:hive介绍
- IAP在stm32f103c8t6上的实现
- 时间管理二分法——游离有聚焦
- 论文阅读:Things, Trouble, Trust: On Building Trust in IoT Systems
- 用函数来判断一个数是不是素数
- 欢迎使用CSDN-markdown编辑器
- Unix环境高级编程笔记
- Linux 下的 shell 编程之 输入输出
- UICollectionView Class Reference
- 怎样在配置页面加配置项