【DSP开发】TMS320C66x DSP SPI Nor Flash的程序烧写

经过一段时间的研究终于把TMS320C6657单核和双核的SPI Nor Flash的程序烧写调通了。工具都是前辈的工作,有需要的可以留下邮箱,我有空可以发。

原理参考钱丰的《TI c66x 系列DSP 多核BOOT 的研究》论文。

通过Nor flash 烧写加载程序的全部流程:(在no-boot模式下)


一、首先讲讲工具链:


hex6x 配合.rmd文件(有几个.out文件就需要几个.rmd文件,描述输出控制、引导选项、存储器选项等内容)生成片上引导加载器加载程序所需的引导表,输出文件为*.btbl

mergebtbl将*.btbl按照一定的顺序链接起来

b2i2c 将*.btbl转换成i2c/spi格式,把boot表划分成0x80字节块并附加长度(length)和校验码(checksum)

b2ccs将*.btbl.i2c转换成.i2c.ccs,CCSV5 IDE接收的.dat格式,加载到DDR3中去。手动i2crom.ccs中的第951改为00

romparse 合并boot表和boot参数表,参数配置表文件*.map作为输入。

byteswapccs将.dat转换成ROM Bootloader代码能够识别的大端模式

二、将工具链写成批处理文件

1.单核.dat文件生成

hex6x simple.rmd

b2i2c simple.btbl simple.btbl.i2c

b2ccs simple.btbl.i2c simple.i2c.ccs

romparse nysh.spi.map

pause       //暂停时,将i2crom.ccs中的第951改为00

byteswapccs i2crom.ccs spirom_le.dat

2.双核.dat文件生成

hex6x core0.rmd

hex6x core1.rmd

mergebtbl core0.btblcore1.btbl multi_core.btbl

b2i2c multi_core.btbl simple.btbl.i2c

b2ccs simple.btbl.i2c simple.i2c.ccs

romparse nysh.spi.map

pause      //暂停时,将i2crom.ccs中的第951改为00

byteswapccs i2crom.ccs spirom_le.dat

蓝色与单核.dat文件生成不同,其他相同。

三、*.dat烧写过程


1. 2个led测试工程,成功编译并生成2个.out文件,生成.out 文件必须命名为core0.out 、core1.out

2. 将2个.out文件拷贝到SPI_Bootloader工具链路径下,双击spibootMulticore.bat批处理文件,开始生成文件,得到spirom_le.dat

3. 将evm板调成no-boot 模式,拨码开关对应 SW3~SW5 1000  0000 0000  0000 (0 对应on  1对应off)

4. 打开MCSDK自带的nor-writer工程,将工程bin文件夹下的nor_writer_input.txt 打开,修改输入文件名为spirom_le.dat 并将spirom_le.dat拷贝到mcsdk_xxxx\tools\writer\nor\evmc667xl\bin路径下

5. 链接工程,等PC指针停在main函数入口,打开view--memory browser,输入0x80000000,load memory 选择spirom_le.dat,(自动)勾上Use the header... 再次确认start address 为0x80000000,length为spirom_le.dat的长度(单位是word) 开始往DDR里灌数。

6. 烧写工程run,注意console输出  显示与length长度大小相同的文件烧入flash,则烧写成功,此时单位是字节。

7. 最后拨码开关拨到ROM SPI boot模式下,SW3~SW5 1011 0000 0010 0000,断电重启

四、多核启动过程

        C66x DSP 内部有一个固化的ROM,里面存放着boot 代码(ROM bootloader)。每当DSP 启动时,会自动从这里读取代码并执行。这里执行的代码是固化的不可更改的,其作用就是根据DSP的管脚配置方式对核进行初始化(比如PLL 等)和完成不同模式的Boot 处理。所有的core 执行同一份代码。不同的core 在执行的时候通过DNUM(核编号索引)来去做区分。初始化外设的操作由 core0来完成。所以core0初始化其他外设的同时,其他core都会执行相关的代码映射IPC 中断,并配置相应的寄存器,然后进入IDLE 状态,等待core0 的IPC中断发起。简言之,其他核是在core0 的命令下执行第一句代码。


        Boot Magic 地址是每个core 各自一块固定的内存。该字存放的是各个core 初始化之后需要跳转到的c程序入口地址 _c_int00()。TMS320C6657/TMS320C6670的Boot Magic地址是0x1x8FFFFC,因为他们L2 RAM大小为1MB。TMS320C6678的Boot Magic地址是0x1x87FFFC,因为L2 RAM只有512KB。

        如果多核DSP 是由同一套工程分别编译,那么每个核内存分配完全相同。core0 在读取自己核的Boot Magic 地址(0x108ffffc)后,加上0x0*000000 后就可以得到其他核的Boot Magic 地址(*为核号)。但是如果各核编译各自独立工程,各变量内存映射关系不再相同,那么就无法从core0 的Boot Magic 地址里的值去推算其他核相应地址。这个时候只能事先记录下各核的 Magic地址,然后写死在核 0 的用户初始化代码上。

       在完成所有上述操作后,core0 需要对每个核的IPCGRx 寄存器写中断以唤醒其他核的正常运行状态。IPCGRx 寄存器的31-4 比特位是IPC 中断源索引,最多可支持多达28 个中断源,文中例程可以设置为全0;比特3-1 是保留位,可以任意赋值。因此只要对最低比特赋1 就可以完成IPC 中断的触发。

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: TMS320C66x DSP缓存用户指南是一本详细介绍TMS320C66x数字信号处理器(DSP)缓存功能的指南。TMS320C66x是德州仪器(TI)公司生产的一种高性能、低功耗的DSP。缓存是DSP中非常重要的一部分,可以提高数据访问效率和处理性能。 这本用户指南详细介绍了TMS320C66x DSP的缓存结构,包括指令缓存和数据缓存。指令缓存用于存储程序指令,而数据缓存用于存储数据。指南中描述了缓存的功能、优点以及如何使用缓存提高DSP的性能。 在指南中,你可以学到如何设置和配置缓存,包括缓存大小、替换算法等参数的设置。缓存的设置和配置对于程序的执行效率和数据的访问速度起着至关重要的作用。指南中还提供了一些示例代码和实例,帮助用户更好地理解和使用缓存。 此外,指南还介绍了缓存的一些高级特性和优化技巧,比如预取机制、回路优化、数据对齐等。这些技巧可以进一步提高程序的性能,并减少功耗。 总的来说,TMS320C66x DSP缓存用户指南是一本对于想要了解和优化TMS320C66x DSP性能的用户来说非常有价值的工具。它提供了详细的缓存结构和功能说明,以及配置和优化的实际指导。熟练掌握该指南中的内容可以帮助用户更好地利用TMS320C66x DSP的缓存功能,提高处理性能和效率。 ### 回答2: 《TMS320C66x DSP缓存用户指南》是一本关于TMS320C66x DSP芯片缓存操作的用户手册。该手册详细介绍了如何在TMS320C66x DSP芯片上使用缓存,并提供了相关的操作指南和最佳实践。 首先,该手册介绍了缓存的基本概念和原理。它解释了缓存是一个存储器层次结构,用于加速计算机的存储访问。在TMS320C66x DSP芯片上,缓存分为指令缓存和数据缓存,分别用于存储程序指令和数据。 接下来,手册详细描述了如何配置和操作缓存。它介绍了如何设置缓存参数,包括缓存大小、缓存行大小和替换策略等。此外,手册还介绍了如何使用特殊的指令来管理缓存,比如刷新缓存、使缓存无效和使缓存透明的指令。 此外,手册还提供了一些性能优化的建议。它介绍了如何在程序设计中充分利用缓存,比如通过合理的数据布局和数据对齐来减少缓存不命中。同时,手册还介绍了一些常见的缓存优化技术,比如预取、循环展开和指令编码优化。 最后,手册还提供了一些实例和案例研究,以帮助用户更好地理解和应用所学的知识。这些案例研究涵盖了不同的应用场景,比如音频处理、图像处理和通信处理等。 总之,《TMS320C66x DSP缓存用户指南》提供了丰富的内容和实用的操作指南,帮助用户在TMS320C66x DSP芯片上充分利用缓存来提高性能和效率。无论是初学者还是有经验的开发人员,都可以通过阅读该手册来更好地理解和应用缓存。 ### 回答3: TMS320C66x DSP缓存用户指南是德州仪器公司(Texas Instruments)为TMS320C66x系列数字信号处理器(DSP)提供的详细说明文档。该指南旨在帮助用户充分了解和有效使用DSP的缓存系统。 TMS320C66x DSP是一款高性能的数字信号处理器,用于处理复杂的信号处理任务。缓存是其中一个关键的性能优化工具,可以提高程序的执行效率。该用户指南提供了关于DSP缓存系统的详细介绍和使用指南。 用户指南首先介绍了DSP的缓存系统的基本原理和工作方式。它解释了缓存的作用以及如何利用缓存提高数据和指令的访问速度。它还介绍了不同类型的缓存,例如指令缓存和数据缓存,并解释了它们的不同特点和用途。 该指南还详细介绍了如何配置和使用DSP的缓存系统。它提供了一些实用技巧和建议,以确保最佳的性能。例如,它建议在编程时将常用的数据和指令存储在缓存中,以减少对主存的访问时间。它还解释了一些常见的缓存相关问题,并提供了解决这些问题的方法。 除了基础知识和实用技巧,该指南还提供了详细的缓存相关的编程示例和案例研究。这些示例和研究旨在帮助用户更好地理解和应用缓存系统。它们介绍了如何编写高效的缓存代码,以及如何通过优化缓存配置来提高程序的性能。 总之,TMS320C66x DSP缓存用户指南是一份对于DSP缓存系统的详细说明文档,旨在帮助用户充分了解和有效使用缓存系统,提高DSP的性能和效率。它提供了基础知识、实用技巧和编程示例,帮助用户更好地理解和应用缓存系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值