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.

TMS320F28027: 通过UniFlash或C2Prog烧录加密过的程序,程序不运行

Part Number: TMS320F28027
Other Parts Discussed in Thread: UNIFLASH, C2000WARE, MOTORWARE

问题:用CCS11.1.0通过添加 CSMPasswords.asm文件的方式对程序进行加密,

1.加密后的程序,用CCS第一次烧录,一切正常,可以正常运行。然后第二次再烧同样的加密程序,烧录不进。报错

2.用UniFlash或C2Prog烧录未加密的程序,一切正常。烧录加密后的.out文件,烧录过程没有报错,但程序不运行。

请问是怎么回事?

我希望能够用UniFlash或C2Prog烧录加密后的程序并正常运行,而且能够反复烧录未改密码的程序,CCS也是一样能够反复烧录未改密码的程序,希望能帮我解决,谢谢

  • 1、第一次烧写成功后芯片就处于加密状态,此时如果要再次烧写,那要先对芯片解密后才能连接和烧写。

    2、这个要看你烧写的程序是烧写到ram了还是flash了?可以根据你的cmd文件判断,cmd文件中带ram字样,那程序是烧写到ram,掉电后就丢失了。反之flash字样的是可以离线运行的。

    建议你可以使用例程测试导致的无法烧写/运行,一方面GPIO的运行也方便测试:C:\ti\c2000\C2000Ware_4_01_00_00\device_support\f2802x\examples\drivers\gpio_toggle

    烧写之前编译的时候,点击编译摁扭旁边的倒三角,选择“flash”编译,烧写的时候就会烧写进flash。

  • 我的CMD文件是F28027F.cmd应该是烧写进flash了,因为不带密码的程序,烧写进去,掉电是能运行的

  • 你好,现在是不加密的程序烧写进芯片可以运行了?只有加密之后的程序无法运行?

    是同一个程序吗,如果是同一个程序那如果正确加密的话是不影响运行的。如果不是同一个的话可能跟程序里的某些设置有关,比如有些程序(delay_us函数)的使用需要调用memcpy函数。

  • 是同一个程序,是通过添加CSMPasswords.asm文件的方式对程序进行加密的,enableCSM .set 0 ;0-disable CSM, 1-enable CSM

    使能加密,用UniFlash或C2Prog烧录进去不能运行,但用CCS烧录能运行。禁能加密,用UniFlash或C2Prog烧录进去就能运行

  • 确实没测试过用Uniflash或C2Prog烧写加密的程序,但是至少用CCS生成的.out在CCS中和在unilfash中烧写应该是效果一样的。

    如果用uniflash烧写未加密工程,然后再在uniflash的OTP中修改密码进行加密后程序是否能正常运行?

  • 你是说通过点击uniflash中的这两个按键进行加密吗,我试了,先下载没加密的程序,然后点击这两个按键进行加密。也是不能运行。

  • Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /*
    // TI File $Revision: /main/7 $
    // Checkin $Date: July 6, 2009 17:25:36 $
    //###########################################################################
    //
    // FILE: F28027.cmd
    //
    // TITLE: Linker Command File For F28027 Device
    //
    //###########################################################################
    // $TI Release: 2802x C/C++ Header Files and Peripheral Examples V1.29 $
    // $Release Date: January 11, 2011 $
    //###########################################################################
    */
    /* ======================================================
    // For Code Composer Studio V2.2 and later
    // ---------------------------------------
    // In addition to this memory linker command file,
    // add the header linker command file directly to the project.
    // The header linker command file is required to link the
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    这个问题不知道和CMD文件有关系没,我的工程是基于C:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_foc\boards\boostxldrv8305_revA\f28x\f2802xF\projects\ccs\proj_lab11a建立的,CMD文件是F28027F.cmd。上面是cmd中的内容

  • 我也有考虑cmd文件的问题,但是你说到工程使用CCS烧写是可以正确加密和运行的,所以就把这个问题否了。

    你可以再试试使用lab11a的原始cmd文件,然后在cmd文件中修改csm相关的语句,在cmd中加入这些语句:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    MEMORY
    {
    CSM_RSVD : origin = 0x3F7F80, length = 0x000076
    CSM_PWL : origin = 0x3F7FF8, length = 0x000008
    }
    SECTIONS
    {
    csmpasswds : > CSM_PWL PAGE = 0
    csm_rsvd : > CSM_RSVD PAGE = 0
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    另外,

    你是说通过点击uniflash中的这两个按键进行加密吗,我试了,先下载没加密的程序,然后点击这两个按键进行加密。也是不能运行。

    进行这些操作的时候有没有将工程恢复到没有添加csm的情况?

  • 试了,不行

  • 这恐怕要麻烦你前往英文E2E论坛咨询一下这个情况了:e2e.ti.com/.../c2000-microcontrollers-forum