C6416启动失败

在NXX板上使用国产FT-C6416芯片时遇到启动问题,与TI C6416的兼容性差异导致主机下载的BIN文件功能异常。分析发现,新版本代码使用了全部内存地址,而老版本在起始位置预留了中断向量表空间。C6000系列DSP启动时,主机需在中断前写入跳转指令到内存起始地址。为解决此问题,修改tcf文件内存配置,避开0到0x20的地址空间,重新编译后,问题得到解决。
摘要由CSDN通过智能技术生成

问题描述

NXX板要使用国产化FT-C6416芯片,其与TI的C6416功能兼容,只是要额外安装仿真器驱动,且只支持CCS3.3以下版本。
NXX板硬件粗调后要用软件做测试,由于开发环境尚未准备好,只能使用老的BIN文件通过主机下载。测试发现闪灯程序运行正常。然而改用CCS5.4下开发的闪灯程序后,主机下载BIN文件功能不正常。灯只亮不闪。

问题分析

由于两者的代码是一致的,只是开发环境和配置的区别。因此先分析两个BIN文件的区别。
BIN文件的格式见图。先是一个入口地址,然后多个由“长度-地址-数据”组成的段,最后是一个0x00000000结束。
启动文件格式

仔细比较新旧版两个BIN文件,发现地址范围不一致。然后追溯map文件发现老版本的内存中留了一段从零地址到0x20地址的空间未使用,而新版本中使用了全部地址,且起始处存放的是中断向量表。

会不会是这个差异导致的问题呢?找出C6000启动相关的文档,发现C6000的启动流程是这样的。
在HPI启动下,主机先给DSP发送一个复位信号,复位完成后DSP采集启动引脚信号发现是主机启动模式,则陷入Stall状态。这时主机可以通过HPI接口写DSP内存,然后通过DSPINT给DSP发送中断。DSP收到中断后跳转到内存起始地址执行。
然而一般情况下入口地址并不一定在内存起始地址处,而是随着代码和编译器而变化的。因此为了保证正常执行,需要主机在中断前先往DSP的起始地址入写一个跳转指令,跳转到入口地址那里。
这就解释了为什么老版代码避开了开始的一段空间了,因为这里是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值