PCB论坛网

 找回密码
 注册
查看: 1160|回复: 0

应用程序的FLASH ROM引导

[复制链接]
发表于 2008-7-31 09:42:00 | 显示全部楼层 |阅读模式

当DSP的应用程序从FLASH ROM引导时,目标板都有一个自动的引导程序。例如,对于TMS320C6x1x系列,目标板的自动引导程序会在系统上电时将FLASH ROM的前1K空间的内容复制以片内内存自0x00开始的地址空间,并从0x00地址处开始运行。因为需要搬到内存中运行的应用程序的向量表、初始化段等往往超过1K大小,为了能在系统上电时自动引导应用程序运行,就需要在引导的1K代码中包括自定义的引导代码,以将额外需要的初始化代码段和数据段复制到内存中运行。

将FLASH ROM的数据复制到IRAM(内部RAM)中,有两种方式:一种是直接存储器访问(DMA),它是在没有CPU参与的情况下完成映射存储空间的数据搬移;另一种是利用CPU直接搬移数据。QDMA是快速的DMA,不需要CPU参与数据传输,只需根据要传递内容的信息设置QDMA的相应寄存器即可。用CPU直接搬移数据也有两种方式:一种是是不用流水方式,另一种是采用软件流水方式。

在C6000的汇编中,不同类型指令有不同数目的执行节拍。执行节拍在数量上等于该指令在执行级所需要的时钟周期。对于所用到的读取指令ldw的存储指令stw,分别完成从存储到通用寄存器的数据搬移和从通用寄存器到存储器的数据搬移。读取指令ldw需要执行的步骤为:计算地址、地址送内存、访问内存、数据送CPU、数据写寄存器,即执行节拍数为5;而存储指令stw,执行节拍数为3,需要执行的步骤为ldw的前三步。表1给出了软件流水前后数据搬移间隔编排的比较表。

由表1可见,要将FLASH ROM中的一个数据搬移到IRAM中,需要从FLASH ROM中读取该数据到通用寄存器(ldw),再从通用寄存器中将其读到IRAM(指令stw)。在软件流水优化以前,需要至少8个指令周期。采用软件流水优化以后,根据指令的特点,第0到第4这5个指令周期可连续续5个数到通用寄存器,从第5到第9这5个指令周期再顺序地将读入通用寄存器的上述5个数读出到IRAM。于是,在10个指令周期内,可完成5个数据的搬移,从而使搬移周期下降到了两个指令周期,提高了CPU的运行效率。

阿库

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|手机版|PCB设计论坛|EDA论坛|PCB论坛网 ( 沪ICP备05006956号-1 )

GMT+8, 2024-6-4 11:31 , Processed in 0.134932 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表