深圳pcb抄板微处理器的二次引导加载方案
不能满足系统运行时程序代码直接读取的要求,需采用引导加载(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位并行加载方式中存在的加载程序容量有限的问题,pcb抄板并行二次加载方案中利用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的读入。