工具/软件:TI C/C++编译器
大家好、
我正在为 TM4C129DNCPDT 开发定制的引导加载程序。 我们需要使用 UART1执行代码更新、 由于 Tiva 的内置引导加载程序不能在该 UART 通道上使用、因此我们需要构建自己的引导加载程序(如果可以使用它、请向我指出文档的方向、我的理解是您只能将它与 UART0或 USB 配合使用)。 除了 TivaWare 库之外、我还在使用 TI-RTOS、这是值得的。
除此之外、我们还希望在闪存中进行特殊设置。 我们需要两个我们的计划所在的位置。 我们的想法是、我们始终在闪存中有一个工作版本的代码、因此、如果代码更新失败或文件损坏、我们可以返回到原始代码上、处理器继续工作。 但是、这意味着我们需要在闪存中放置固件的第二个位置。
我对所有这些都有几个问题:
- FlashProgram 函数将字节直接放入闪存中。 如果我使用通过调用"tiobj2bin"生成的.bin 文件并使用 FlashProgram 将.bin 文件放入闪存中、我的代码是否会按预期运行? 如果没有、我需要做什么来使 FlashProgram 将我的代码正确地放入闪存中?
- 函数的寻址是相对的还是绝对的? 这意味着、如果我在位置0x00000000处有代码、并且在0x00050000处刷写了新版本的代码、在调用函数时、我的新代码集是否会跳转/分支回旧代码? 或者函数调用是否会跳转到新的代码位置? 这可以是链接器设置吗?
- 如何限制程序的可用闪存以避免溢出? 我相信它是通过.cmd 文件实现的、但我以前不必这么做、所以我只想确保。
我希望这是有道理的、我知道这相当复杂、与 Tiva 的通用引导加载程序不同。 如果我的一些问题将通过文档得到解答、请向我指出文档的方向。 感谢你能抽出时间。
-Tom