微处理器的二次引导加载方案

引 言
在嵌入式系统中,微处理器的运行程序通常保存在其内部或外部非易失性存储器(如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中,同样也可以利用在其他类似的高速微处理器系统引导加载方案中。

这次真的来了?华为p10:5.1英寸+1080P显示屏+麒麟960处理器
为保障数据安全该如何提升系统的安全性
PI InnoSwitch3专场线上研讨会即将开始
医生专属AI聊天机器人将推广到亚洲
基于国产FRAM的微控制器为便携式电子提高安全性低功耗
微处理器的二次引导加载方案
模数转换及稳压电路图
中国制造的大疆扬眉吐气:销售额超百亿 八成来自国外
带你认识常见电子元件
Shokz韶音最新发布运动耳机旗舰款OpenRun Pro
全面剖析屏下指纹识别技术详解
干式试验变压器主要有哪几个特点?
解读主流品牌手机相机背后的图像处理器
中国移动公布了新一轮11省网优集采中标候选人结果
真我GT2系列怎么样,除了大师版的外观设计还有其他亮点吗
中国手机企业与高通结成5G领航计划已经比苹果有了先发优势
工业机器人的组成、分类及其工作原理分别是什么?
5G商用牌照已发放 能否为智能家居带来新蓝海?
IBM联手百洋智能科技,推出Watson肿瘤解决方案落户平安好医生
荣耀9什么时候出?荣耀9配置价格曝光:麒麟960+无线充电,仅2000元左右