This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28035: 28035基于can在线升级后,APP程序运行错误

Part Number: TMS320F28035

通过仿真器下载BootLoader和APP程序之后,APP程序能正常运行(两路PWM输出,设置相同的占空比,两路PWM输出占空比相同),此时程序没有经过BootLoader,但是重启之后,程序由BootLoader跳转到APP之后,在测试APP程序,发现pwm输出不正确(发现两路PWM输出占空比不同),多次测试出现现象相同

  • 不明白为啥经过BootLoader跳转到APP之后会影响APP程序的运行,直接启动APP程序不受影响

  •  APP收到升级指令之后,则是启动看门狗复位

  • BootLoader的CMD配置

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    MEMORY
    {
    PAGE 0: /* Program Memory */
    RAML00 : origin = 0x008000, length = 0x000100 /* on-chip RAM block L2 */
    OTP : origin = 0x3D7800, length = 0x000400 /* on-chip OTP */
    BOOT_CODE : origin = 0x3F4000, length = 0x003F80 /* on-chip FLASH */
    CSM_RSVD : origin = 0x3F7F80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
    BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
    CSM_PWL_P0 : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
    IQTABLES : origin = 0x3FE000, length = 0x000B50 /* IQ Math Tables in Boot ROM */
    IQTABLES2 : origin = 0x3FEB50, length = 0x00008C /* IQ Math Tables in Boot ROM */
    IQTABLES3 : origin = 0x3FEBDC, length = 0x0000AA /* IQ Math Tables in Boot ROM */
    ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
    RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */
    VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */
    PAGE 1 : /* Data Memory */ */
    BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • APP的CMD配置

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    _Cla1Prog_Start = _Cla1funcsRunStart;
    -heap 0x200
    -stack 0x400
    CLA_SCRATCHPAD_SIZE = 0x100;
    --undef_sym=__cla_scratchpad_end
    --undef_sym=__cla_scratchpad_start
    MEMORY
    {
    PAGE 0: /* Program Memory */
    RAML00 : origin = 0x008000, length = 0x000100 /* on-chip RAM block L0 */
    RAML2 : origin = 0x008C00, length = 0x000400 /* on-chip RAM block L2 */
    RAML3 : origin = 0x009000, length = 0x000400 /* on-chip RAM block L3 */
    OTP : origin = 0x3D7800, length = 0x000400 /* on-chip OTP */
    APP_INFO_ADDR :origin = 0x3EE000, length = 0x000006
    APP_BEGIN : origin = 0x3EE006, length = 0x000002
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 有谁帮忙看一下吗

  • 发现pwm输出不正确(发现两路PWM输出占空比不同)

    能不能上传一下PWM的波形?占空比不同会相差多少?相差的值固定吗?

  • 其中一路波形固定的占空比接近100%,不受设置的占空比控制,另一路PWM正确的,会受到设置的占空比控制

  • 我设置两路了PWM相同的占空比,上位机读取出来的占空比也是相同的,示波器测量发现波形不对

  • 方便使用调试器在不加载代码的情况下,在复位后看一下相关寄存器的变化情况吗?

  • 你好,想问一下使用调试器在不加载代码怎么弄,没试过

  • 在(1)处调用跳转程序就正常了,在IsNeedUpdata函数内部(2)处调用PWM占空比就不正常

  • (1)到(2)之间初始化了InitFlash和MemCopy,会是这个影响了吗

  • 更改debug选项,把load program改为load symbol only

  • 这个是正确的波形,直接从BootLoader程序跳转到app

  • 这是错误的波形,右边是启动时的EPWM1、EPWM2、EPWM3、EPWM4寄存器的变化情况

  • 好的,我看一下

  • 这个是正确的波形,直接从BootLoader程序跳转到app

    你之前说的是不经过bootloader时波形是正常的,而从bootloader跳到APP的时候波形是不正常的。这里再确认一下;

    这是错误的波形,右边是启动时的EPWM1、EPWM2、EPWM3、EPWM4寄存器的变化情况

    示波器上的波形对应的分别是哪两路信号?