TI论坛
直播中

张淑兰

7年用户 258经验值
私信 关注
[问答]

请问LM4F232的boot loader过程是什么?

看了LM4F232的bootloader过程,没有看懂,麻烦专家介绍下LM4F232从上电到加载应用程序到SRAM中的过程!!
最好说明清楚CPU运行的是哪里的程序,程序从哪里拷贝到哪里,什么情况下需要更新程序等?

回帖(4)

刘雪映

2020-4-13 10:15:10
上电后程序当然是从FLASH的0x00000000地址开始运行。BOOTLOADER程序代码就是放在0x0地址。应用程序由BOOTLOADER加载运行,故其起始地址由BOOTLOADER决定。当需要更新应用程序时,BOOTLOADER应当通过USB接口从外部U盘中读取更新程序,然后烧录至应用程序区完成更新
举报

周莹

2020-4-13 10:28:10
引用: thyy***k 发表于 2020-4-13 12:16
上电后程序当然是从FLASH的0x00000000地址开始运行。BOOTLOADER程序代码就是放在0x0地址。应用程序由BOOTLOADER加载运行,故其起始地址由BOOTLOADER决定。当需要更新应用程序时,BOOTLOADER应当通过USB接口从外部U盘中读取更新程序,然后烧录至应用程序区完成更新 ...

晕 打字打了半天居然没有了。再发一次:
楼上的解释不对的。Cortex M3/M4内核在0x0000.0000存了主堆栈地址,上电后会内核自动加载这里的堆栈地址。在0x0000.0004位置存了一个启动程序入口地址,内核在加载堆栈后会自动跳转到该地址执行程序。所以更改0x0000.0004地址上的地址可以决定上电后从哪里执行程序。
一般来说Stellaris程序运行在Flash中的,不会拷去RAM。当然用户也可以自己拷进RAM然后在RAM中执行。
Bootloader因为会擦除Flash所以比较特殊,需要把自身复制到RAM中去。
举报

周莹

2020-4-13 10:49:29
1. 程序如果没有被复制到RAM里的话就是在Flash中运行
2. Flash和SRAM在同一个地址空间,但地址不重合
3. startup定义的是一个放在0x0000.0000的数组,这就是为什么那个数组第一项是指向堆栈的地址
4. Cortex-M3/M4的内核机制不同,bootloader不是必须的。
5. ROM中的Bootloader程序启动时不一定运行,但可以在运行应用程序时跳转过去
举报

周莹

2020-4-13 11:00:55
ROM中还会有些数据,如AES加密表和CRC相关的功能
举报

更多回帖

发帖
×
20
完善资料,
赚取积分