英飞凌
直播中

李娓仑

7年用户 1296经验值
私信 关注

使用TC387做bootloader,程序从bootloader跳转到APP运行43s后卡死,哪些原因导致的?

已知APP程序和bootloader程序单独运行无异常,两个程序一模一样
修改lsl文件的内存地址后,在bootloader程序添加跳转语句,跳转到app程序执行43s后卡死,跳转前已关闭全局中断和看门狗,APP程序除了启动流程,只有点灯程序,lsl文件已经把pflash,dflash,pspr,dsps完全分开,哪位大神知道哪里的问题?

回帖(1)

王丽

2024-7-4 16:54:22
根据您的描述,这个问题可能有以下几个原因:

1. **内存问题**:虽然您提到了lsl文件已经将内存分开,但是在跳转过程中,如果内存分配不当或者存在内存泄漏,可能会导致程序运行一段时间后出现异常。

2. **中断问题**:虽然在跳转前关闭了全局中断和看门狗,但是在APP程序运行过程中,如果有中断被触发,而没有正确处理,可能会导致程序卡死。

3. **看门狗问题**:虽然在跳转前关闭了看门狗,但是有可能在APP程序中没有正确处理看门狗,导致看门狗在某个时刻触发,从而使程序卡死。

4. **程序逻辑问题**:虽然APP程序只有启动流程和点灯程序,但是如果程序逻辑存在问题,比如死循环、错误的条件判断等,也可能导致程序卡死。

5. **硬件问题**:如果硬件存在问题,比如电源不稳定、芯片损坏等,也可能导致程序运行一段时间后卡死。

6. **编译器问题**:如果编译器存在bug,可能会导致生成的程序运行不稳定。

为了解决这个问题,您可以尝试以下方法:

1. **检查内存分配**:确保内存分配正确,没有内存泄漏。

2. **检查中断处理**:确保APP程序中的所有中断都能正确处理。

3. **检查看门狗处理**:确保APP程序中正确处理看门狗,避免看门狗触发。

4. **检查程序逻辑**:检查APP程序的逻辑,确保没有死循环、错误的条件判断等问题。

5. **检查硬件**:检查硬件是否存在问题,比如电源、芯片等。

6. **尝试不同的编译器**:如果可能,尝试使用不同的编译器生成程序,看是否还会出现同样的问题。

7. **添加调试信息**:在程序中添加调试信息,比如打印关键变量的值,以便在程序卡死时能够找到问题所在。

8. **逐步调试**:使用调试器逐步执行程序,观察程序在哪个地方卡死,以便找到问题所在。

希望这些建议能帮助您解决问题。
举报

更多回帖

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