仿真器连不上板子
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系列烧写。
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地址/命令/控制信号/时钟信号的走线长度。
1411.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中会有说明。
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、 重要参考文档