stm32同时编译多个固件
为满足日常开发需求,现在很多情况下一个片子需要通过BootLoader和Application两段程序组成。
Bootloader:一般用作用户升级Application用户程序用,程序的起始地址为:0x08000000,当遇到Application程序有更新的情况下,可以很方便和友好的通过BootLoader程序来对其进行更新。Bootloader更新Application的方式和途径有很多,比如串口的IAP、U盘的IAP等等,本人常用U盘进行升级。
Application:用户程序。一般起始地址并不是再0x08000000。
调试烧写hex固件的方式我一般选择的是Jflash,方式也很多,拦祥让比如,Stlink的烧写软件,串口的烧宴轮写软件(MCUISP挺好用)等等。
第一步:将多个HEX文件合并成一个HEX文件。
这里以两个HEX为例,其中一个为BootLoader,另一个为Application。
1.新建一个文本文档,并命名简局成XXX.hex
2.通过各种编辑器分别打开BootLoader.hex、Application.hex和XXX.hex。我这里用的是notepad++。
3.把Bootloader里面的内容全部复制到XXX.hex中
4.删除XXX.hex中的最后一行(:00000001FF)
5.将Application.hex中的内容全部复制并添加到XXX.hex的结尾
6.保存,此时的XXX.hex文件就是一个合并了Bootloader和Application的固件。
第二步:烧写固件
烧写固件比较简单,但是要注意两个hex的文件要确保烧写的地址。
STM32上能跑Android吗?对存储器有什么要求呢?
Android是基于标准Linux内核的操作系统,大部分的应用程序都是基于JAVA虚拟机。
1. Android系统需要百兆以上的处理器和数十兆的RAM空间。
2. 标准Linux需要处理器具有MMU(存储器管理单元)。
STM32满足不了这两点要求,所以STM32上是无法跑Android的。
不过在STM32上运行UCOS、FreeRTOS等轻量级机操作系统还是游刃有余的。