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

发布者:DazzlingSmile最新更新时间:2012-05-22 来源: 电子产品世界 关键字:引导程序  SoC  嵌入式系统  uCOS-II 手机看文章 扫描二维码
随时随地手机看文章

前言

Bootloader是系统加电运行的第一段软件代码。在嵌入式系统[2]中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由Bootloader来完成。Bootloader是底层硬件和上层应用软件之间的一个中间件软件。它创建内核需要的一些信息并将这些信息通过相关机制传递给内核,从而将系统的软硬件环境带到一个合适的状态。同时还提供基本输入、输出系统监控程序功能,还可具有一定的调试功能。

随着大规模集成电路的发展和现在工艺的进步,片上系统SoC逐渐成为主流的芯片设计形态。龙芯税控 SoC系统软件框架包括以下几个主要部分:工具链、模拟调试环境、仿真环境、Bootloader、操作系统以及应用程序。本文介绍了龙芯税控SoC软件中Bootloader的设计。

开发环境

Godson-1处理器
Godson-1是由中科院计算所研制出的一款兼顾通用和嵌入式应用需求的微处理器,是第一款我国自主研发的通用微处理器。龙芯一号实现了MIPS III指令系统的32位模式,支持4GB内存寻址,主频工作在200MHz-266MHz,芯片内部16KB的缓存,使用PQFP封装技术。目前,北京龙芯集成电路设计公司推出的网络计算机以及一系列的解决方案就是基于这款处理器的。

uCOS-II
uCOS-II是一款免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。uCOS-II 的前身是uCOS,是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将uCOS-II嵌人到开发的产品中。

uCOS -II具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB 。uCOS-II 已经移植到了几乎所有知名的CPU 上。但由于uCOS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。uCOS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量、邮箱、消息队列、内存管理、中断管理等。目前,uCOS-II已被广泛的应用于照相机,医疗器械,音响设备,发动机控制,高速公路电话系统,自动提款机等产品中。

嵌入式平台很少能给开发者提供完整的工具链,大部分软件设计工作在其他宿主机器上完成,常用的工具链是与gcc相关的编译工具。笔者所开发的Bootloader就是应用了gcc的编译工具编译和调试的。

Bootloader的设计分析

Bootloader的操作模式
大多数Bootloader都包含两种不同的操作模式:

(1)启动加载(Boot loading)模式:也称为“自主”模式。即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM 中运行,整个过程并没有用户的介入。

(2)下载(Downloading)模式:在这种模式下,目标机上的Bootloader将通过串口或网络连接等通信手段从主机下载内核映像和根文件系统映像等。然后保存到目标机上的FLASH类固态存储设备中。

Bootloader 的这种模式通常在系统初次安装和更新时被使用,工作于这种模式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。在我们的 Bootloader设计中我们同时支持这两种工作模式,采用的方法是:一开始启动时处于正常的启动加载模式,但并不立即启动进入uCOS-II内核.而是提示延时5秒,等待终端用户如果按下某一特定按键,则切换到下载模式,否则继续启动uCOS-II内核。

Bootloader的启动及初始化

龙芯税控SoC的硬件模块是可配置的。Bootloader分为stage 1和stage2两大部分。依赖于CPU体系结构的代码,通常都放在stage1中,而且在这一部分,我们直接对处理器内核和硬件控制器进行编程,这部分用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”函数的方法,实现代码如下:

la  a0, start_bios       #把pc指针指向
    函数入口,然后跳转
jr  a0
nop

进入start_bios函数后即可以开始本阶段stage2的初始化任务,这包括:
(1)初始化至少一个串口,以便和终端用户进行交互;
(2)初始化计时器,延时并提示启动模式的选择,如果进入启动加载模式,则系统控制权交给uCOS-II操作系统,Bootloader任务完成,否则程序继续向下执行;
(3)初始化网络,包括网络基本信息配置等;
(5)初始化系统配备的其他外设;
(6)初始化Flash:检测是否支持该Flash芯片(可通过比较Flash ID的方式实现);
(7)初始化中断,包括屏蔽中断,清除中断悬挂标志,初始化中断向量表,注册需要的中断处理函数等;
(8)初始化命令控制台,等待用户键人命令。设备初始化完成后,可以通过串口输出一些打印信息,如程序名字字符串、版本号等。[page]

Bootloader的启动过程[3]如图1所示。

图1  Bootloader启动过程

关键技术—异常及中断处理

龙芯1支持32种例外模式,而其中又尤以外部中断模式(IRQ)应用较为广泛,其异常处理过程也较为复杂。本文下面将以IRQ异常处理为例,说明一个通用的中断使用及处理过程。Godson-1处理器通用的中断处理过程大致可以分为以下3步:

(1)异常响应:获取异常处理程序人口地址,并进入异常处理程序;
(2)现场保护及恢复:即进人中断服务程序(ISR)前后中断现场的保护和恢复;
(3)中断服务:计算中断源索引号,清中断,然后进入中断服务。

本例中IRQ异常处理相关代码如下:do_IRQ():

sub    sp,sp,#4 ;       #预留一个字的空间
      用来保存PC的跳转地址
sb     a0,(sp) ;         #保存下面中断处理中
      使用到的a0寄存器
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+= IT8172_LPC_IRQ_BASE; /*计算中
  断号*/
do_IRQ(irq, regs);              /*北桥中断处理*/
}

从上面的代码可以得出,接收到IRQ中断请求后程序的执行流程是:

(1)读取CPU CP0协处理器的Cause和Status寄存器,跳入对应的中断处理程序;
(2)计算来自外部中断的中断向量号;
(3)进入中断处理do_IRQ()
(4)由do_IRQ()最后进入中断服务程序,RET_FROM_IRQ完成中断处理任务后返回。

结语

Bootloader与具体的硬件环境和操作系统是紧密联系在一起,针对某个CPU芯片编写Bootloader代码,首先要了解该CPU的内核结构、指令系统,其次是具体芯片的结构和各种片上资源,以及所采用的操作系统。本文给出的 Bootloader代码已经在龙芯税控SoC中上运行并测试通过。该Bootloader能够正常引导及更新uCOS-II内核,系统运行稳定,完全实现了设计目的,达到了嵌入式系统的设计要求。

参考文献:
1.  中国科学院计算技术研究所CPU研制组,Godson-1微处理器用户手册(版本1.0),2002.9.10
2.  詹荣开:嵌入式系统Bootloader技术内幕
3.  郑爱玲,张宏峰,孙荷琨:嵌入式系统的内核载入过程浅析,微型机与应用,200l,(I1),59—60

关键字:引导程序  SoC  嵌入式系统  uCOS-II 引用地址:龙芯税控SoC中Bootloader的设计与分析

上一篇:高效率嵌入式程序开发
下一篇:μC/OS—II的嵌入式串口通信模块设计

推荐阅读最新更新时间:2024-03-16 13:00

基于Linux下USB主机接口设计
  由于人们对数字形式信息的需求量越来越大,数据通信及其应用技术受到越来越广泛的关注和应用。随着技术的发展。USB通信正向高速、方便快捷、稳定可靠的方向发展。目前,大多数USB设备都是需要与PC机相连进行通信,而USB设备之间的通信则无法实现。而对于一些处在特殊环境下的称重设备的数据传输和系统升级,PC机很不方便实现,因此迫切要求开发出能够识别USB设备的主机端口。这样使用U盘等设备就能实现数据传输。本系统设计在AT91SAM7X256控制器的基础上,增加了主机端口,适用于工矿企业中称重设备的数据更新和系统升级。   1系统整体方案   USB(UniversalSerialBus)即通用串行总线,提供一种兼容不同速度的、可扩
[工业控制]
用IAR EWARM开发嵌入式系统时目标代码的链接与定位
1 数据段和代码段的作用 IAR C/C-+编译器是一种具有世界先进水平的标准C/C-+编译器,支持符合ANSI C标准的C或C++编程语言。源程序经编译后生成包含数据或代码存储器逻辑映像的数据段和代码段。每个段都有一个段名和一个表示其存储器空间的段类型。段类型CODE表示ROM中的执行代码,段类型CONST表示ROM中的数据,段类型DATA表示RAM中的数据。段名可与段类型相同,但其意义不一样,实际使用时不能混淆。表l所列为IAR C/C++编译器所使用的各种段、段类型及其读/写属性说明。 1.1 数据段 数据位于DATA段中,包括静态(static)存储器、堆栈(stack)、堆(heap)以及已定位的数据。DATA段可
[单片机]
用IAR EWARM开发<font color='red'>嵌入式系统</font>时目标代码的链接与定位
8位微控制器在SoC中的应用
过去15年来,许多人都曾预测8位微控制器即将退出舞台,然而这却是电子产业失误最大的预测之一;事实上,虽然16和32位产品已极为常见,8位微控制器的需求仍继续成长,总值约达到今日100亿美元全球微控制器市场的一半。推动8位市场快速发展及成长的动力主要来自于8位产品效能的大幅提升,特别是以8051系列为基础的产品,其它原因还包括芯片内建功能的加强以及不断缩小的封装体积。今天,这类组件已能提供高达100MIPS的产出,这是8位微控制器在短短几年前还无法想象的事情。然而重要的不仅是原始运算效能,真实世界是个模拟世界,因此系统也需要模拟和混合讯号功能,而且最好内建于芯片中。与外在世界的通讯也是问题,核心处理效能需要与其相称的通讯能力,使它能够
[单片机]
8位微控制器在<font color='red'>SoC</font>中的应用
Nordic nRF52805 SoC为深圳云里物里提供强大无线连接能力
Nordic Semiconductor宣布位于深圳的智能设备和物联网解决方案开发厂商深圳云里物里科技股份有限公司已经选择Nordic nRF52系列的最新产品nRF52805蓝牙5.2/低功耗蓝牙 (Bluetooth® Low Energy /Bluetooth LE) 芯片级系统 (SoC)为其MS46SF11模块提供处理能力和无线连接。 nRF52805 SoC采用尺寸仅为2.48 x 2.46mm的晶圆级芯片规模封装(WLCSP),支持成本和空间受限的无线设计,使得MS46SF11模块能够采用紧凑的15.8 x 12 x 2mm尺寸供货,其中包括PCB迹线天线。这款模块旨在用于信标、一次性医疗设备、传感器、手写笔和演
[物联网]
Nordic nRF52805 <font color='red'>SoC</font>为深圳云里物里提供强大无线连接能力
《谈学单片机有前途还是嵌入式系统有前途》2
  上个星期小编整理的吴坚鸿回复,发烧友们都反馈说很有感触,吴坚鸿对于大家这种热烈的反应也觉得很感动。但是在小编和他联系中,他表示平时太忙了,所以不能保证可以长期在发烧友上发表文章。但是他也在论坛的回复中表示,会抽时间和大家分享他多年的单片机经验!小编接着整理吴坚鸿的回复,发烧友也可以去他的原文帖子上回复哦~~也欢迎大家和吴坚鸿一样踊跃的发言,好的文章小编会努力帮你推荐的!吴坚鸿凭借一篇文章就已经成为发烧友上的红人了,各位加油咯!   楼主你好,看了你的这篇帖子真是茅塞顿开,楼主现在的状态真的是我理想中的那种生活。当成艺术来做比较赞同,看到自己编的程序和作品由衷觉得一种美感。赚钱是信念,工作以来一直想着单干。但是事实往往不
[单片机]
《谈学单片机有前途还是<font color='red'>嵌入式系统</font>有前途》2
Rainus采用Silicon Labs无线SoC提升智能商业ESL体验
我们最近有机会与Rainus America的副总裁Kevin Kim进行了交谈,Rainus America是一家总部位于韩国的公司,专注于利用数字技术提升零售体验。该公司的智能零售解决方案允许零售商实时更新价格,最大限度地提高零售商的效率,并通过个性化和方便的数字解决方案简化客户的购物体验。客户还可以在店内使用Rainus的触摸显示技术。在下面的采访中,Kevin分享了公司产品的见解,以及他对Rainus和行业未来几年增长的预期。 Rainus成立多久了? Rainus于2014年在韩国城南(Seong-Nam)成立。我们是世界上发展最快的公司之一,专门从事电子货架标签(ESL)技术。城南位于首尔以南约5英里处,在
[物联网]
Rainus采用Silicon Labs无线<font color='red'>SoC</font>提升智能商业ESL体验
三菱电机携17款TFT液晶模块亮相国际嵌入式系统
三菱电机将携17款彩色工业用TFT液晶模块产品,亮相于8月24日至26日在深圳举行的第五届深圳国际嵌入式系统展(Embedded Expo 2016)。三菱电机将围绕医疗设备、工程机械、电梯、ATM/POS机、充电桩和船舶六大应用领域为客户推介优质产品。 在本次展会上,三菱电机将重点推介为工程机械而设计的坚固型系列产品、为影视和手持设备提供的小型轻薄型系列产品、以及能满足户外使用的高性能触摸屏等新产品。 耐振动及耐温度TFT液晶屏适合工程机械 在工程机械应用范围中,由于建筑机械及农业机械均在恶劣环境下工作,其显示器所采用的液晶模块,必须能承受超强劲的机械性振动,以及抵受严酷的室外气温,三菱电机为此特别设计了坚固型的7
[嵌入式]
三菱电机携17款TFT液晶模块亮相国际<font color='red'>嵌入式系统</font>展
基于RISC-SOC微电容测量模块的研制
  0引言   电容传感器广泛应用于工业、军事等领域。因而对电容特别是对微小电容的精确测量始终是一个很重要的内容。目前大部分测量方法大部分集成化水平低,有的精度不高。电桥法利用电桥平衡原理测量电容,测量结果受桥臂电容性能影响较大。振荡法电路结构简单,但对于待测电容在 100PF以下时,板间的内电容常会污染测量结果;另外,振荡法测电容的抗干扰能力差。本文提出的容抗匹配法是将待测电容接入容抗匹配电路,待测电容在高品质的交流激励下,呈现固定的容抗。通过容抗-电压转换电路,即可得与电容成比例的电压值。经 ADC采样后,可计算电容值。实验结果表明,该方法测电容可以保证测量精度,同时抗干扰能力强。   1 微电容测量模块基本原理   微
[测试测量]
基于RISC-<font color='red'>SOC</font>微电容测量模块的研制
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved