Stellaris LM3S Tempest产品中包含27K左右容量的ROM区。在该ROM区中,包含Stellaris 外设驱动库、Bootloader、AES加密解密表格、CRC校验功能,另外在LM3S9B96中,还预装有SafeRTOS。
SafeRTOS是近年来在欧美极为流行的实时操作系统,它支持抢占式和合作式的任务切换模式,代码非常精简,RTOS核心只有三个C文件,可支持任务数目65536个。SafeRTOS还有一个开源免费版本FreeRTOS,相信很多工程师都有耳闻,目前也以很快的速度流行起来。
言归正传,还是回到Bootloder的启动流程上。
1. 启动上电,ROM被映射到 0x01xx.xxxx,Flash映射到0x0000.0000;
2. 程序读取BOOTCFG中的EN位,如果EN为0,则读取相应的GPIO管脚的高低电平。如果读取到高低电平和BOOTCFG的高低极性匹配(比如之前BOOTCFIG设置控制引脚PB7极性为高,而此时读取也为高电平),则执行Bootloader。如果不匹配,转而去查看Flash地址的0x0000.0004地址是否为0xFFFF.FFFF,如果为0xFFFF则表明该芯片没有被编程过,因此继续执行Bootloader。如果读取Flash地址不是0xFFFF.FFFF,表明Flash内部有程序可执行,于是执行Flash中的指令。