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

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

3天内不再提示

F28004x在线调试复位后程序无法运行问题分析

星星科技指导员 来源:TI 作者:Aki Li, Ricky Zhang 2023-03-31 10:37 次阅读

问题描述: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) 若芯片没有连接仿真器,系统进入脱机模式的引导过程。F28004x在出厂时默认通过引导模式选择引脚(Boot Mode Select Pin, BMPS) GPIO24和GPIO32的电平状态组合选择不同的引导模式。但与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:tic2000C2000Ware_DigitalPower_SDK_1_02_00_00c2000waredevice_supportf28004xexamplesled ),烧写程序。根据表 2给出的Boot ROM 寄存器地址,可通过在Memory Browser 窗口查看EMU_BOOTPIN_CONFIG.Key值(高8位),即由于EMU-BOOTPIN-CONFIG.Key = 0xEE, 因此芯片将进入Wait Boot 模式,如果进行reset后直接运行,通过反汇编Disassembly 窗口可知程序停在了0x3FB02A,处于ESTOP0循环等待状态,正是在Wait Boot 的运行地址范围内(0x3FAD74 – 0x3FB0CD)。

因此,如果要实现复位后点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芯片的引导过程。可知该芯片已默认配置成GET_BOOT模式(EMU_BMODE= 0x0003),进一步去判断OTP_KEY的值,该值不等于0x55AA,因此引导模式为boot to flash,经验证,芯片可顺利完成引导程序,从而执行应用程序。

审核编辑:郭婷

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

    关注

    457

    文章

    51345

    浏览量

    428277
  • 寄存器
    +关注

    关注

    31

    文章

    5377

    浏览量

    121398
  • 仿真器
    +关注

    关注

    14

    文章

    1019

    浏览量

    83984
收藏 人收藏

    评论

    相关推荐

    基于F28004x的C2000芯片引导过程

    作者:TI 工程师 Aki Li, Ricky Zhang问题描述:F28004x在线调试,如果利用CCS进行reset复位,点击run/
    发表于 03-13 06:45

    TMS320F28004X微控制器的详细英文数据手册详细概述(免费下载)

     PICCOLO TMS320F28004XF28004X)是一种功能强大的32位浮点微控制器单元(MCU),它允许设计者将关键控制外围设备、有区别的模拟和非易失性存储器并入单个设备上。
    发表于 06-01 10:30 29次下载
    TMS320<b class='flag-5'>F28004X</b>微控制器的详细英文数据手册详细概述(免费下载)

    F28004x的整体介绍

    1.1 F28004x功能和性能介绍
    的头像 发表于 08-15 00:17 4203次阅读

    基于F28004x的系统解决方案的优势介绍

    1.2 F28004x在多种应用中的优势
    的头像 发表于 05-06 06:37 2262次阅读
    基于<b class='flag-5'>F28004x</b>的系统解决方案的优势介绍

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

    reset复位,点击run/resume程序将停留在0x3FB02A 而无法继续运行, 而需先
    的头像 发表于 01-13 17:05 2275次阅读

    STM32每次下载正常运行,但是断电或复位程序运行无法正常运行的解决办法

    STM32每次下载程序能正常运行,但是断电或复位程序运行
    发表于 12-08 11:51 28次下载
    STM32每次下载<b class='flag-5'>后</b>正常<b class='flag-5'>运行</b>,但是断电或<b class='flag-5'>复位</b><b class='flag-5'>后</b><b class='flag-5'>程序</b><b class='flag-5'>运行</b>就<b class='flag-5'>无法</b>正常<b class='flag-5'>运行</b>的解决办法

    关于STM32串口烧录程序正常运行,但是掉电或复位程序不正常运行的可能解决方法。

    关于STM32串口烧录程序正常运行,但是掉电或复位程序不正常
    发表于 12-14 18:52 21次下载
    关于STM32串口烧录<b class='flag-5'>后</b><b class='flag-5'>程序</b>正常<b class='flag-5'>运行</b>,但是掉电或<b class='flag-5'>复位</b><b class='flag-5'>后</b><b class='flag-5'>程序</b>不正常<b class='flag-5'>运行</b>的可能解决方法。

    项目笔记: STM32G4 软件复位程序无法运行的原因分析和解决

    1.前言最近在做一个项目,使用STM32G474芯片。程序包含三个APP , 当运行其中1个APP时, 有时候需要软件复位跳转到其它APP。发现调用NVIC_SystemReset() 程序
    发表于 12-14 18:52 10次下载
    项目笔记: STM32G4 软件<b class='flag-5'>复位</b><b class='flag-5'>后</b><b class='flag-5'>程序</b><b class='flag-5'>无法</b><b class='flag-5'>运行</b>的原因<b class='flag-5'>分析</b>和解决

    STM32的电源复位和引脚复位

    的命令(无法驱动4094片子的继电器动作)3、当手动把复位引脚的电平拉低程序便运行正常了调试
    发表于 01-11 14:47 3次下载
    STM32的电源<b class='flag-5'>复位</b>和引脚<b class='flag-5'>复位</b>

    STM32下载无法自动复位,需手动复位 下载程序时,勾选reset and run仍不可自动复位

    项目场景:STM32下载无法自动复位,需手动复位下载程序时,勾选reset and run
    发表于 01-17 12:36 11次下载
    STM32下载<b class='flag-5'>后</b><b class='flag-5'>无法</b>自动<b class='flag-5'>复位</b>,需手动<b class='flag-5'>复位</b> 下载<b class='flag-5'>程序</b>时,勾选reset and run<b class='flag-5'>后</b>仍不可自动<b class='flag-5'>复位</b>

    复位MCU直接调试运行程序

    此时此刻有一种调试需求是朋友们非常想要的:一旦程序出了问题,我只需要插上仿真器,目标硬件不会复位,而是与我当前所调试程序同步,类似于仿真
    的头像 发表于 05-12 15:43 1421次阅读

    APM32F407VGT6_调试问题_使用IAR调试无法运行

    APM32F407VGT6_调试问题_使用IAR调试无法运行
    发表于 11-09 21:04 0次下载
    APM32<b class='flag-5'>F</b>407VGT6_<b class='flag-5'>调试</b>问题_使用IAR<b class='flag-5'>调试</b>时<b class='flag-5'>无法</b><b class='flag-5'>运行</b>

    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>的软件实现

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

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