hi
芯片:rt1010cae4a
参考例程:SDK_2.7.0_EVK-MIMXRT1060\boards\evkmimxrt1060\bootloader_examples\ota_bootloader
我想在0x60002000地址编译第一个程序(以后称为:bootloader), 0x6000A000地址编译另一个程序(以后称为:主程序app).每次开机先启动0x60002000地址的bootloader,在bootloader的main函数中直接跳转到主程序.依据指导,我参考了以上例程。
我对以下几点,有疑问:
1.对于app,在程序的开头,我需要作么,除了开启全局中断。
2. SCB->VTOR = (uint32_t)0x6000A000 为什么要在在bootloader中执行此函数。这不是应该在app开头吗?
3. SP = _RDWORD(0x20002000); // Setup Stack Pointer
PC = _RDWORD(0x20002004); // Setup Program Counter
在bootloader中将sp,pc指向了ram。为什么不是0x60002000.
一个最简化的bootloader应该怎么做呢?
Hi 志成 项
楼主你好!
回答你的几个问题:
1.对于app,在程序的开头,我需要作么,除了开启全局中断。
答: 你需要做地址偏移,偏移的地址就是你bootloader指定的地方。
你也可以参考ota_bootloader配套的app
\SDK_2.7.0_EVK-MIMXRT1060\boards\evkmimxrt1060\lwip_examples\lwip_httpssrv_ota
2. SCB->VTOR = (uint32_t)0x6000A000 为什么要在在bootloader中执行此函数。这不是应该在app开头吗?
答: 这个是你app偏移之后的地址
3. SP = _RDWORD(0x20002000); // Setup Stack Pointer
PC = _RDWORD(0x20002004); // Setup Program Counter
在bootloader中将sp,pc指向了ram。为什么不是0x60002000.
一个最简化的bootloader应该怎么做呢
答,你的app偏移地址是否有效?
0X60002000是你的bootloader,这个有IVT, BD等文件,通过ROMboot loader跳转了,你需要跳转的是从bootloader中检查第二个app偏移地址是否有效,有效之后在你的secondary boot loader中去跳转。
Wish it helps you!
If you still have questions about it, please kindly let me know.
Kerry
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------