0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

F28004x在线调试复位后程序无法运行怎么办

电子设计 来源:电子设计 作者:电子设计 2022-01-13 17:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:TI 工程师 Aki Li, Ricky Zhang

问题描述:F28004x在线调试,如果利用CCS进行reset复位后,点击run/resume程序将停留在0x3FB02A 而无法继续运行, 而需先点击restart,程序方可正常运行。原因在于F28004x在仿真状态下的引导模式(Emulation Boot)尚未配置,因而无法顺利完成引导过程,而CCS的restart功能可以屏蔽芯片的引导过程,使得程序自动跳到main()函数入口。具体分析此问题之前,有必要了解下芯片在复位后的引导过程。下面以F28004x为例介绍C2000芯片的引导过程,老版本的芯片可参考《TMS320x2803x Piccolo Boot ROM reference guide》,基本过程还是一致的。

当芯片重上电或者收到复位信号时,芯片都需要执行引导程序,选择程序入口地址或者通过外设加载程序(bootloader),后续才会运行应用程序。复位后,芯片会从地址0x3FFFC0处运行复位向量,从而跳转至Boot ROM里开始执行InitBoot功能。芯片会判断当前是否连接仿真器,进入不同的引导流程,如图1和图2分别给出了芯片在脱机模式和仿真调试模式的引导过程。

(1) 若芯片没有连接仿真器,系统进入脱机模式的引导过程。F28004x在出厂时默认通过引导模式选择引脚(Boot Mode Select Pin, BMPS) GPIO24和GPIO32的电平状态组合选择不同的引导模式,如表1所示。但与F2803x等老版本芯片不同,F28004x也可以支持用户自定义BMPS和引导模式,分别通过改写DCSM OTP中的 Z1-OTP-BOOTPIN-CONFIG和Z1-OTP-BOOTDEF对应的值实现自定义引导功能,支持最多3个BMPS引脚和8种引导模式。

具体过程:若Z1-OTP-BOOTPIN-CONFIG.Key=0x5A,则进入自定义引导模式,

芯片根据Z1-OTP-BOOTPIN-CONFIG.BMPSx设定的BMPS引脚及其电平状态,判断要执行的引导模式(对应的引导模式通过Z1-OTP-BOOTDEF.BOOTDEFx进行设置)。否则,芯片将根据GPIO24和GPIO32的电平状态选择默认的引导模式。

(2) 若芯片没有连接仿真器,则进入仿真调试的引导模式,通过读取EMU-BOOTPIN-CONFIG和EMU_BOOTDEF的值,从而执行特定的引导模式。值得注意的是,上述的自定义模式配置在OTP中的修改是一次性的,无法再次擦写。因此,系统提供了EMU-BOOTPIN-CONFIG和EMU_BOOTDEF用于仿真模拟自定义的引导过程,用于真正修改DCSM OTP之前的参考。

具体过程:若EMU-BOOTPIN-CONFIG.Key=0x5A,则选择自定义模式进行引导过程,芯片根据EMU-BOOTPIN-CONFIG.BMPSx设定的BMPS引脚及其电平状态,判断要执行的引导模式。值得注意的是,若EMU-BOOTPIN-CONFIG.Key=0xA5,则意味着芯片可在仿真器连接的情况下,进入脱机运行模式下对应的引导过程,即根据Z1-OTP-BOOTPIN-CONFIG和Z1-OTP-BOOTDEF对应的值进行引导;该模式与F2803x在连接仿真器时将EMU_BMODE配置成GetMode()原理一致。而如果EMU-BOOTPIN-CONFIG.Key的值没有正确配置,芯片将进入Wait Boot 模式,会处于循环等待状态而无法完成引导过程。

若芯片顺利完成引导模式,芯片会通过外设进行加载程序,或者直接跳转至引导模式对应的程序入口地址开始运行应用程序,即main()。比如,如果是boot to Flash,则跳转至地址0x80000(此时需在CMD文件中配置“codestart” section链接至对应的Flash 空间地址)。

基于以上关于F28004x芯片引导流程的介绍,再回头分析下芯片在连接仿真器进行调试时的复位问题。以C2000ware提供的LED程序为例,(C:\ti\c2000\C2000Ware_DigitalPower_SDK_1_02_00_00\c2000ware\device_support\f28004x\examples\led ),烧写程序。根据表 2给出的Boot ROM 寄存器地址,可通过在Memory Browser 窗口查看EMU_BOOTPIN_CONFIG.Key值(高8位),结果如图 3所示,即由于EMU-BOOTPIN-CONFIG.Key = 0xEE, 因此芯片将进入Wait Boot 模式,如果进行reset后直接运行,通过反汇编Disassembly 窗口可知程序停在了0x3FB02A,处于ESTOP0循环等待状态,正是在Wait Boot 的运行地址范围内(0x3FAD74 – 0x3FB0CD),如图 4所示。

因此,如果要实现复位后点resume直接运行,解决方法就是要正确配置仿真状态下的引导模式。以boot to flash 为例(F28004x TRM手册中的4.3.3.1), 有以下两种思路:

1) 在EMU_BOOTPIN_CONFIG地址写入0x5AFFFFFF,同时在EMU_BOOTDEF_LOW地址对应的低8位写入0x03(BOOTDEF.BOOTDEF0=0x03)

2) 如果芯片在单机时可正常运行,例如GPIO24和GPIO32电平都为高(默认进入boot to flash),则在EMU_BOOTPIN_CONFIG地址0xD00写入0xA5FFFFFF即可。

最后,对比下老版本的F28035芯片的引导过程。如图 5所示,可知该芯片已默认配置成GET_BOOT模式(EMU_BMODE= 0x0003),进一步去判断OTP_KEY的值,该值不等于0x55AA,因此引导模式为boot to flash,经验证,芯片可顺利完成引导程序,从而执行应用程序。


审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式处理
    +关注

    关注

    0

    文章

    341

    浏览量

    10450
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CPU的几种复位方式适合哪些场景?

    1、上电复位 适用场景:系统首次上电或电源以外断电重新上电时; 2、看门狗复位 适用场景:虚脱程序运行异常,如陷入死循环或长时间无响应时
    发表于 11-27 07:56

    解决程序无法下载问题

    一、队伍介绍 本篇为蜂鸟E203系列分享第二篇,本篇介绍的内容是解决程序无法下载问题。 二、问题提出 下载完NICE_demo运行程序无法
    发表于 10-30 07:35

    下载程序2个串口都会打印RT-LOGO,为什么?

    遇到个奇怪的问题 stm32f405板子有两个串口,串口3和串口5, 串口5用于调试,串口3用于和电脑通信。 用MDK下载程序,设置成下载复位
    发表于 09-28 15:16

    按下复位键RTT程序死机正常吗?

    裸机程序都是按下复位键从头运行的,RTT按下复位键不运行属于正常吗? 今天使用野火的板子调试程序
    发表于 09-24 06:38

    如何解决开发机器学习程序时Keil项目只能在调试模式下运行,但无法正常执行的问题?

    如何解决开发机器学习程序时Keil项目只能在调试模式下运行,但无法正常执行的问题
    发表于 08-28 07:28

    tc275调试引导程序无法写入是怎么回事?

    tc275调试引导程序,一步一步操作,可以写入闪存,结果是可以的,但是运行应用程序,擦除可以,但无法
    发表于 07-28 07:39

    重新配置SCB->VTOR = 0x08010000,再次复位程序异常的原因?

    (); MX_CRC_Init(); EEPROMInit(0); } 做如上配置,每次烧录的第一次运行都是正常的,在cubeide中点击复位
    发表于 07-22 06:56

    STM32H745XIH6不能进行双核调试,CM4不能进行在线调试怎么解决?

    CM4 debug设置;CM4 debug设置完成,CM7 debug的调试器,会自动调整 ULINK2/ ME cortex Debugger,设置失败。CM4下载程序成功,但是不能进行
    发表于 06-09 06:58

    为什么无法运行程序“make”(在目录“C:\\?

    FX2LP Build,得到了 14:26:46 **** 为项目 Fx2Test 构建配置调试 **** 全部制作 无法运行程序“make”(在目录“C
    发表于 05-15 08:26

    FPGA的Jtag接口烧了,怎么办

    在展开今天的文章前,先来讨论一个问题:FPGA的jtag接口烧了怎么办?JTAG接口的输入引脚通常设计为高阻抗,这使得它们对静电电荷积累非常敏感,由于JTAG接口需要频繁连接调试器、下载线缆等外
    的头像 发表于 04-27 11:01 2119次阅读
    FPGA的Jtag接口烧了,<b class='flag-5'>怎么办</b>?

    雅特力AT32F402/F405入门使用指南

    搭建AT32开发环境一、调试工具及开发板目前AT32F402/AT32F405开发板都自带AT-Link-EZ调试工具,AT-Link-EZ如下图左边红框所示,它也可拆开
    的头像 发表于 03-28 18:59 2245次阅读
    雅特力AT32<b class='flag-5'>F</b>402/<b class='flag-5'>F</b>405入门使用指南

    STM32F407嵌入式SRAM映射为0x20020000,为什么?

    本人在做F407的IAP功能时,首先调用了以前在F103上面的跳转代码,并根据网上资料写出了在F407芯片下运行的IAP跳转代码。然后就出现问题了,发送跳转函数不执行,
    发表于 03-10 08:24

    GD-LINK无法在KEIL上调试怎么解决?

    芯片:GD32F303RCT6 调试器:GD-LINK 调试软件:KEIL V5 (5.29) 问题:开始调试
    发表于 02-27 08:24

    技术资料#TMS320F280049 具有 100 MHz、FPU、TMU、256 KB 闪存、CLA、PGA 和 SDFM 的 C2000™ 32 位 MCU

    。 TMS320F28004xF28004x) 是一款功能强大的 32 位浮点微控制器单元 (MCU),可让设计人员将关键的控制外设、差分模拟和非易失性存储器集成到单个器件上。
    的头像 发表于 02-26 10:14 2859次阅读
    技术资料#TMS320<b class='flag-5'>F</b>280049 具有 100 MHz、FPU、TMU、256 KB 闪存、CLA、PGA 和 SDFM 的 C2000™ 32 位 MCU

    开关电源漏电怎么办?开关电源漏电流标准是什么?

    在现在水电工程中,开关电源是必不可少的家居用品,开关电源漏电怎么办,市面上开关电源产品还是不少的,功能很多,品牌也不少,所以,选择的时候也需要特别注意。好的品牌就会避免漏电的情况出现,开关电源漏电
    发表于 01-09 13:59