NXP MCU 技术论坛
直播中

杨杰

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

DEVKIT-MPC5744P串行引导加载程序的问题如何解决?

DEVKIT-MPC5744P 串行引导加载程序的问题 - 使用 RAppID BL - 在闪存之后 - 应用程序不会在 POR 后运行
在 MPC5744P 的 RAppID BL 引导加载程序中成功编程 - 没问题......
文件名:MPC5744P.rbf -> 由 RAppID BL 安装包提供
通过 JTAG 使用 PE Multilink Universal FX
使用 S32DS - “从文件中闪现......” - 对话框 - 到目前为止一切顺利

设置 RAppID BL 工具用于:
串行端口 - DEVKIT-MPC5744P OpenSDA 串行端口接口的 Com 端口指定 - 115200
MCU 零件号:MPC574xP
BAM 设置 -> 禁用 - 显然不支持此工具的 MPC5744P,如果有的话。
应用程序文件 -> MyApplication.srec
自动读取文件 -> 未选中
自动填充 -> 起始地址 0xFA0000
自动填充 -> 代码大小范围 0x63488
操作设置:单选按钮“擦除和编程”已选中
启用跟踪 -> 检查

单击RAppID BL 工具用户界面的“启动引导加载程序”按钮后,状态消息显示正确的擦除和编程
应用程序按预期运行 - 闪烁 DEVKIT 的 LED - 从 CAN 总线发送测试包,等等。
So Far So Good (SFSG) - 除了,如果 DEVKIT 按下了重置按钮 - 程序不会运行

不确定之前编程的引导加载程序是否被 RAppID BL 工具擦除,重新连接 S32DS 和 PE 调试器以尝试再次刷新引导加载程序,但失败了,因为引导加载程序已经存在 - 所以很好,引导加载程序保持常驻正如预期的那样,在 RAppID BL 闪存之后的代码中。

再次刷入应用程序代码的 .srec 文件,刷入成功,程序运行,但这次断电并重新应用 - 程序没有运行

在准备引导加载程序时,应用程序项目的链接器命令文件和 main.c 修改如下- 可能不正确......因为当引导加载程序未被启动时,引导加载程序(MPC5744P.rbf)似乎无法正确跳转到应用程序呼吁。

在我的应用程序 S32DS IDE 项目中,文件 57xx_flash.ld 被修改如下:
在内存中 {}
添加
/* 添加了 rbf 引导加载程序支持 - 1 of 2 */
delay_us : org = 0x00FA0008, len = 0x4



/* 添加了 rbf 引导加载程序支持 - 2 of 2 */

appkey_addr:org = 0x00FA000C,len = 0x4

在 SECTIONS {} 内
添加
/* 添加了 rbf 引导加载程序支持 */
.appkey_addr :

{

保持(*(.appkey_addr))

} > appkey_addr





/* 添加了 rbf 引导加载程序支持 */

.usdelay:

{

保持(*(.usdelay))

} > delay_us

在 main.c - 添加了这些引导加载程序保留内存和分配
// .rbf 引导加载程序支持常量
const volatile uint32_t __attribute__ ((section( ".appkey" ))) APPKEY = 0x55AA55AA;

const volatile uint32_t __attribute__ ((section( ".usdelay" ))) BLDELAY = 0x2DC6C0; //3秒延迟

const volatile uint32_t __attribute__ ((section( ".appkey_addr" ))) APPKEY_ADDR = &APPKEY;

问题:
我记得提到过第二个中断向量表或类似的东西——缺少什么吗?
应用程序的起始地址是否应该分配一个内存字段?
还是我们从哪个闪存块开始就隐含了这一点?

请注意,我们的测试应用程序是从 DEVKIT-MPC5744P 演示项目 FlexCAN_MPC5744P 移植而来的——它在 DEVKIT-MPC5744P 和 RD33771 演示板上的调试模式下都能正常工作。

更多回帖

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