引 言
在嵌入式系统中,微处理器的运行程序通常保存在其内部或外部非易失性存储器(如EPROM、EEPROM或Flash)中。对中低速的微处理器来说,系统运行时程序可直接从非易失性存储器读取并解释执行;对高速微处理器来说,非易失性存储器的读取速度较低,不能满足系统运行时程序代码直接读取的要求,需采用引导加载(Boot-load)方式将程序代码从低速非易失性存储器中加载到高速的存储器(如SRAM或DRAM)中,系统运行时直接从高速存储器中读取程序代码,实现系统的高速运行。微处理器用一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。微处理器与传统的中央处理器相比,具有体积小,重量轻和容易模块化等优点。微处理器的基本组成部分有:寄存器堆、运算器、时序控制电路,以及数据和地址总线。微处理器能完成取指令、执行指令,以及与外界存储器和逻辑部件交换信息等操作,是微型计算机的运算控制部分。它可与存储器和外围电路芯片组成微型计算机。
1 DSP上电加载分析
TMS320VC5509(简称“5509”)是TI公司的一款高性能、低功耗的定点数字信号处理芯片。5509片内具有128K字高速静态RAM,内部只读ROM中固化了引导加载程序(Bootloader)。5509引导表格式如图1所示。
从引导表的格式可以看出,引导加载程序首先读入双字程序入口地址,然后读入需要修改的寄存器数,接着是寄存器地址以及赋值,再读入段字节数、段起始地址以及段内容,引导表以读入双字的O值为结束,读完引导表后跳转到加载程序入口执行。
下面分别针对固化引导程序中的并行加载方式(16位)以及串行加载方式(16位SPI接口EEPROM),来分析DSP上电加载可能遇到的问题。
对16位并行加载方式,默认从片外扩展地址0x200000(5509对应片选引脚输出为CEl)开始读入引导表,由于TQFP封装的5509内部24根地址线只引出了14根,因此并行加载方式只能寻址外部214=16K字存储空间,对超过16K字长的引导表,引导程序无法加载。
对16位SPI接口的EEPROM串行加载方式,5509默认利用其同步串口0(McBSP0)来模拟SPI接口,引导程序固定收发时钟为DSP时钟频率的244分频。由于引导加载过程中,5509时钟频率等于外部晶振频率,因此对于24MHz时钟频率,加载频率约为100kHz,对于一段仅10K字长的引导程序,完成加载需要244×lO×103×16/24×106≈1.63s。
针对以上两种加载方式存在的问题,提出了利用二次引导加载方式来解决的办法。
二次引导加载是采用引导加载的原理,在上电复位时,DSP内部固化的引导程序将一个自编的引导程序加载到片内,然后通过二次引导加载程序将最终需要执行的程序加载到DSP中,从而实现更加灵活的程序加载。
2 并行方式下的二次加载设计
针对16位并行加载方式中存在的加载程序容量有限的问题,并行二次加载方案中利用DSP的GPIO口来扩展地址线,解决大于16K字程序的加载问题。这里使用两片铁电存储器FM18L08(32K×8位)作为32K字外扩程序存储器,55509地址线A[l3:1]与铁电存储器地址线A[12:0]相连,扩展5509的通用I/O口GPIO[7:6],用作高位地址线与铁电存储器地址线A[14:1 3]相连。在二次引导加载程序中,利用软件控制GPIO[7:6]输出高低电平,来达到控制高位地址线的目的,电路如图2所示。General Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器,利用工业标准I2C、SMBus?或SPI?接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。每个GPIO端口可通过软件分别配置成输入或输出。Maxim的GPIO产品线包括8端口至28端口的GPIO,提供推挽式输出或漏极开路输出。提供微型3mm x 3mm QFN封装。
在程序加载过程中,由于并行二次引导加载程序对引导表的读入方式与固化引导程序相同(不同的地方,只是在于如何寻址大于16K字程序地址),因此省略了流程图中具体读引导表的步骤。
在二次加载程序中,加载开始之后,首先设置GPIO[7:6]为00h,读入第1页数据。如果程序在计数到8K之后仍未读完,则对GPIO[7:6]修改翻页,进行下一个8K的读入。
并行二次加载程序流程如图3所示。
3 串行方式下的二次加载设计
针对串行加载存在的加载速度低的问题,采用二次加载方案,自行设定同步串口时钟分频倍数,以较快的速度完成程序的加载。加载的速度,就只受到外部SPI接口的EERPOM速度限制。通用SPI接口EEPROM(如Atmel公司的AT25256)速度一般均可达到1Mbps以上。下面以外接12MHz晶振为例,DSP内部2倍频之后,同步串口0时钟按照12分频,串行加载电路如图4所示。
串行二次加载程序中,初始化部分对DSP及其同步串口O相应控制器进行设置,使SPI接口时钟工作在2MHz。然后采用与DSP固化引导程序相同的方式,利用GPIO4以及同步串口O模拟SPI接口对EEPROM进行顺序读入。读完之后,跳转到程序入口执行。
程序流程如图5所示。
4 结论
二次加载方法克服了5509固化引导加载程序的弊端,可以根据不同的条件,实现比较灵活的加载方式。二次引导加载程序采用汇编语言编写,代码简单短小。经实际验证,以上两种二次引导加载方式均能成功加载。此方法不仅可用在5509DSP中,同样也可以利用在其他类似的高速微处理器系统引导加载方案中。
上一篇:嵌入式MIPS32 M4K处理器内核SRAM接口应用
下一篇:NXP2214实现多路韦根信号采集硬件设计
推荐阅读最新更新时间:2024-03-30 21:49
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况