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

    浏览量

    10143
收藏 人收藏

    评论

    相关推荐

    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 1022次阅读
    技术资料#TMS320<b class='flag-5'>F</b>280049 具有 100 MHz、FPU、TMU、256 KB 闪存、CLA、PGA 和 SDFM 的 C2000™ 32 位 MCU

    TMS320F28004x实时微控制器技术参考手册

    电子发烧友网站提供《TMS320F28004x实时微控制器技术参考手册.pdf》资料免费下载
    发表于 11-08 09:13 35次下载
    TMS320<b class='flag-5'>F28004x</b>实时微控制器技术参考手册

    电机控制系统绝对值编码器正交分频输出Abs2QEP PTO基于F28004x的软件实现

    电子发烧友网站提供《电机控制系统绝对值编码器正交分频输出Abs2QEP PTO基于F28004x的软件实现.pdf》资料免费下载
    发表于 10-31 10:28 0次下载

    TMS320F28004x实时微控制器

    电子发烧友网站提供《TMS320F28004x实时微控制器.pdf》资料免费下载
    发表于 10-31 10:26 0次下载

    TAS5751M PurePathTM软件无法使用怎么办呢?

    有位客户说登录了myTI账号也无法使用,如下图,请问怎么办呢?
    发表于 10-18 07:19

    C2000 F28004x系列MCU PLL锁相失败问题解决方案

    电子发烧友网站提供《C2000 F28004x系列MCU PLL锁相失败问题解决方案.pdf》资料免费下载
    发表于 09-27 11:24 0次下载
    C2000 <b class='flag-5'>F28004x</b>系列MCU PLL锁相失败问题解决方案

    电机控制系统绝对值编码器正交分频输出Abs2QEP PTO(Pulse Train Output)基于F28004x的软件实现

    电子发烧友网站提供《电机控制系统绝对值编码器正交分频输出Abs2QEP PTO(Pulse Train Output)基于F28004x的软件实现.pdf》资料免费下载
    发表于 09-27 10:15 0次下载
    电机控制系统绝对值编码器正交分频输出Abs2QEP PTO(Pulse Train Output)基于<b class='flag-5'>F28004x</b>的软件实现

    ddos造成服务器瘫痪怎么办

    在服务器遭受DDoS攻击,应立即采取相应措施,包括加强服务器安全、使用CDN和DDoS防御服务来减轻攻击的影响。rak小编为您整理发布ddos造成服务器瘫痪怎么办
    的头像 发表于 08-15 10:08 387次阅读

    TMS320F28004x实时微控制器数据表

    电子发烧友网站提供《TMS320F28004x实时微控制器数据表.pdf》资料免费下载
    发表于 08-01 14:08 0次下载
    TMS320<b class='flag-5'>F28004x</b>实时微控制器数据表

    STM32F429的discovery不能在线调试,只能下载运行是什么原因?

    f429的discovery不能在线调试,只能下载运行,不知什么原因
    发表于 05-14 08:12

    STM32F1 IAP操作读保护选项字节设置,APP使用系统复位跳转无法运行IAP的原因?

    读保护。我现在有一个问题,APP使用系统复位跳转无法运行IAP,需要断一次电才行,IAP升级结束也是一样跳转不出IAP,需要断电
    发表于 05-13 08:09

    stm32cubeMx 2.6 import一个工程无法保存是为什么?

    如题, 新建一个stm32f103cbtx 项目,import 一个stm32f103rctx 项目无法保存, 为啥 ? 怎么办
    发表于 04-28 07:30

    STM32F103RE只有挂调试器IAP程序才能正常跳转吗?

    电差别就在于前者是软复位的,而后者是外部复位),但是若将应用程序直接烧录到0x08000000并且不设置中断向量表偏移,应用程序可以正常
    发表于 04-25 07:03

    STM32F051使用J-flash烧录完固件文件,按键复位(NRST脚)程序总是卡在Delay()的原因?

    我使用的是STM32F051,使用J-flash烧录完固件文件,按键复位(NRST脚)程序总是卡在Delay(),
    发表于 04-07 07:03