External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《tms320c28346 data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《tms320c28346 data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。

Jones Chen:
1. 对于外扩芯片,很难实现加密。除非用单独的加密芯片。
2. 如果用加密芯片,需要在BootLoader中进行解密。其实这也不是最安全的,因为BootLoader也是可能被绕过去的。
External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《tms320c28346 data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《tms320c28346 data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。

user1450658:
回复 Jones Chen:
如果无法对程序进行加密的话,那使用28346进行系统设计则会很不安全。
External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《tms320c28346 data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《tms320c28346 data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。

Jones Chen:
回复 user1450658:
其实C5000, C6000 只要是Flash不在片内的都存在相同的问题。
如果希望选择片内Flash,可以考虑F28335.
External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《tms320c28346 data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《tms320c28346 data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。

user1450658:
回复 Jones Chen:
正是有些应用场合28335的150MHz主频不够,所以才考虑28346的,但是没想到会有这样的问题。
External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《tms320c28346 data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《tms320c28346 data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。

BIN YAO1:
回复 Jones Chen:
请问 如何通过I2C模式将程序写入EEPROM中呢? 刚接触DSP 很多问题不是很懂
External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《tms320c28346 data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《tms320c28346 data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。

Jones Chen:
回复 BIN YAO1:
通过IIC写EEPROM,可以参考下面的代码历程:
Uint16 I2C_Self_Test(void)
{
Uint16 temp,devID,len;
Uint32 i,j,start_addr,num_page;
Uint16 status;
if (HAL_I2C_hnd.boardRev==BOARD_REV_PREV_D)
return HAL_I2C_ST_NO_EEPROM;
devID = I2C_AT24C1024B_CHIP_1; // first Chip
len = I2C_AT24C1024B_PAGE_SIZE; // number of bytes
num_page = I2C_AT24C1024B_CAPACITY/I2C_AT24C1024B_PAGE_SIZE;
start_addr = 0x0;
for (j=0;j<num_page;j++)
{
I2C_hnd.test_addr = start_addr;
//generate the ramp data pattern
for (i=0;i<len/2;i++)
{
temp = 2*i + ( (2*i +1)<<8);
i2c_test_data[i] = temp;
}
// write data to EEPROM
status = I2C_Write_DataBuf(devID,start_addr,len,i2c_test_data,0);
if (status!=HAL_I2C_ST_SUCCESS)
return status;
memset(i2c_test_data,0xFF,sizeof(i2c_test_data));
// read the data back
status = I2C_Read_DataBuf(devID,start_addr,len,i2c_test_data,0);
if (status!=HAL_I2C_ST_SUCCESS)
return status;
// verify the data
for (i=0;i<len/2;i++)
{
temp = 2*i + ( (2*i +1)<<8);
if (temp!=i2c_test_data[i])
return HAL_I2C_ST_WRITE_READ_FAIL;
}
start_addr +=len;
}
return HAL_I2C_ST_SUCCESS;
}
External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《tms320c28346 data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《tms320c28346 data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。

BIN YAO1:
回复 Jones Chen:
TI的例程中也有一个通过I2C将数据写入EEPROM中的,请问两者有什么区别吗? 另外,如果我想将例程中的LEDBlink写入EEPROM中,怎么样将程序而不是数据写入EEPROM?
External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《tms320c28346 data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《tms320c28346 data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。

Jones Chen:
回复 BIN YAO1:
两个程序都是差不多的。你参考哪个都可以。
需要将程序变成2进制码,像放数据一样存放到EEPROM中。
External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《tms320c28346 data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《tms320c28346 data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。

BIN YAO1:
回复 Jones Chen:
是用hex2000将.out文件转换为.a00文件吗? 如何使用.a00文件呢? 而且例程中的I2C有字长限制的吧,不能超过FIFO的长度?
TI中文支持网