TI中文支持网
TI专业的中文技术问题搜集分享网站

flash 的cmd中密码区相关问题

TI工程师,你们好!我下面有三个flash的cmd相关问题:

1、flash cmd文件中的CSM_RSVD 部分和CSM_PWL部分是固定在flash区间上的吗?

2、这两部分能不能修改到其它扇区?(TI提供的都是在FLASHA中)

3、修改后有可能会导致哪些问题?

谢谢!

10#:

不可以,密码是有固定的位置,必须映射到指定的密码区域。

修改的结果就是相当于你在其它地方只是写入了一些数据(值就等于你设定的密码),并没有任何影响,但是由于密码区相当于没有数据,芯片就不会被加密,无法被保护。

TI工程师,你们好!我下面有三个flash的cmd相关问题:

1、flash cmd文件中的CSM_RSVD 部分和CSM_PWL部分是固定在flash区间上的吗?

2、这两部分能不能修改到其它扇区?(TI提供的都是在FLASHA中)

3、修改后有可能会导致哪些问题?

谢谢!

user4762646:

回复 10#:

您好!我目前在调试F2810的板子,不小心把密码区改了,原版如下:

MEMORY{PAGE 0: /* Program Memory */ /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */

RAML0 : origin = 0x008000, length = 0x001000 /* on-chip RAM block L0 */ RAML1 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L1 */ OTP : origin = 0x3D7800, length = 0x000800 /* on-chip OTP */ FLASHJ : origin = 0x3D8000, length = 0x002000 /* on-chip FLASH */ FLASHI : origin = 0x3DA000, length = 0x002000 /* on-chip FLASH */ FLASHH : origin = 0x3DC000, length = 0x004000 /* on-chip FLASH */ FLASHG : origin = 0x3E0000, length = 0x004000 /* on-chip FLASH */ FLASHF : origin = 0x3E4000, length = 0x004000 /* on-chip FLASH */ FLASHE : origin = 0x3E8000, length = 0x004000 /* on-chip FLASH */ FLASHD : origin = 0x3EC000, length = 0x004000 /* on-chip FLASH */ FLASHC : origin = 0x3F0000, length = 0x004000 /* on-chip FLASH */ FLASHB : origin = 0x3F4000, length = 0x002000 /* on-chip FLASH */ FLASHA : origin = 0x3F6000, length = 0x001F80 /* 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 : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA *//* ZONE7 : origin = 0x3FC000, length = 0x003FC0 /* XINTF zone 7 available if MP/MCn=1 */ ROM : origin = 0x3FF000, length = 0x000FC0 /* Boot ROM available if MP/MCn=0 */ RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */ VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */

PAGE 1 : /* Data Memory */ /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */ /* Registers remain on PAGE1 */

RAMM0 : origin = 0x000000, length = 0x000400 /* on-chip RAM block M0 */ RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ RAMH0 : origin = 0x3F8000, length = 0x002000 /* on-chip RAM block H0 */}

/* Allocate sections to memory blocks. Note: codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code execution when booting to flash ramfuncs user defined section to store functions that will be copied from Flash into RAM*/ SECTIONS{

/* The Flash API functions can be grouped together as shown below. The defined symbols _Flash28_API_LoadStart, _Flash28_API_LoadEnd and _Flash28_API_RunStart are used to copy the API functions out of flash memory and into SARAM */ Flash28_API: { -lFlash2810_API_V210.lib(.econst) -lFlash2810_API_V210.lib(.text) } LOAD = FLASHD, RUN = RAML0, LOAD_START(_Flash28_API_LoadStart), LOAD_END(_Flash28_API_LoadEnd), RUN_START(_Flash28_API_RunStart), PAGE = 0 /* Allocate program areas: */ .cinit : > FLASHA PAGE = 0 .pinit : > FLASHA, PAGE = 0 .text : > FLASHA PAGE = 0 /* User Defined Sections */ codestart : > BEGIN PAGE = 0 ramfuncs : LOAD = FLASHD, RUN = RAML0, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0

csmpasswds : > CSM_PWL PAGE = 0 csm_rsvd : > CSM_RSVD PAGE = 0 /* Allocate uninitalized data sections: */ .stack : > RAMM0 PAGE = 1 .ebss : > RAMH0 PAGE = 1 .esysmem : > RAMH0 PAGE = 1

/* Initalized sections go in Flash */ /* Needs to be on page 0 for SDFlash to program it */ .econst : > FLASHA PAGE = 0 .switch : > FLASHA PAGE = 0

/* Allocate IQ math areas: */ IQmath : > FLASHC PAGE = 0 /* Math Code */ IQmathTables : > ROM PAGE = 0, TYPE = NOLOAD /* Math Tables In ROM */

/* .reset is a standard section used by the compiler. It contains the */ /* the address of the start of _c_int00 for C Code. /* /* When using the boot ROM this section and the CPU vector */ /* table is not needed. Thus the default type is set here to */ /* DSECT */ .reset : > RESET, PAGE = 0, TYPE = DSECT vectors : > VECTORS PAGE = 0, TYPE = DSECT

}

改后如下:

MEMORY{PAGE 0: /* Program Memory */ /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */

RAML0 : origin = 0x008000, length = 0x001000 /* on-chip RAM block L0 */ RAML1 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L1 */ OTP : origin = 0x3D7800, length = 0x000800 /* on-chip OTP */ FLASHJ : origin = 0x3D8000, length = 0x002000 /* on-chip FLASH */ FLASHI : origin = 0x3DA000, length = 0x002000 /* on-chip FLASH */ FLASHH : origin = 0x3DC000, length = 0x004000 /* on-chip FLASH */ FLASHG : origin = 0x3E0000, length = 0x004000 /* on-chip FLASH */ FLASHF : origin = 0x3E4000, length = 0x004000 /* on-chip FLASH */ FLASHE : origin = 0x3E8000, length = 0x003F80 /* on-chip FLASH */ FLASHD : origin = 0x3EC000, length = 0x004000 /* on-chip FLASH */ FLASHC : origin = 0x3F0000, length = 0x004000 /* on-chip FLASH */ FLASHB : origin = 0x3F4000, length = 0x002000 /* on-chip FLASH */ FLASHA : origin = 0x3F6000, length = 0x001F80 /* on-chip FLASH */ CSM_RSVD : origin = 0x3EBF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ BEGIN : origin = 0x3EBFF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */ CSM_PWL : origin = 0x3EBFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA *//* ZONE7 : origin = 0x3FC000, length = 0x003FC0 /* XINTF zone 7 available if MP/MCn=1 */ ROM : origin = 0x3FF000, length = 0x000FC0 /* Boot ROM available if MP/MCn=0 */ RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */ VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */

PAGE 1 : /* Data Memory */ /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */ /* Registers remain on PAGE1 */

RAMM0 : origin = 0x000000, length = 0x000400 /* on-chip RAM block M0 */ RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ RAMH0 : origin = 0x3F8000, length = 0x002000 /* on-chip RAM block H0 */}

/* Allocate sections to memory blocks. Note: codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code execution when booting to flash ramfuncs user defined section to store functions that will be copied from Flash into RAM*/ SECTIONS{

/* The Flash API functions can be grouped together as shown below. The defined symbols _Flash28_API_LoadStart, _Flash28_API_LoadEnd and _Flash28_API_RunStart are used to copy the API functions out of flash memory and into SARAM */ Flash28_API: { -lFlash2810_API_V210.lib(.econst) -lFlash2810_API_V210.lib(.text) } LOAD = FLASHE, RUN = RAML0, LOAD_START(_Flash28_API_LoadStart), LOAD_END(_Flash28_API_LoadEnd), RUN_START(_Flash28_API_RunStart), PAGE = 0 /* Allocate program areas: */ .cinit : > FLASHE PAGE = 0 .pinit : > FLASHE, PAGE = 0 .text : > FLASHE PAGE = 0 /* User Defined Sections */ codestart : > BEGIN PAGE = 0 ramfuncs : LOAD = FLASHE, RUN = RAML0, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0

csmpasswds : > CSM_PWL PAGE = 0 csm_rsvd : > CSM_RSVD PAGE = 0 /* Allocate uninitalized data sections: */ .stack : > RAMM0 PAGE = 1 .ebss : > RAMH0 PAGE = 1 .esysmem : > RAMH0 PAGE = 1

/* Initalized sections go in Flash */ /* Needs to be on page 0 for SDFlash to program it */ .econst : > FLASHE PAGE = 0 .switch : > FLASHE PAGE = 0

/* Allocate IQ math areas: */ IQmath : > FLASHE PAGE = 0 /* Math Code */ IQmathTables : > ROM PAGE = 0, TYPE = NOLOAD /* Math Tables In ROM */

/* .reset is a standard section used by the compiler. It contains the */ /* the address of the start of _c_int00 for C Code. /* /* When using the boot ROM this section and the CPU vector */ /* table is not needed. Thus the default type is set here to */ /* DSECT */ .reset : > RESET, PAGE = 0, TYPE = DSECT vectors : > VECTORS PAGE = 0, TYPE = DSECT

}

(现在在做bootloader  想把bootloader只放进E扇区,上面的阴影部分是我改动的部分)

之后我刷程序,第一次成功之后,再刷时候一直刷不进去,报如下的错误:

C28xx: Flash Programmer: Error encountered when writing to flash memoryC28xx: GEL: File: C:\Users\Administrator.USER-20161128MX\Desktop\tidcs\c28\DSP281x\v120\DSP281x_examples_ccsv4\ecan_back2back\Debug\Example_281xECanBack2Back.out: Load failed.

这种情况是不是把芯片锁了?有没有解决的办法呢?

谢谢!

TI工程师,你们好!我下面有三个flash的cmd相关问题:

1、flash cmd文件中的CSM_RSVD 部分和CSM_PWL部分是固定在flash区间上的吗?

2、这两部分能不能修改到其它扇区?(TI提供的都是在FLASHA中)

3、修改后有可能会导致哪些问题?

谢谢!

10#:

回复 user4762646:

下次在帖子正文里,建议不要这样贴长篇的代码,可以保存为文件后进行上传为附件。

你的问题跟密码或加密没有关系,但是你的思路本身是不可实现的,bootloader只能放在A区,也就是0x3F 6000开始的地址,因为芯片上电后,boot到flash的情况下程序只会从0x3F 7FF6和0x3F 7FF7的地址开始运行,而不是用户可以任意指定的。这样如果你的bootloader不放在这个区,它本身就无法运行,更不用提后面判断并选择到底是直接在flash上运行还是进行程序的升级。请参考数据手册的地址分配情况如下:

TI工程师,你们好!我下面有三个flash的cmd相关问题:

1、flash cmd文件中的CSM_RSVD 部分和CSM_PWL部分是固定在flash区间上的吗?

2、这两部分能不能修改到其它扇区?(TI提供的都是在FLASHA中)

3、修改后有可能会导致哪些问题?

谢谢!

user4762646:

回复 10#:

好的,谢谢您的回答!我现在就是烧官网上例程也烧不进去,报的错误就是:

C28xx: Flash Programmer: Error encountered when writing to flash memoryC28xx: GEL: File: C:\Users\Administrator.USER-20161128MX\Desktop\tidcs\c28\DSP281x\v120\DSP281x_examples_ccsv4\ecan_back2back\Debug\Example_281xECanBack2Back.out: Load failed.

没改cmd文件之前一直没事,这种情况是不是芯片锁住了,有什么解决办法吗?

非常感谢!

TI工程师,你们好!我下面有三个flash的cmd相关问题:

1、flash cmd文件中的CSM_RSVD 部分和CSM_PWL部分是固定在flash区间上的吗?

2、这两部分能不能修改到其它扇区?(TI提供的都是在FLASHA中)

3、修改后有可能会导致哪些问题?

谢谢!

10#:

回复 user4762646:

那你可以不烧录程序,而仅先连接仿真器吗?

如果可以,请查看一下flash能否被擦除,或者根据.cmd文件查看一下密码区是否有数据,如果看到的全是0,包括整个flash,那么就是被加密了,你可以先解密芯片后再操作。相信你是有密码的,所以可以通过on-chip flash programmer完成。如果不是为0,那说明芯片没有被加密,程序不能被烧录是其它原因。

TI工程师,你们好!我下面有三个flash的cmd相关问题:

1、flash cmd文件中的CSM_RSVD 部分和CSM_PWL部分是固定在flash区间上的吗?

2、这两部分能不能修改到其它扇区?(TI提供的都是在FLASHA中)

3、修改后有可能会导致哪些问题?

谢谢!

user4762646:

回复 10#:

是可以正常连上仿真器的,但是不能擦除flash。

怎么通过cmd文件查看密码区的数据呢?

谢谢!

TI工程师,你们好!我下面有三个flash的cmd相关问题:

1、flash cmd文件中的CSM_RSVD 部分和CSM_PWL部分是固定在flash区间上的吗?

2、这两部分能不能修改到其它扇区?(TI提供的都是在FLASHA中)

3、修改后有可能会导致哪些问题?

谢谢!

user4762646:

回复 10#:

我查看修改cmd文件后的那个工程.out转换的hex文件,发现没有对FLASHA的密码区进行操作,而是在我修改的密码区地址中有全为F的值。

TI工程师,你们好!我下面有三个flash的cmd相关问题:

1、flash cmd文件中的CSM_RSVD 部分和CSM_PWL部分是固定在flash区间上的吗?

2、这两部分能不能修改到其它扇区?(TI提供的都是在FLASHA中)

3、修改后有可能会导致哪些问题?

谢谢!

10#:

回复 user4762646:

查看地址0x3F 7FF8到0x3F 7FFF的区间内,是否为全0xFFFF,是就说明没有加密,全0x0000表示加密。

如果没有加密,你可以试试单独擦除是否成功,如果不成功,会报什么错错误,根据提示去分析问题。

TI工程师,你们好!我下面有三个flash的cmd相关问题:

1、flash cmd文件中的CSM_RSVD 部分和CSM_PWL部分是固定在flash区间上的吗?

2、这两部分能不能修改到其它扇区?(TI提供的都是在FLASHA中)

3、修改后有可能会导致哪些问题?

谢谢!

user4762646:

回复 10#:

   您好!顺便问一下如果我把bootloader放入A扇区,应用程序想放入D扇区,请问应用程序的cmd文件应该怎么修改呢?

因为在cmd文件中CSM_RSVD、BEGIN 、CSM_PWL这三个储存空间总是连续的,并且BEGIN总是夹在另外两个中间,cmd还要求空间必须连续,要改BEGIN必须会改另外两个区间,而另外两个的空间又必须在FLASHA中,也就是说BEGIN也必须在FLASHA中,。这样就矛盾了,该怎么改呢?谢谢您!

赞(0)
未经允许不得转载:TI中文支持网 » flash 的cmd中密码区相关问题
分享到: 更多 (0)