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.
大家好、
我们在电子产品编程方面遇到了一些问题、我不确定我们是否只是做了一些不想做的事情。
我们将多个十六进制映像(引导加载程序、应用程序等)编程到控制器中、当我们使用 UniFlash 执行该操作时、它会声明:
[成功]程序加载已成功完成。
现在、当我们生成独立软件包并尝试使用 dslite 对映像进行编程时、它会声明:
错误:C28xx_CPU1:文件加载程序:验证失败:内存映射阻止读取0x7800C@程序
考虑到错误消息的地址、问题似乎出在 OTP 存储器中、该存储器被编程为设置控制器的引导模式。
这些地址的数据包含在引导加载程序十六进制映像中、但这可能会在它尝试在之后进行验证时造成问题。
020000040007F3
02800C00FFFF74
:02800D005AFF18
:02801C00FF0360
使用 dslite 独立工具进行编程时、是否建议如何在控制器内设置这些 OTP 值?
或者、我们是否可以采取其他措施来缓解此问题?
此致
Wolfgang
沃尔夫冈
请澄清以下问题:
1) 1)您是否在 OTP 中对任何 DCSM 设置进行了编程? 如果是、您要编程哪些字段?
2) 2)当您说"独立软件包"时、您是指整个映像的独立软件包(闪存+ OTP)、还是指用于您的配置的 UniFlash 独立软件包?
3)您用于验证的映像->是否包含这些引导设置? 您听说它们不是用于验证的图像的一部分。 对吧?
谢谢、此致、
Vamsi
您好、Vamsi、
1) 1)我们正在 OTP 中对以下设置进行编程:
Z1OTP-GPREG3 (0x7801C)
Z1OTP-GPREG1 (0x7800C)
2) 2)我们使用 Uniflash 中的功能来生成"独立命令行"、其中包括 dlite、一些配置和十六进制映像。 我将此软件包称为独立软件包、它通过执行生成的批处理文件对器件进行编程。
3) 3)其中一个十六进制文件(即引导加载程序)包含文件开头提到的 OTP 设置。 特别是第一个帖子中提到的行位于该文件的开头:
020000040007F3
02800C00FFFF74
:02800D005AFF18
:02801C00FF0360
这是生成并执行的命令:
set generated_command=-c user_files/configs/f280049c.ccxml -l user_files/settings/generated.ufsettings -s VerifyAfterProgramLoad="No verification"-e -f -v "user_files/images/File1.hex""user_files/File2.hex""user_files/files/files/files/files/files/file.hex"
所执行脚本的主要输出如下:
正在加载程序:多个文件
正在准备...
0x7800c 处为4的0
C28xx_CPU1:GEL 输出:... DCSM 初始化开始...
C28xx_CPU1:GEL 输出:... DCSM 初始化完成...
正在擦除闪存
擦除组0、扇区0
擦除组0、扇区1:2%
擦除组0、扇区2:5%
擦除组0、扇区3:8%
擦除组0、扇区4:11%
擦除组0、扇区5:14%
擦除组0、扇区6:17%
擦除组0、扇区7:20%
擦除组0、扇区8:23%
擦除组0、扇区9:26%
擦除组0、扇区10:29%
擦除组0、扇区11:32%
擦除组0、扇区12:35%
擦除组0、扇区13:38%
擦除组0、扇区14:41%
擦除组0、扇区15:44%
擦除组1、扇区0:50%
擦除组1、扇区1:52%
擦除组1、扇区2:55%
擦除组1、扇区3:58%
擦除组1、扇区4:61%
擦除组1、扇区5:64%
擦除组1、扇区6:67%
擦除组1、扇区7:70%
擦除组1、扇区8:73%
擦除组1、扇区9:76%
擦除组1、扇区10:79%
擦除组1、扇区11:82%
擦除组1、扇区12:85%
擦除组1、扇区13:88%
擦除组1、扇区14:91%
擦除组1、扇区15:94%
0x7801c 处为2的0
0x80000时为4的0
0x80004时236的0
0x8007c 时为13404的0
0x81aac 时为570的0:7%
0x81bcc 处为8的0:7%
0x81f7c 处为96的0:7%
0x81ff4为16的0:7%
0x82000处8192的0:7%
在0x83000处为1044的0:12%
在0x8320c 上为105452的0:13%
在0x8320c 上为105452的32752:31%
在0x8320c 时为105452的65504:49%
在0x8320c 上为105452的98256:67%
在0x90004处为7044的0:71%
0x90dc8处3580的0:75%
0x914c8上2876的0:77%
0x91a68处1598的0:78%
0x91d88处为20154的0:79%
0x944e8处11258的0:91%
0x95ae8处436的0:97%
0x95bc4时为212的0:97%
0x95c30处580的0:97%
0x95d54处148的0:97%
0x95da0处为108的0:98%
0x95dd8处3392的0:98%
0x9ffec 时为8的0:99%
完成:99%
将 PC 设置为入口点:99%
正在验证程序:多个文件
正在准备...
0x7800c 处为4的0
错误:C28xx_CPU1:文件加载程序:验证失败:内存映射阻止读取0x7800C@程序
已完成
失败:文件:多个文件:加载失败。
此致
Wolfgang
沃尔夫冈
第一。 因此、器件不受保护。
2。 好的、它是 Uniflash 独立包。
3号。 我将请我们的工具团队在这方面为您提供帮助。
谢谢、此致、
Vamsi
该错误基本上意味着我们尝试读取的地址(0x7800C)未映射到程序存储器(@程序)。
查看为调试器设置存储器映射的文件、我可以在程序页面中看到这一点。 即0x7800C 处无存储器
GEL_MapAddStr (0x000700000、0x400、"R|AS2"、0); /* TI OTP 组1 (2 KB) *
GEL_MapAddStr (0x00070400、0、0x400、"R|AS2"、0); /* TI OTP 组2 (2 KB) *
另一方面、数据页确实具有存储器。 它具有相同的值
GEL_MapAddStr (0x00070000.1、0x400、"R|AS2"、0);// TI OTP 组1 (2 KB)*/
GEL_MapAddStr (0x00070400、1、0x400、"R|AS2"、0);// TI OTP 组2 (2 KB)*/
GEL_MapAddStr (0x000780001、0x400、"R|AS2"、0);//用户 OTP 组1 (2 KB)*/
GEL_MapAddStr (0x00078400、1、0x400、"R|AS2"、0);//用户 OTP 组2 (2 KB)*/
问题可能是十六进制文件没有内存页的概念。 因此、UniFlash 会看到地址0x7800C、并假定为程序页。 如果加载了.out 文件、我敢打赌这本来会通过 ok、因为.out 文件具有页信息。
一个选项是编辑定义存储器映射的.gel 文件并添加用户 OTP 组存储器。
文件是 f280049c.gel
它位于中 /deskdb/content/TICloudAgent/win/ccs_base/emulation/gel
您可以将这2行添加到第172行之后
GEL_MapAddStr (0x000780001、0x400、"R|AS2"、1);//用户 OTP 组1 (2 KB)*/
GEL_MapAddStr (0x00078400、1、0x400、"R|AS2"、1);//用户 OTP 组2 (2 KB)*/
此致、
John
尊敬的 John:
非常感谢您的解释和建议。 我必须调整行以设置程序页(第二个参数0)而不是数据页、但这样编程就像预期的那样工作:
GEL_MapAddStr (0x000780000、0x400、"R|AS2"、1);//用户 OTP 组1 (2 KB)*/
GEL_MapAddStr (0x00078400、0、0x400、"R|AS2"、1);//用户 OTP 组2 (2 KB)*/
此致
Wolfgang