【工程师年度总结]】 C6000多核主题精选

仿真器连不上板子

1. 如果是TI的EVM/DSK板无法连接仿真器,可以查看对应Processor SDK文档里的hardware setup来检查步骤是否正确。例如下面文档:
Processor SDK RTOS Developer Guide
http://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_01_00_08/rtos/index_examples_demos.html#task-3-hardware-setup

强烈推荐下面的这篇application note,非常详细地介绍了如何安装ccs,如何配置target configuration file,以及如何connect板子,最后debug程序。
A Guide to Debugging With CCS on the DRA75x, DRA74x, TDA2x and TDA3x Family of D (Rev. B)
http://www.ti.com/lit/an/sprac17b/sprac17b.pdf

2. TMDSEVM6678, TMDSEVM6657板Mezzanine XDS560v2仿真器连接问题,一般是因为仿真器进入了safe mode,可以通过观察D4, D5, D6等是否同时闪烁来判断是否进入safe mode。另外,Mezzanine XDS560v2仿真器不建议带电插拔。具体可以参考下面的文档和FAQ。

https://processors.wiki.ti.com/images/d/df/Emulator_safemode.pdf

https://www.einfochips.com/wp-content/uploads/2016/04/C6657-Lite-EVM_FAQ.pdf

3. TMS320C6748E加密版本连不上仿真器,需要串口工具先烧写一个代码来解锁JTAG。所以通常在调试阶段用非加密版本的芯片,量产时再用加密版本的芯片替代。
https://processors.wiki.ti.com/index.php/Basic_Secure_Boot_for_OMAP-L138_C6748

参考帖子:
https://e2echina.ti.com/question_answer/dsp_arm/c6000_dsp/f/32/t/102288
https://e2echina.ti.com/question_answer/dsp_arm/c6000_dsp/f/32/p/156264/458601
https://e2e.ti.com/support/processors/f/791/t/431553

4. 自己设计的板子连接不上仿真器,可以从下面几个方面排查:

(1). 检查一下boot mode管脚是否设置成no boot/emulation mode。

(2). 检查一下设备管理器里有没有显示仿真器驱动,确保驱动正确安装并能被识别。

(3). 检查一下target configuration file的驱动有没有选择正确?

(4). 点击target configuration file里的”test connection”按钮,看是否能pass。

(5). 建议手动”connect”板子,不要直接点”debug”按钮launch,便于定位问题。

(6). 试试降低TCLK频率。

(7). 如果芯片上有时钟输出管脚(CLKOUT),可以先测一下CLKOUT管脚有没有时钟输出,看一下dsp本身有没有跑起来。

(8). 测量一下JTAG口管脚的时序是否正确?

(9).交叉测试,用其他好的板子测一下,排除ccs和仿真器的问题。

(10). 检查JTAG电路的连接。
http://dev.ti.com/tirex/explore/node?node=AOi9Jj0vmBMJ0KQKaKITgg__FUz-xrs__LATEST

 

 

Flash烧写

1.TMS320C6748/OMAP-L138烧写

通过串口烧写:
https://processors.wiki.ti.com/index.php/Serial_Boot_and_Flash_Loading_Utility_for_OMAP-L138

通过ccs JTAG烧写,烧写程序在C:\ti\OMAP-L138_FlashAndBootUtils_2_40\OMAP-L138\CCS目录下。
还可以参考下面的文档。
OMAP-L138_FlashAndBootUtils 使用及编译指导
http://www.ti.com.cn/cn/lit/an/zhca481/zhca481.pdf

2. Sitara/K2G系列烧写,用uniflash烧写。
http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_board.html#uniflash

3. C66x/K2H/K2L/K2E系列烧写。

http://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_01_00_08/rtos/How_to_Guides.html#flashing-and-boot

4. 其他c55x/c64x/c67x dsp flash烧写,需要根据外接flash datasheet里的clear/erase/program命令自己来写flash烧写程序。

 


Cache一致性问题


Cache一致性的基本原理可以参考下面的文档。
http://www.ti.com.cn/general/cn/docs/gencontent.tsp?contentId=64183

数据传输时得不到最新的数据,通常是因为cache一致性问题引起的。可以打开memory窗口,输入目的地址,对比勾选/不勾选窗口的L1D, L2,看目的地址的内容是否有变化来判断。或者通过关闭cache来判断。

涉及Cache的简单原则是:CPU访问了buffer,则buffer的数据被Cache,然后EDMA更新数据到buffer,这时CPU是不知道的,CPU再访问Buffer,如果前面Cache进去的地址没有被替换出来,那么就直接从Cache读数据,即旧的数据。所以要确保再次读到的是更新的物理内存的数据,而不是Cache里的数据,那么就要把buffer从Cache invalid,如果数据是有用的,即write back invalid。
https://e2echina.ti.com/question_answer/dsp_arm/omap_l1x/f/54/p/21292/71106
https://e2echina.ti.com/question_answer/dsp_arm/c6000_multicore/f/53/t/117770
https://e2echina.ti.com/question_answer/dsp_arm/c6000_multicore/f/53/t/107150
https://e2echina.ti.com/question_answer/dsp_arm/c6000_multicore/f/53/t/106633


 

置顶贴STK的编译

例程下载链接:

https://e2echina.ti.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664

由于置顶贴中使用的sdk是老版本的,对于使用新版psdk的客户来说会出现一些编译报错。

测试前请在CCS中安装pdk_C6678_1_1_2_6

pdk_C6678_1_1_2_6下载链接:

http://software-dl.ti.com/sdoemb/sdoemb_public_sw/bios_mcsdk/02_01_02_06/index_FDS.html

在编译通过之后,load程序会出现No source available for"main()"的报错。

请右击工程->properties->build->debug options 改成 full symbolic debug。

https://e2echina.ti.com/question_answer/dsp_arm/c6000_multicore/f/53/p/181723/550616

其他需要修改的部分参考置顶贴中的详细描述。

 

KeystoneI DDR3的配置

1、 参考《DDR3 Design Requirements for KeyStone Devices》设计要求完成layout。

http://www.ti.com/lit/an/sprabi1c/sprabi1c.pdf

需要强调的是要满足Net classes中信号等长的规则,建议创建一个电子表格来验证是否满足,附件是layout工具生成的一个表格,给大家提供参考。从表格中可以提取控制器到DRAMs地址/命令/控制信号/时钟信号的走线长度。

8473.Shn_EVM_DDR3_Rules_1201.xls

2、以上获得的数据将用于PHY_CALC 的计算表格中。PHY_CALC表格会根据layout的不同计算出最适应于当前layout的DDR3 PHY读写参数。

PHY_CALC下载链接:

http://www.ti.com/litv/zip/sprabl2a

链接中提供的另一个表格REG_CALC 用来计算其它必要的配置值。

请参照两个表格中instructions部分的说明来修改。

3、 初始化

将step2中得到的参数值用于DDR3初始化配置。

1) 利用stk中的程序进行初始化。

2) 利用GEL文件中的代码初始化

如下图,搜索ddr3_setup()。

4、 DDR读写测试

1) CCS+EMULATOR

使用CCS+Emulator对DDR3的内存区域内的地址进行读写,查看是否能够正 常读写,刷新后是否正常。

2) 利用K1_STK_v1.1\Memory_Test测试

https://e2echina.ti.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664

5、 常见的DDR问题

https://processors.wiki.ti.com/index.php/Common_DDR_Issues

6、 主要参考文档

http://www.ti.com/lit/an/spracl8/spracl8.pdf

http://www.ti.com/lit/an/sprabl2e/sprabl2e.pdf

http://www.ti.com/lit/ug/sprugv8e/sprugv8e.pdf

 

PROCESSOR SDK RTOS

1、 下载链接

TI的每一个处理器都有对应的PSDK下载链接,请根据型号到对应的芯片主页上下载。

Tms320c6678:http://www.ti.com.cn/tool/cn/PROCESSOR-SDK-C667X

Am335x: http://www.ti.com.cn/tool/cn/PROCESSOR-SDK-AM335X

旧版本SDK的下载:

进入SDK下载页面找Previous Release选项

2、 外围设备驱动程序的编译

1) 确保所使用的ccs版本支持当前的SDK版本, release note中会有说明。

http://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_01_00_08/rtos/Release_Specific.html#processor-sdk-rtos-release-notes

2) 自定义CCS安装路径

set CCS_INSTALL_PATH =

3) 自定义SDK安装路径

set SDK_INSTALL_PATH =

4) 在CCS->preference->product中安装SDK的各个部件,并重启生效。

5) 编译驱动程序(以tms320c6678为例)

 

3、 PDK中是否包含裸机程序

1) CSL例程

${PDK_INSTALL_PATH}\packages\ti\csl\test

2) Diag例程

${PDK_INSTALL_PATH}\\packages\ti\board\diag

Diag例程是针对EVM板各个功能进行测试的。

可以使用以下指令进行编译:

gmake board                     /* build board library and diagnose examples */

gmake board_lib             /* build board libraries only */

gmake board_diag           /* build board diagnose examples */

编译出的例程路径:

C:\ti-processor-sdk-rtos \pdk \packages\ti\board\bin

完整编译及运行方法请参考:

http://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_01_00_08/rtos/index_board.html#diagnostics

 

4、 重要参考文档

Getting Started Guide :

http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_overview.html#processor-sdk-rtos-getting-started-guide-label

Software Developer Guide

http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index.html#processor-sdk-rtos-software-developer-s-guide

Migration Guide

http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index.html#processor-sdk-rtos-software-developer-s-guide