龙芯税控SoC中Bootloader的设计与分析

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:ccache
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文介绍了龙芯税控SoC中Bootloader的设计过程,并详细分析了Bootloader中关于外部中断(IRQ)处理的详细过程。
  关键词:引导程序;龙芯;SoC;嵌入式系统;uCOS-II
  
  前言
  
  Bootloader是系统加电运行的第一段软件代码。在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由Bootloader来完成。Bootloader是底层硬件和上层应用软件之间的一个中间件软件。它创建内核需要的一些信息并将这些信息通过相关机制传递给内核,从而将系统的软硬件环境带到一个合适的状态。同时还提供基本输入、输出系统监控程序功能,还可具有一定的调试功能。
  随着大规模集成电路的发展和现在工艺的进步,片上系统SoC逐渐成为主流的芯片设计形态。龙芯税控SoC系统软件框架包括以下几个主要部分:工具链、模拟调试环境、仿真环境、Bootloader、操作系统以及应用程序。本文介绍了龙芯税控SoC软件中Bootloader的设计。
  
  开发环境
  
  Godson-1处理器
  Godson-1是由中科院计算所研制出的一款兼顾通用和嵌入式应用需求的微处理器,是第一款我国自主研发的通用微处理器。龙芯一号实现了MIPS Ⅲ指令系统的32位模式,支持4GB内存寻址,主频工作在200MHz-266MHz,芯片内部16KB的缓存,使用PQFP封装技术。目前,北京龙芯集成电路设计公司推出的网络计算机以及一系列的解决方案就是基于这款处理器的。
  
  uCOS-Ⅱ
  uCOS-Ⅱ是一款免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。uCOS-II的前身是uCOS,是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。用户只要有标准的ANSI的C交叉编译器,有汇编器、连接器等软件工具,就可以将uCOS-Ⅱ嵌入到开发的产品中。uCOS-II具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB。uCOS-Ⅱ已经移植到了几乎所有知名的CPU上。但由于uCOS-Ⅱ良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。uCOS-Ⅱ目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量、邮箱、消息队列、内存管理、中断管理等。目前,uCOS-Ⅱ已被广泛的应用于照相机,医疗器械,音响设备,发动机控制,高速公路电话系统,自动提款机等产品中。
  嵌入式平台很少能给开发者提供完整的工具链,大部分软件设计工作在其他宿主机器上完成,常用的工具链是与gcc相关的编译工具。笔者所开发的Bootloader就是应用了gcc的编译工具编译和调试的。
  
  Bootloader的设计分析
  Bootloader的操作模式 大多数Bootloader都包含两种不同的操作模式:
  (1)启动加载(Bootloading)模式:也称为“自主”模式。即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。
  (2)下载(Downloading)模式:在这种模式下,目标机上的Bootloader将通过串口或网络连接等通信手段从主机下载内核映像和根文件系统映像等。然后保存到目标机上的FLASH类固态存储设备中。Bootloader的这种模式通常在系统初次安装和更新时被使用,工作于这种模式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。在我们的Bootloader设计中我们同时支持这两种工作模式,采用的方法是:一开始启动时处于正常的启动加载模式,但并不立即启动进入uCOS-Ⅱ内核.而是提示延时5秒,等待终端用户如果按下某一特定按键,则切换到下载模式,否则继续启动uCOS-Ⅱ内核。
  
  Bootloader的启动及初始化
  龙芯税控SoC的硬件模块是可配置的。Bootloader分为stage 1和stage2两大部分。依赖于CPU体系结构的代码,通常都放在stagel中,而且在这一部分,我们直接对处理器内核和硬件控制器进行编程,这部分用MIPS汇编来实现。而stage2则用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。
  Bootloader的stage 1
  这部分代码必须首先完成一些基本的硬件初始化,为stage2的执行以及随后的kernel的执行准备好一些基本的硬件环境。Bootloader的stage1的内容包括:定义程序人口点;设置异常向量表;初始化存储系统(包括地址重映射);初始化有特殊要求的端口,设备;初始化用户程序的执行环境;初始化堆栈指针寄存器,必要时改变处理器的模式;设置FIQ/IRQ中断处理程序人口;进入C程序。
  在整个Bootloader的初始化过程中都不必响应中断,因此首先禁止系统的中断,然后程序设置CPU的速度和时钟频率,设置CPU内部指令数据cache,DRAM初始化,DRAM初始化完成后即可拷贝ROM中的代码到DRAM中,然后内存重映射,程序开始进入DRAM中执行,然后再初始化一些用户有特殊要求的端口、设备,比如LCD或串口等,可以通过点亮LCD,或者向串口打印一些调试信息,以此表明系统的状态是正常还是出错。然后准备进入C语言代码:拷贝Bootloader的RW/RO段到相应的运行位置,初始化zI段,初始化系统堆栈,设置FIQ/IRQ中断处理程序人口,设置完成就可以进入到C代码了。
  Bootloader的stage2
  为了让程序跳入C语言的“start_bios”函数。我们采用直接将pc指针指向“start_bios”函数的方法,实现代码如下:
  1a   a0,start_bios  #把pc指针指向
      函数入口,然后跳转
  jr   a0
  nop
  进入start_bios函数后即可以开始本阶段stage2的初始化任务,这包括:
  (1)初始化至少一个串口,以便和终端用户进行交互;
  (2)初始化计时器,延时并提示启动模式的选择,如果进入启动加载模式,则系统控制权交给uCOS-II操作系统,Bootloader任务完成,否则程序继续向下执行;
  (3)初始化网络,包括网络基本信息配置等;
  (5)初始化系统配备的其他外设;
  (6)初始化Flash:检测是否支持该Flash芯片(可通过比较Flash ID的方式实现);   (7)初始化中断,包括屏蔽中断,清除中断悬挂标志,初始化中断向量表,注册需要的中断处理函数等;
  (8)初始化命令控制台,等待用户键人命令。设备初始化完成后,可以通过串口输出一些打印信息,如程序名字字符串、版本号等。
  Bootloader的启动过程如图1所示。
  
  关键技术-异常及中断处理
  
  


  龙芯1支持32种例外模式,而其中又尤以外部中断模式(IRQ)应用较为广泛,其异常处理过程也较为复杂。本文下面将以IRQ异常处理为例,说明一个通用的中断使用及处理过程。Godson-1处理器通用的中断处理过程大致可以分为以下3步:
  (1)异常响应:获取异常处理程序人口地址,并进入异常处理程序;
  (2)现场保护及恢复:即进人中断服务程序(ISR)前后中断现场的保护和恢复;
  (3)中断服务:计算中断源索引号,清中断,然后进入中断服务。
  本例中IRQ异常处理相关代码如下:do_IRQ():
  sub sp,sp,#4; #预留一个字的空间用来保存PC的跳转地址
  sb a0,(sp); #保存下面中断处理中使用到的aO寄存器
  la a0,ExceptHandler;#将保存有异常处理函数人口的地址读入a0
  la a0,(a0); #将异常处理函数人口读入a0
  sw a0,4(sp); #将异常处理函数人口存人堆栈中刚才预留的空间
  jar a0 #跳入异常处理函数
  SAVE_ALL  #宏,用于保存例外现场
  CLI #关中断
  中断响应入口:
  mfc0 t0,CP0_CAUSE #获得要处理的中断向量
  mfc0 t1,CP0_STATUS #获得被激
  活的中断
  and t0,t1 #分离被允许的中断
  andi t0,0xff00 #获取中断号
  beqz t0,3f #判断外部是否产生突发中断
  andi a0,t0,CAUSEF_IP7
  beq a0,zero,1f
  move a0,sp
  jal ite_timer_interrupt #处理时间中断
  RET_FROM_IRQ #宏,中断返回
  1:andi a0,t0,CAUSEF_IP2 #该平台北桥只支持一个中断源
  beq a0,zero,3f
  move a0,sp
  jal it8172_hw0_irqdispatch #跳入北桥中断处理程序
  CLI
  RET_FROM_IRQ
  3:move a0,sp
  jal mips_spurious_interrupt #处理突发中断
  nop
  RET_FROM_IRQ #中断返回北桥中断处理程序:void it8172_hw0_irqdispatch(struct pt_regs*regs)if(intstatus& 0x4)
  { /*PCI中断*/
  }else if(intstatus & 0x1)
  {
  /*内部总线终端*/
  }Else if(intstatus & 0x2)
  {
  /*LPC总线中断*/
  }Irq+=1T8172 LPC_IRQ_BASE; /*计算中断号*/
  do_IRQ(irq,regs);/*北桥中断处理*/}
  从上面的代码可以得出,接收到IRQ中断请求后程序的执行流程是:
  (1)读取CPU CP0协处理器的Cause和Status寄存器,跳入对应的中断处理程序;
  (2)计算来自外部中断的中断向量号;
  (3)进入中断处理do_IRQ()
  (4)由do_IRQ()最后进入中断服务程序,PET_FROM_IRQ完成中断处理任务后返回。
  
  结语
  
  Bootloader与具体的硬件环境和操作系统是紧密联系在一起,针对某个CPU芯片编写Bootloader代码,首先要了解该CPU的内核结构、指令系统,其次是具体芯片的结构和各种片上资源,以及所采用的操作系统。本文给出的Bootloader代码已经在龙芯税控SoC中上运行并测试通过。该Bootloader能够正常引导及更新uCOS-II内核,系统运行稳定,完全实现了设计目的,达到了嵌入式系统的设计要求。
  
  参考文献:
  1.中国科学院计算技术研究所CPU研制组.Godson-1微处理器用户手册(版本1.0).2002.9.10
  2.詹荣开:嵌入式系统Bootloader技术内幕
  3.郑爱玲,张宏峰,孙荷琨:嵌入式系统的内核载入过程浅析,微型机与应用,2001,(11),59-60
  注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
其他文献
引言    ADS8361是一款采样速率为500kSPS的16位双路模数转换器(ADC),该转换器具有4个全差分输入通道,两两一对,以实现同步高速信号采集。采样保持放大器的输入端是全差分的,此外,ADC的输入端也保持为全差分。这使该ADC具有卓越的共模抑制能力:在50kHz时为80dB,这在高噪声环境下非常重要。  新型MSP430F2013等MSP430器件具有通用串行接口(USI),因而可用于
期刊
2010年全球MEMS市场将达到950亿美元    根据SEMI发布的报告显示,2005年全球MEMS相关产品(包括汽车安全气囊系统,显示系统等)市场总值为480亿美元,至2010年将达到950亿美元。  随着在消费电子领域应用的不断扩大,MEMS器件市场将以13%的复合年平均增长率(CAGR),从2005年的53亿美元增长到2010年的99亿美元。MEMS器件被定义为已完成第一级封装的芯片级产品
期刊
美国模拟器件公司(AnalogDevices,ADI)最近推出两款用于全球微波接入互通(WiMAX)终端的射频(RF)收发器,该公司称新器件推出将有助于降低成本,推动宽带无线接人的大规模部署。基于IEEE802.16标准,WiMAX终端提供无线宽带连接,是诸如DSL和电缆调制等有线连接的低成本选择。ADI公司介绍说,通过先进的数据转换和RF信号处理专长,这两款新的收发器集成了高性能片内数据转换器并
期刊
杰尔系统近日推出了低成本入门级音乐手机平台-TrueNTRY X125。该公司介绍说,该平台不仅能帮助手机厂商迅速开发出具有CD音质的低成本入门级音乐手机,还具有入门机手机市场最快的处理速度,而其材料清单成本仅为30美元。  音乐播放逐渐成为继和弦、彩屏、拍照等功能后最受消费者关注的手机功能。据统计,音乐手机在中国的市场份额从2005年的6.5%快速上升到现在的30%以上。目前市场上具有优秀音乐播
期刊
一直等到设计周期结束再确保符合RoHS,对于当前生产中设计或许是可以接受的,但对于新设计,公司必须从设计阶段一开始一在选用元件时就考虑RollS的符合性。当我们与不同的公司进行合作来帮助他们解决RoHS的符合性问题时,我们发现许多公司普遍存在大量问题和相关问题。  首先,存在一个普遍的误解:RollS的符合性是一个制造问题。“设计完成了;现在全部所需的就是选择符合RoHS的元件并使用它”。用符合R
期刊
7月1日,欧盟开始对所有在欧盟范围内销售、生产的电子、电气产品强制执行《关于在电子电器设备中禁止使用某些有害物质指令》(RollS指令)。继欧盟RoHS指令的正式实施,由政府七部委联合颁布的被称为“中国RoHS”的《电子信息产品污染控制管理办法》(简称管理办法)也将于2007年3月1日生效。在9月7日召开的“2006国际电子环保标准与循环经济论坛”上,信息产业部官员指出,作为中国的电子环保标准的出
期刊
向RoHS(《关于在电气电子设备中禁止使用  某些有害物质指令》)转换看起来是值得称颂的现代电子制造界的大事。对于符合RollS的新型产品的需求不断地困扰着元件供应商,而同时另外一些用户则要求继续供应传统锡/铅型元件。对于那些未直接受到RoHS影响的电子制造商,元件供应链的惯性肯定要影响到锡/铅元件的可用性,同时元件供应商需要减少不符合RollS的产品的库存;因此,向无铅型转换的时间期限日益加快。
期刊
近年来,随着网络系统性能日益提高,网络复杂程度亦大幅提高,网络设备厂商开始寻找能帮助他们简化系统设计、构建智能应用协议网络的高度集成的内容处理解决方案。作为网络通信解决方案的主要推动者之一,飞思卡尔半导体致力于构建一个让所有人都能使用高性能安全网络的世界。为了帮助实现这一构想,飞思卡尔已经开发出一个创新的多核处理器架构,该架构可以处理控制数据平面、应用感知内容处理、深度包检测、模式匹配、网络许可控
期刊
德州仪器(TI)宣布推出五款基于新一代UR8小区网关(RG)的xDSL解决方案。该系列解决方案基于高级多媒体网关处理器,使制造商可灵活地根据多种家庭网络选项,并针对所有ADSL与VDSL2标准的增强型语音性能与高级视频服务的多种功能进行RG设计。  ABIResearch公司的数字家庭部门总监Michael Wolf指出:“制造商要求的不仅是能推出新一代服务的功能强人的平台,还需要为产品的差异化提
期刊
最近德州仪器(TI)在北京举行的无线通信高峰会上宣布推出一款全新OMAP-Vox单芯片解决方案-“eCosto”,该款最新单芯片平台完美结合了TI多项成功技术,如在已量产的“LoCosto”低成本平台上采用的TI创新DRP技术,以及在TIOMAP-Vox系列中实现量产的OMAPV1030上采用的多媒体技术。该公司称,全新“eCosto”平台系列的首款产品OMAPV1035单芯片解决方案将采用65纳
期刊