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.
Dear all:
目前28002X系列的加密和原先的2806X系列芯片的CSM程序加密差距还是挺大的,到目前还不知道如何设置,
程序中添加了两个 f28002x_dcsm_z1otp.asm f28002x_dcsm_z2otp.asm,文件
但是程序中不知道在什么地方设置密码,
还有CMD文件的设置
MEMORY { PAGE 0 : /* Program Memory */ /* BANK0 */ /* B0 Z1 OTP. LinkPointers */ B0_DCSM_OTP_Z1_LINKPOINTER : origin = 0x78000, length = 0x00000C /* B0 Z1 OTP. GPREG1/GPREG2 */ B0_DCSM_OTP_Z1_GPREG : origin = 0x7800C, length = 0x000004 /* B0 Z1 OTP. PSWDLOCK/RESERVED */ B0_DCSM_OTP_Z1_PSWDLOCK : origin = 0x78010, length = 0x000004 /* B0 Z1 OTP. CRCLOCK/RESERVED */ B0_DCSM_OTP_Z1_CRCLOCK : origin = 0x78014, length = 0x000004 /* B0 Z1 OTP. GPREG3/BOOTCTRL */ B0_DCSM_OTP_Z1_BOOTCTRL : origin = 0x7801C, length = 0x000004 /* DCSM Z1 Zone Select Contents (!!Movable!!) */ /* B0 Z1 OTP. Z1 password locations / Flash and RAM partitioning */ B0_DCSM_ZSEL_Z1_P0 : origin = 0x78020, length = 0x000010 /* B0 Z2 OTP. LinkPointers */ B0_DCSM_OTP_Z2_LINKPOINTER : origin = 0x78200, length = 0x00000C /* B0 Z2 OTP. GPREG1/GPREG2 */ B0_DCSM_OTP_Z2_GPREG : origin = 0x7820C, length = 0x000004 /* B0 Z2 OTP. PSWDLOCK/RESERVED */ B0_DCSM_OTP_Z2_PSWDLOCK : origin = 0x78210, length = 0x000004 /* B0 Z2 OTP. CRCLOCK/RESERVED */ B0_DCSM_OTP_Z2_CRCLOCK : origin = 0x78214, length = 0x000004 /* B0 Z2 OTP. GPREG3/BOOTCTRL */ B0_DCSM_OTP_Z2_BOOTCTRL : origin = 0x7821C, length = 0x000004 /* DCSM Z1 Zone Select Contents (!!Movable!!) */ /* B0 Z2 OTP. Z2 password locations / Flash and RAM partitioning */ B0_DCSM_ZSEL_Z2_P0 : origin = 0x78220, length = 0x000010 /* BANK1 */ /* B1 Z1 OTP. LinkPointers */ B1_DCSM_OTP_Z1_LINKPOINTER : origin = 0x78400, length = 0x00000C /* DCSM B1 Z1 Zone Select Contents (!!Movable!!) */ /* B1 Z1 OTP. Flash partitioning */ B1_DCSM_ZSEL_Z1_P0 : origin = 0x78420, length = 0x000010 /* B1 Z2 OTP. LinkPointers */ B1_DCSM_OTP_Z2_LINKPOINTER : origin = 0x78600, length = 0x00000C /* DCSM B1 Z1 Zone Select Contents (!!Movable!!) */ /* B1 Z2 OTP. Flash partitioning */ B1_DCSM_ZSEL_Z2_P0 : origin = 0x78620, length = 0x000010 } SECTIONS { b0_dcsm_otp_z1_linkpointer : > B0_DCSM_OTP_Z1_LINKPOINTER PAGE = 0, type = DSECT b0_dcsm_otp_z1_gpreg : > B0_DCSM_OTP_Z1_GPREG PAGE = 0, type = DSECT b0_dcsm_otp_z1_pswdlock : > B0_DCSM_OTP_Z1_PSWDLOCK PAGE = 0, type = DSECT b0_dcsm_otp_z1_crclock : > B0_DCSM_OTP_Z1_CRCLOCK PAGE = 0, type = DSECT b0_dcsm_otp_z1_bootctrl : > B0_DCSM_OTP_Z1_BOOTCTRL PAGE = 0, type = DSECT b0_dcsm_zsel_z1 : > B0_DCSM_ZSEL_Z1_P0 PAGE = 0, type = DSECT b0_dcsm_otp_z2_linkpointer : > B0_DCSM_OTP_Z2_LINKPOINTER PAGE = 0, type = DSECT b0_dcsm_otp_z2_gpreg : > B0_DCSM_OTP_Z2_GPREG PAGE = 0, type = DSECT b0_dcsm_otp_z2_pswdlock : > B0_DCSM_OTP_Z2_PSWDLOCK PAGE = 0, type = DSECT b0_dcsm_otp_z2_crclock : > B0_DCSM_OTP_Z2_CRCLOCK PAGE = 0, type = DSECT b0_dcsm_otp_z2_bootctrl : > B0_DCSM_OTP_Z2_BOOTCTRL PAGE = 0, type = DSECT b0_dcsm_zsel_z2 : > B0_DCSM_ZSEL_Z2_P0 PAGE = 0, type = DSECT b1_dcsm_otp_z1_linkpointer : > B1_DCSM_OTP_Z1_LINKPOINTER PAGE = 0, type = DSECT b1_dcsm_zsel_z1 : > B1_DCSM_ZSEL_Z1_P0 PAGE = 0, type = DSECT b1_dcsm_otp_z2_linkpointer : > B1_DCSM_OTP_Z2_LINKPOINTER PAGE = 0, type = DSECT b1_dcsm_zsel_z2 : > B1_DCSM_ZSEL_Z2_P0 PAGE = 0, type = DSECT }
CMD文件是否就复制这段代码就可以?
这是第一种直接在程序中加密方式,请帮忙指导?
还有使用C2Prog烧入工具加密,也搞不清楚如何设置?
使用C2Prog 设置密码是否key0 key1 key2 key3 key4 都要设置,设置的是格式是什么(0xFFFFFFF)
这是第二种使用C2prog 加密方式,请帮忙指导?
1、关于DCSM模块可以看一下这个技术文档的说明:https://e2echina.ti.com/blogs_/b/the_process/posts/dcsm?tisearch=e2e-sitesearch&keymatch=%2522DCSM%2522#
2、关于C2Prog,你可以试一下每个Key中输入0xFFFF。
刚使用C2Prog测试了把8个单元密码都设置为0xfff1,用C2Prog烧写程序后,再通过仿真器进行仿真还是能正常仿真,说明加密无效,
这种方式是否是采用原来的那种CSM加密方式一样,CMD文件应该也要修改。目前280023_Flash_lnk.cmd文件里没有相关的CSM存储单元。
最简单的加密方式还是原先采用CSM方式,现在28002X系列是否还有这种方式?
我这边没测试过C2Prog加密DCSM的,说实话论坛最近几年也没碰到多少人用这种方式加密的。但其实用 把加密文件和工程一起烧写进芯片的方式去加密应该也是可以的。
最新的几款芯片都是用的DCSM加密,两者的加密机制有差别,我觉得是不能再使用CSM了
目前正在尝试怎么使用DCSM加密方式,和原来CSM方式比较复杂了很多,你们这边有没实际操作过F280023使用DCSM加密,的经验,
目前我还是有点懵,还没搞明白去配置这些参数,你们能否写一个简单些的操作指南。
一个是上面链接中的FAE分享,一个是你可以对照例程来进行测试学习:
C:\ti\c2000\C2000Ware_4_01_00_00\driverlib\f28002x\examples\dcsm
但都没在C2Prog上测试过。
这个工程我导入看过,在flash模式下,只有syscfg文件里面才有DCSM相关的信息,
正常的28002x_generic_flash_lnk.cmd文件也没DCSM相关的定义,
如果我移植是否只要把dcsm.asm 和dcsm.cmd 文件导入我工程中就可以是否?
你的程序里面现在有两个cmd文件(不包括nonbios那个),所以肯定会报错。把原来的flash的cmd文件exclude from build之后再试试。另外include的路径也要添加好。
使用exclude from build 正常的flash 的CMD文件都屏蔽了,程序都无法正常编译了,能具体告诉我怎么把这个DCSM的CMD文件添加吗?是直接复制到flash的CMD文件里,还是具体怎么操作,毕竟我们只是学会应用就可以,有必要的话我可以把我的工程上传,你们帮我查看操作一下。
直接复制到cmd文件中
上面那个链接里面介绍的很详细了,这是TI官方的FAE自己写的应用经验分享,链接里面除了图片没办法正常显示,其他的都讲的很明确了,认真参考一下:
这个文档我看了几遍了,没有说到,把DCSM的CMD文件怎么和Flash的CMD文件结合,我也试过了把DCSM的CMD文件直接复制到flash中,无法编译通过
MEMORY { PAGE 0 : /* Program Memory */ /* Z1 OTP. LinkPointers */ DCSM_OTP_Z1_LINKPOINTER : origin = 0x78000, length = 0x00000C /* Z1 OTP. GPREG1/GPREG2 */ DCSM_OTP_Z1_GPREG : origin = 0x7800C, length = 0x000004 /* Z1 OTP. PSWDLOCK/RESERVED */ DCSM_OTP_Z1_PSWDLOCK : origin = 0x78010, length = 0x000004 /* Z1 OTP. CRCLOCK/RESERVED */ DCSM_OTP_Z1_CRCLOCK : origin = 0x78014, length = 0x000004 /* Z1 OTP. RESERVED/BOOTCTRL */ DCSM_OTP_Z1_BOOTCTRL : origin = 0x7801C, length = 0x000004 /* DCSM Z1 Zone Select Contents (!!Movable!!) */ /* Z1 OTP. Z1 password locations / Flash and RAM partitioning */ DCSM_ZSEL_Z1_P0 : origin = 0x78020, length = 0x000010 /* Z2 OTP. LinkPointers */ DCSM_OTP_Z2_LINKPOINTER : origin = 0x78200, length = 0x00000C /* Z2 OTP. GPREG1/GPREG2 */ DCSM_OTP_Z2_GPREG : origin = 0x7820C, length = 0x000004 /* Z2 OTP. PSWDLOCK/RESERVED */ DCSM_OTP_Z2_PSWDLOCK : origin = 0x78210, length = 0x000004 /* Z2 OTP. CRCLOCK/RESERVED */ DCSM_OTP_Z2_CRCLOCK : origin = 0x78214, length = 0x000004 /* Z2 OTP. GPREG3/BOOTCTRL */ DCSM_OTP_Z2_BOOTCTRL : origin = 0x7821C, length = 0x000004 /* DCSM Z1 Zone Select Contents (!!Movable!!) */ /* Z2 OTP. Z2 password locations / Flash and RAM partitioning */ DCSM_ZSEL_Z2_P0 : origin = 0x78220, length = 0x000010 BEGIN : origin = 0x080000, length = 0x000002 BOOT_RSVD : origin = 0x00000002, length = 0x00000126 RAMM0 : origin = 0x00000128, length = 0x000002D8 RAMM1 : origin = 0x00000400, length = 0x000003F8 /* on-chip RAM block M1 */ // RAMM1_RSVD : origin = 0x000007F8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */ /* RAMLS4 : origin = 0x0000A000, length = 0x00000800 RAMLS5 : origin = 0x0000A800, length = 0x00000800 RAMLS6 : origin = 0x0000B000, length = 0x00000800 RAMLS7 : origin = 0x0000B800, length = 0x00000800 */ /* Combining all the LS RAMs */ RAMLS4567 : origin = 0x0000A000, length = 0x00002400 RAMGS0 : origin = 0x0000C400, length = 0x000003FC // RAMGS0_RSVD : origin = 0x0000C7F8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */ RESET : origin = 0x003FFFC0, length = 0x00000002 BOOTROM : origin = 0x003F0000, length = 0x00008000 BOOTROM_EXT : origin = 0x003F8000, length = 0x00007FC0 /* Flash sectors */ /* BANK 0 */ // FLASHBANK0 : origin = 0x00080000, length = 0x00007FF0 FLASH_BANK0_SEC0 : origin = 0x080002, length = 0x000FFE /* on-chip Flash */ FLASH_BANK0_SEC1 : origin = 0x081000, length = 0x001000 /* on-chip Flash */ FLASH_BANK0_SEC2 : origin = 0x082000, length = 0x001000 /* on-chip Flash */ FLASH_BANK0_SEC3 : origin = 0x083000, length = 0x001000 /* on-chip Flash */ FLASH_BANK0_SEC4 : origin = 0x084000, length = 0x001000 /* on-chip Flash */ FLASH_BANK0_SEC5 : origin = 0x085000, length = 0x001000 /* on-chip Flash */ FLASH_BANK0_SEC6 : origin = 0x086000, length = 0x001000 /* on-chip Flash */ FLASH_BANK0_SEC7 : origin = 0x087000, length = 0x000FF0 /* on-chip Flash */ // FLASH_BANK0_SEC7_RSVD : origin = 0x087FF0, length = 0x000010 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */ } SECTIONS { dcsm_otp_z1_linkpointer : > DCSM_OTP_Z1_LINKPOINTER PAGE = 0 dcsm_otp_z1_gpreg : > DCSM_OTP_Z1_GPREG PAGE = 0, type = DSECT dcsm_otp_z1_pswdlock : > DCSM_OTP_Z1_PSWDLOCK PAGE = 0 dcsm_otp_z1_crclock : > DCSM_OTP_Z1_CRCLOCK PAGE = 0 dcsm_otp_z1_bootctrl : > DCSM_OTP_Z1_BOOTCTRL PAGE = 0, type = DSECT dcsm_zsel_z1 : > DCSM_ZSEL_Z1_P0 PAGE = 0 dcsm_otp_z2_linkpointer : > DCSM_OTP_Z2_LINKPOINTER PAGE = 0 dcsm_otp_z2_gpreg : > DCSM_OTP_Z2_GPREG PAGE = 0, type = DSECT dcsm_otp_z2_pswdlock : > DCSM_OTP_Z2_PSWDLOCK PAGE = 0 dcsm_otp_z2_crclock : > DCSM_OTP_Z2_CRCLOCK PAGE = 0 dcsm_otp_z2_bootctrl : > DCSM_OTP_Z2_BOOTCTRL PAGE = 0, type = DSECT dcsm_zsel_z2 : > DCSM_ZSEL_Z2_P0 PAGE = 0 codestart : > BEGIN, ALIGN(8) .text : >> FLASH_BANK0_SEC2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4| FLASH_BANK0_SEC5| FLASH_BANK0_SEC6| FLASH_BANK0_SEC7, ALIGN(8) .cinit : > FLASH_BANK0_SEC1, ALIGN(8) .switch : > FLASH_BANK0_SEC1, ALIGN(8) .reset : > RESET, TYPE = DSECT /* not used, */ .stack : > RAMM1 .init_array : > FLASH_BANK0_SEC1, ALIGN(8) .bss : > RAMLS4567 .bss:output : > RAMLS4567 .bss:cio : > RAMGS0 .const : > FLASH_BANK0_SEC1, ALIGN(8) .data : > RAMLS4567 .sysmem : > RAMLS4567 ramgs0 : > RAMGS0 /* Allocate IQ math areas: */ IQmath : > RAMLS4567 IQmathTables : > RAMLS4567 .TI.ramfunc : LOAD = FLASH_BANK0_SEC1, RUN = RAMGS0, LOAD_START(RamfuncsLoadStart), LOAD_SIZE(RamfuncsLoadSize), LOAD_END(RamfuncsLoadEnd), RUN_START(RamfuncsRunStart), RUN_SIZE(RamfuncsRunSize), RUN_END(RamfuncsRunEnd), ALIGN(8) } /* //=========================================================================== // End of file. //=========================================================================== */
你好,看到你发布了新帖,我安排其他同事去英文论坛咨询了,还请留意新帖的回复:
e2echina.ti.com/.../tms320f280023c-f28002x-dcsm-flash-280023_flash_lnk-cmd-cmd