使用Likner output验证ecc功能(--ecc options使用)

  上一篇博客F280049C_FlashAPI-ecc功能实现——完成内存映射-优快云博客记录了为使用ccs提供的ecc options功能需要对cmd文件进行的操作。今天继续对TMS320C28X_Assembly_Tools_userguide中8.4.12关于配置linker中指令的内容进行学习和使用。首先给出TI提供的文档中的内容:

右键project,选择Properties——>C2000 Linker——>Advanced Options——>Linker Output,确保ecc打开(红框),然后点开绿色框内的图标添加修改的地址,以及希望翻转的位数。

点开绿色位置后会出现下面的界面:

开始我输入的是:

--ecc:data_error=0x86000, 0x01 

编译后报错:error #10404-D: bit error should be two or three comma-separated integers with an optional base symbol: [symbol+]address,[page,]error_mask。我在TI论坛上也查到有人问过类似的问题,但没有解决方案。感谢gpt给了我一个思路,让我打开ccs的verbose_diagnostics来提供更加详细的问题信息。为了显示更加详细的项目信息,需要在properties选择C2000Linker——>Advanced Options——>Diagnostic,然后勾选最下面的一项Verbose diagnostics(--verbose_diagnostics)。

根据报错的内容发现显示--ecc:data_error的错误为:--ecc:data_error=--eccdata_error=0x086000,0,0x01,也就是说直接在里面键入两个数字(0x86000,0x001)就可以了。因为最开始写了指令data_error指令,导致程序读到两个data_error发生报错。并且要注意,两个参数之间使用逗号分隔后不需要再空格,否则也会出现这个报错。

修改正确后,又出现了error #10413: error specified at 0x86000 does not lie within an initialized section的问题。这里是说我们要修改的地址没有初始化。其实是因为我们再程序中没有使用这段地址,因此使用ecc option无法对这个地址进行操作。这是出现该报错时程序的内存分配状态:


0x86000对应的是FLASH_BANK0_SEC6的地址,但FLASH_BANK0_SEC6并没有被程序使用,因此会出现这个报错

在cmd中修改test字段的存储区域:

.text            : >>FLASH_BANK0_SEC1 | FLASH_BANK0_SEC2 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC6,  PAGE = 0, ALIGN(4)

修改后,编译通过,可以看到SECTOR6被分配了内存:

以上就可以通过ecc option来对ecc进行检验了。这个上午就做了这些工作,后面具体的验证放到下一篇再说。

研究生快放假了!开心!

争取放假前把这块干完 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值