地下室外扩施工方案仪室是什么

TMS320C28346外扩程序存储器加密方案 - C2000(TM) 32位实时 MCU - 德州仪器在线技术支持社区
TMS320C28346外扩程序存储器加密方案
发表于4年前
<input type="hidden" id="hGroupID" value="38"
&div>&b>问题描述:&/b>&/div>
&div>&b>&br>&/b>&/div>
&div>&b>1、由于28346芯片不带片内FLASH,所以芯片上电后需要通过Boot ROM从片外的FLASH/EEPROM导入程序代码;&/b>&/div>
&div>&b>&br>&/b>&/div>
&div>&b>2、由于程序代码需要保存在片外的FLASH/EEPROM中,所以就必须考虑在外扩存储器中代码的安全,为此我参考了TI的文档《Programming
External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《&a href=&.cn/product/cn/tms320c28346& target=&extwin&>tms320c28346&/a> data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《&a href=&.cn/product/cn/tms320c28346& target=&extwin&>tms320c28346&/a> data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。&/b>&/div>
&div>&/div>
&div>&img src=&/resized-image.ashx/__size/550x0/__key/CommunityServer-Discussions-Components-Files/24/1263.ww.bmp& border=&0&>&/div>
&div>&/div>
&div>&b>疑问:&/b>&/div>
&div>&b>&br>&/b>&/div>
&div>&b>1、对于&a href=&.cn/product/cn/TMS320C28346& target=&extwin&>TMS320C28346&/a>这款芯片,如何保证外扩程序存储器FLASH/EEPROM中代码的安全?&/b>&/div>
&div>&b>&br>&/b>&/div>
&div>&b>2、如果选用带加密的FLASH/EEPROM来存储程序(当然我现在还没有找到这种芯片),那么28346在上电load程序时,28346如何进行解密呢?&/b>&/div>
&div>&/div>
&div>&/div>
&div>&/div>
&p>&&/p>&div style=&clear:&>&/div>" />
TMS320C28346外扩程序存储器加密方案
此问题尚无答案
All Replies
问题描述:
1、由于28346芯片不带片内FLASH,所以芯片上电后需要通过Boot ROM从片外的FLASH/EEPROM导入程序代码;
2、由于程序代码需要保存在片外的FLASH/EEPROM中,所以就必须考虑在外扩存储器中代码的安全,为此我参考了TI的文档《Programming
External Nonvolatile Memory Using SDFlash for TMS320C28x Devices》、《TMS320x2834x
Delfino Boot ROM Reference Guide》、《 data
manual》,这些文档提供了如何实现外扩程序存储器的方案,但是关于代码安全只是在《 data
manual》中提到说经过加密后28346片内的某些内存区域不可以通过外部方式访问。如下图所示。也没有提及如何保护外部存储器中代码的安全。
1、对于这款芯片,如何保证外扩程序存储器FLASH/EEPROM中代码的安全?
2、如果选用带加密的FLASH/EEPROM来存储程序(当然我现在还没有找到这种芯片),那么28346在上电load程序时,28346如何进行解密呢?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花13370分
1. 对于外扩芯片,很难实现加密。除非用单独的加密芯片。
2. 如果用加密芯片,需要在BootLoader中进行解密。其实这也不是最安全的,因为BootLoader也是可能被绕过去的。
如果您认为此问题已被解答,请在&这是否解答您的问题& 后,点击&是&按钮! 谢谢您的合作!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
如果无法对程序进行加密的话,那使用28346进行系统设计则会很不安全。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花13370分
其实C5000, C6000 只要是Flash不在片内的都存在相同的问题。
如果希望选择片内Flash,可以考虑F28335.
如果您认为此问题已被解答,请在&这是否解答您的问题& 后,点击&是&按钮! 谢谢您的合作!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
正是有些应用场合2MHz主频不够,所以才考虑28346的,但是没想到会有这样的问题。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士3555分
请问 &如何通过I2C模式将程序写入EEPROM中呢? &刚接触DSP &很多问题不是很懂
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花13370分
通过IIC写EEPROM,可以参考下面的代码历程:
Uint16 I2C_Self_Test(void)
&Uint16 temp,devID,
&Uint32 i,j,start_addr,num_
&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_j++)
& &I2C_hnd.test_addr = start_
& &//generate the ramp data pattern
& &for (i=0;i&len/2;i++)
& & &temp = 2*i + ( (2*i +1)&&8);
& & &i2c_test_data[i] =
& &// write data to EEPROM
& &status = I2C_Write_DataBuf(devID,start_addr,len,i2c_test_data,0);
& &if (status!=HAL_I2C_ST_SUCCESS)
& &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)
& &// 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 +=
&return HAL_I2C_ST_SUCCESS;
如果您认为此问题已被解答,请在&这是否解答您的问题& 后,点击&是&按钮! 谢谢您的合作!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士3555分
TI的例程中也有一个通过I2C将数据写入EEPROM中的,请问两者有什么区别吗? &另外,如果我想将例程中的LEDBlink写入EEPROM中,怎么样将程序而不是数据写入EEPROM?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花13370分
两个程序都是差不多的。你参考哪个都可以。
需要将程序变成2进制码,像放数据一样存放到EEPROM中。
如果您认为此问题已被解答,请在&这是否解答您的问题& 后,点击&是&按钮! 谢谢您的合作!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士3555分
是用hex2000将.out文件转换为.a00文件吗? &如何使用.a00文件呢? &而且例程中的I2C有字长限制的吧,不能超过FIFO的长度?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.DSP28335 程序的.ebss段下载进外扩的RAM里面了,运行时出现错误 - C2000(TM) 32位实时 MCU - 德州仪器在线技术支持社区
DSP28335 程序的.ebss段下载进外扩的RAM里面了,运行时出现错误
发表于4年前
<input type="hidden" id="hGroupID" value="38"
由于程序量过大,我啊程序里面的.ebss段下载进外扩的RAM里面了,其他的还保留在内部的RAM里面,在线仿真时可以进入主函数,在调用主函数里面的初始化的时候程序有时在我所用的库函数里面的boot部分循环,有时在rom那块的程序循环,有时就直接跑飞了,请各位高手给我点提示,非常感谢&/p>&div style=&clear:&>&/div>" />
DSP28335 程序的.ebss段下载进外扩的RAM里面了,运行时出现错误
此问题已被解答
All Replies
由于程序量过大,我啊程序里面的.ebss段下载进外扩的RAM里面了,其他的还保留在内部的RAM里面,在线仿真时可以进入主函数,在调用主函数里面的初始化的时候程序有时在我所用的库函数里面的boot部分循环,有时在rom那块的程序循环,有时就直接跑飞了,请各位高手给我点提示,非常感谢
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花17035分
用例程包中的例程xintf_run_from是否也会有这个问题?如果也有,我估计是硬件上没做好。
由于外部RAM使用前要先初始化XINTF,我建议楼主用#pragma DATA_SECTION (var, &.mydata&)这样的伪指令把部分大的数据定义到外部RAM,.ebss还是放在内部以避免出现问题。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
谢谢您给的建议,我的板子用ti公司给的例程测试外部的RAM没有问题,而且当代码量不大在片内RAM运行时也是没有问题的,现在的程序的.ebss段100多k,在线仿真的话内部RAM不够用,因此我给写到外面了,您给的建议我会试试的,祝好!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
谢谢您给的建议,我的板子用ti公司给的例程测试外部的RAM没有问题,而且当代码量不大在片内RAM运行时也是没有问题的,现在的程序的.ebss段100多k,在线仿真的话内部RAM不够用,因此我给写到外面了,您给的建议我会试试的,祝好!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花13370分
建议楼主在Code Start Brach.asm中对外部Ram进行初始化配置。
将InitXINTFRAM()编译之后生成.obj文件,在Code Start Branch中调用即可。
具体写法参考下面这个帖子:
如果您认为此问题已被解答,请在&这是否解答您的问题& 后,点击&是&按钮! 谢谢您的合作!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
谢谢您,我先试一下吧,
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花13370分
记得反馈一下您的测试结果,给大家分享一下,谢谢!
如果您认为此问题已被解答,请在&这是否解答您的问题& 后,点击&是&按钮! 谢谢您的合作!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
我测试了一下,根据您给的建议在Code Start Branch中增加如下代码
WD_DISABLE .set 1
;set to 1 to disable WD, else set to 0
& &.ref _c_int00
& &.global code_start
.ref _InitSysCtrl &;开外设
& &.ref _init_zone7 &;初始化XINTF总线为16BIT(用户的系统硬件设计相关)
然后变异通过,并下载进DSP里面,结过还是在运行完我的初始化函数后程序就运行不正确了,具体来说是运行完
void InitSysCtrl(void)
& // Disable the watchdog
& DisableDog();
& // Initialize the PLL control: PLLCR and DIVSEL
& // DSP28_PLLCR and DSP28_DIVSEL are defined in DSP2833x_Examples.h
& InitPll(DSP28_PLLCR,DSP28_DIVSEL);
& init_zone7();
& // Initialize the peripheral clocks
& InitPeripheralClocks();
&#125;这个函数,就是ti自带的,只不过我在里面加了一个初始化init_zone7();
运行完这个函数后有时程序会跑去再接着运行global code_start
初始化函数的下一行不会被执行到,还有就是有的时候就是在main函数的init()前面设置一个断点,并没有while循环,但是程序运行时会一直进入这个断点处停止,期待您的回答
另,有个老师说也许是我的程序在内部的RAM和外部的RAM中,由于速度不匹配造成的这种结果,
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花13370分
用下面这个,不知道你和我的是否一样。
& .if WD_DISABLE == 1
wd_disable:
& &SETC OBJMODE & & & &;Set OBJMODE for 28x object code
& &EALLOW & & & & & & &;Enable EALLOW protected register access
& &MOVZ DP, #7029h&&6 &;Set data page for WDCR register
& &MOV @7029h, #0068h &;Set WDDIS bit in WDCR to disable WD
& LCR _InitSysCtrl
& LCR _InitZone7 & & & & & &;Disable EALLOW protected register access
& &LB _c_int00 & & & & ;Branch to start of boot.asm in RTS library
;end wd_disable
另外,你那个老师说的也有道理,要对外部的RAM进行初始化配置,否则非常慢。
配置代码如下:
void Sram_init( void)
XintfRegs.XTIMING6.bit.X2TIMING = 0;
XintfRegs.XTIMING6.bit.XRDLEAD = 1;
XintfRegs.XTIMING6.bit.XRDACTIVE = 1;
XintfRegs.XTIMING6.bit.XRDTRAIL = 0;
XintfRegs.XTIMING6.bit.XWRLEAD = 1;
XintfRegs.XTIMING6.bit.XWRACTIVE = 1;
XintfRegs.XTIMING6.bit.XWRTRAIL = 0;
XintfRegs.XINTCNF2.bit.CLKMODE = 0;
如果您认为此问题已被解答,请在&这是否解答您的问题& 后,点击&是&按钮! 谢谢您的合作!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
您好,Mr Chen,
我按照您的方法在Code Start Brach.asm里面加上你给我写的那段程序,因为我的初始化函数名称和您的不一样就修改了下函数名,但是编译的时候提示如下错误
&DSP2833x_CodeStartBranch.asm&, ERROR! & at EOF: [E0300] The following symbols
& & & & & & & & & & & & & & & & & & & & & & & & & & & & are undefined:
1 Assembly Error, No Assembly Warnings
&init_zone7
Errors in Source - Assembler Aborted
是什么原因啊,我的函数都是定义的全局的,期待您的回答
You have posted to a forum that requires a moderator to approve posts before they are publicly available.商品编号:
京 东 价:
支&#x3000;&#x3000;持:
选择颜色:
选择尺码:
搭配赠品:
服务支持:
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
凌度HS995 声控 语音播报倒车距离7.36英寸大屏导航双镜头行车记录仪 标配16G+导航+固定测速云狗+倒车影像 加外扩64G内存卡
加载中,请稍候...
如果您发现商品信息不准确,
商品介绍加载中...
服务承诺:
京东平台卖家销售并发货的商品,由平台卖家提供发票和相应的售后服务。请您放心购买!
注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
价格说明:
京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。
划线价:商品展示的划横线价格为参考价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在京东平台上曾经展示过的销售价;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
购买之前,如有问题,请
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
浏览了该商品的用户还浏览了
加载中,请稍候...
价&#x3000;格: 到
&#x3000;&#x3000;&#x3000;
iframe(src='///ns.html?id=GTM-T947SH', height='0', width='0', style='display: visibility:')DSP28335 .ebss段下载进外扩RAM后程序不正常 - C2000(TM) 32位实时 MCU - 德州仪器在线技术支持社区
DSP28335 .ebss段下载进外扩RAM后程序不正常
发表于1年前
<input type="hidden" id="hGroupID" value="38"
&span style=&font-size:&>采用的28335,计算有效值和FFT,开辟了两个1000的数组,定义于.ebss段。在cmd里面将其放入RAML4L5,运行正常。但将其放入片外64kRAM (zone6),首次上电load program后,系统跳转到ILLEGAL_ISR中断,然后不断电重新load,则程序运行正常;再断电再通电后,首次load还是跳转到&span>ILLEGAL_ISR中断。试着在&span>Code Start Branch.asm配置XINTF,仍然不能正常运行。想问下,这个具体原因是什么,如何解决。难道ebss只能放在片内RAM吗&/span>&/span>&/span>&/p>&div style=&clear:&>&/div>" />
DSP28335 .ebss段下载进外扩RAM后程序不正常
此问题尚无答案
All Replies
采用的28335,计算有效值和FFT,开辟了两个1000的数组,定义于.ebss段。在cmd里面将其放入RAML4L5,运行正常。但将其放入片外64kRAM (zone6),首次上电load program后,系统跳转到ILLEGAL_ISR中断,然后不断电重新load,则程序运行正常;再断电再通电后,首次load还是跳转到ILLEGAL_ISR中断。试着在Code Start Branch.asm配置XINTF,仍然不能正常运行。想问下,这个具体原因是什么,如何解决。难道ebss只能放在片内RAM吗
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
榜眼30250分
试试在Code Start Branch.asm里将LB _c_int00替换掉,跳转到XINTF的配置文件中,配置完成后再跳转回c_int00。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.c语法 - C2000(TM) 32位实时 MCU - 德州仪器在线技术支持社区
发表于1年前
<input type="hidden" id="hGroupID" value="38"
&span>//F2812 读取XINTF ZONE2 ram程序&/span>&br>&span>#define ram_addr &0x&/span>&br>&span>Uint16 tmp;&/span>&br>&span>Uint16 * rambase;&/span>&br>&span>rambase=(Uint16 *)ram_&&/span>&br>&span>&tmp=*rambase&/span>&span>;&/span>&br>&span>/////////////////////////////&/span>&br>&span>此句rambase=(Uint16 *)ram_ &把ram_addr强制转化成uint16指针 ,rambase指向的地址岂不是0x0000;变成芯片内部存储地址了????&/span>&br>&span>求好汉指点???&/span>&/p>&div style=&clear:&>&/div>" />
此问题已被解答
All Replies
//F2812 读取XINTF ZONE2 ram程序#define ram_addr &0xUint16 tmp;Uint16 * rambase;rambase=(Uint16 *)ram_&&tmp=*rambase;/////////////////////////////此句rambase=(Uint16 *)ram_ &把ram_addr强制转化成uint16指针 ,rambase指向的地址岂不是0x0000;变成芯片内部存储地址了????求好汉指点???
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
榜眼30250分
ram_addr &0x本来是一个整数类型,将它赋值给指针类型变量rambase,需要将其强制类型转换指针类型。也就是说rambase的值就等于ram_addr &0x,只不过是数据类型不一样。所以*rambase指向地址为0x的数据。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花10196分
指针数据类型本身是一个32位的整型,所以不会变成你说的0x0000,仍然会是0x.
Uint16 *表示该指针所指向的是一个16位的整型数。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.

我要回帖

更多关于 乳房下垂外扩怎么办 的文章

 

随机推荐