DSP

TI DSP6657—Nand Flash 程序固化

2019-07-13 11:11发布

前言

开发嵌入式DSP程序的时候,最终生成的可执行程序格式为.out , .out是TI CCS中一种二进制可执行程序的格式。在调试阶段,只需要DSP开发板通过JTAG仿真器连接到PC上, 在PC端通过CCS直接将.out下载到DSP芯片的RAM中,点击Run即可执行。 但是,一旦DSP要脱离PC,仿真器, 就不能采用上面下载.out的方式,因为RAM的性质的掉电丢失的。 这时候,就需要将生成的程序保存在FLASH芯片中,Flash芯片的掉电不丢失的。下面将完整介绍DSP程序固化的流程。

RAM与ROM,FLASH区别

RAM与ROM区别

ROMRAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。

RAM的类型

RAM 有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。

ROM的类型

ROM也有很多种,PROM是可编程的ROM,PROMEPROM (可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,这种是早期的产品,现在已经不可能使用了,而EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦除,价格很高,写入时间很长,写入很慢。 举个例子,手机软件一般放在EEPROM中,我们打电话,有些最后拨打的号码,暂时是存在SRAM中的,不是马上写入通过记录(通话记录保存在EEPROM中),因为当时有很重要工作(通话)要做,如果写入,漫长的等待是让用户忍无可忍的。

FLASH芯片

FLASH 存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM 的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。

FLASH的分类

目前Flash主要有两种NOR FlashNADN Flash NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。 NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。(本次固化就是在Nand Flash芯片中

开发环境/工具

  • EVM 6657评估板
  • TI XDS200 USB 仿真器
  • Flash烧写工具
  • CCS v8
  • windows 10

DSP程序启动

DSP启动流程

上电之后,程序指针会自动指向ROM中一个称为Bootloader的小程序, 这段程序使得DSP在上电之后进行一些初始化操作,然后根据期间配置的不同选择从外部存储器或者主器件中搬移代码。C66x系统DSP片内Bootloader的起始地址固定为0x20B00000

DSP启动方式

为了适应不同系统的需求,TI公司的C66x系列支持的自启动模式包括:
  • SPI
  • I2C
  • EMAC
  • SRIO
  • PCIE
  • EMIF16
  • Nor Flash
  • Nand Flash
具体采用哪种启动方式由BOOTMODE[12:0] 引脚决定,DSP在上电脱离复位以后会读取这些引脚的状态,Bootloader根据引脚的值来选择相应的启动方式。 11478104-162bd6f17c0d2e3d.png TI DOC 11478104-6381cd7afc2b52a4.png TI DOC

基于Nand Flash的程序启动

11478104-c8d0454acbb94adb.png TI DOC

实验

step1. 准备好烧写软件
  1. CCS v8
  2. 待烧写的.out
  3. 烧写工具
首先,在TI官网论坛下载一个Boot example,包含Nand boot。 EVM板子拨码开关拨到No boot模式。 11478104-49eb88ec48a6e4d2.png image.png 11478104-01d6cdbb59be7cee.png image.png step2: 转换生成的.out 在转换之前,需要进行一些配置。
11478104-eabbaf2a2a73ee23.png image.png
  • 设置mcsdk多核开发套件的路径
11478104-e2ef473a957b679f.png image.png
  • rmd文件配置
length需要根据.out的大小调整 ,其他不用变 11478104-b939d807c7583113.png image.png 11478104-47eaec010a73ccb5.png image.png 配置好之后,运行.bat文件,自动生成一些文件。nand Flash烧写需要用到 .dat文件。 11478104-9307da0f626343be.png image.png step3:将转换之后的.out(.dat)烧写到Flash芯片中
  • 首先,打开一个工程,进入到Debug模式
    11478104-cf9481076e0668c7.png image.png
11478104-ad3508476952af38.png image.png
  • 然后加载烧写工具 nandwriter.out
    11478104-8ea379a4f4416637.png image.png
11478104-d818f8ba2ce3fa9c.png image.png
  • 将.dat加载到SL2内存中,load memory,加载到指定的地址。
    11478104-d28613872f44af10.png image.png
11478104-94ff234f960829e0.png image.png 11478104-cbd887283e3bcf85.png image.png 11478104-b8f42541bac8a152.png image.png
这里内存内容将写入的Flash芯片中。
  • 点击run, 将遍历加载到Expressions窗口
    11478104-bc3a3d95dc569b64.png image.png
11478104-9d9484435ed013ab.png image.png 将dataSizeUint32设置为.dat 的大小 (10进制), 然后程序继续自动运行。 程序自动将 0x0c000000起始的内容,某个size的大小搬移到Flash芯片。 11478104-c2c7f660bc40a11d.png image.png 这样Flash芯片就烧写成功。 step4:重新上电
  • 板子拨码开关拨到Nand Boot模式
  • 上电之后,复位
这样,程序就自动启动成功。

End