基于ARM_Linux嵌入式系统引导程序的设计 (1)
基于Linux和ARM的嵌入式智能控制系统软件编程的设计与实现

作者简介:顾而立,上海交通大学自动化系,硕士研究生,上海2002240 邵惠鹤,上海交通大学自动化系,教授.博士生导师。上海2002240
55
万方数据
MicrocomputerApplicationsV01.24,No.8,2008
技术交流
微型电脑应用
2008年第24卷第8期
j=o
1
其中巧,K,也是可选择的参数。e t为当前时刻的偏差,
e川为前一时刻的偏差,T为控制周期(秒)。舻i互, 曰取5--10之间的数,此对象中,取9=6。
5小结
本设计无论在实验室还是工业上都能非常方便的达 到智能控制的功能,将软件和硬件系统结合起来,形成 真正的嵌入式产品。将是一个用途非常广泛且小巧的设 备,而且成本低廉,意义十分重大。
10)运行.,configure—qconfig local—embedded锄
——shared-system·-libjpeg-system-libpng-system-zhb-qt-gff -thread-no-qvfb—no-xft—no-ipv6--qt-mouse-lmuxtp --nO—mouse-pc—disable—sql
(下转第45页)
万方数据
MicrocomputerApplications VoL 24,No.8,2008
技术交流
微型屯脑应用
2008年第24卷第8期
为了了解和控制缺陷带来的费用,必须测量缺陷排除的 效果。对于几十行到几百行的程序,可能只引入很少的缺陷。 尽管发现和修复这些缺陷会带来一点麻烦,但通常不会花费 很长的时间。但是,对于较大型的程序,就需要很多时间来 发现和修复缺陷。在设计和编码阶段引入缺陷,当发现和排 除这些缺陷时,又需要花费更多的时间进行重新设计和重新 编码。在这段时间也会引入更多的缺陷。为了更好地解决这 个个问题,就需要减少缺陷引入率,增加缺陷排除率。为了 做到这一点,必须计算和跟踪缺陷的引入率和排除率。
基于ARMCLinux嵌入式系统启动引导的实现

基于ARM-μCLinux嵌入式系统启动引导的实现32位ARM嵌入式处理器具有高性能、低轼耗的特性,已被广泛应用于消费电子产品、无线通信和网络通信等领域。
ΜCLinux是专门为无MMU处理器设计的嵌入式操作系统,支持ARM、Motorola等微处理器。
目前国内外采用ARM- μCLinux作为嵌入式系统非常普遍。
而嵌入式系统的启动引导技术是嵌入式系统开发的一个难点。
系统启动引导的成功与否决定了应用程序的运行环境是否能正确构建,即系统启动成功是应用正确运行的前提。
常用的嵌入式系统启动方法是先通过JTAG将嵌入式操作系统内核与进Flash,再由其带的引导程序bootloader完成嵌放式系统的启动引导工作。
这种方法要借助昂贵的JTAG设备完成操作系统内核的烧写工作,并且不能方便地更新嵌入式系统中的软件平台。
本文提出一种基于ARM-μCLinux嵌入式系统的启动引导方案,不但可以通过简易的串口方便地更新嵌入式系统内的软件平台,而且成功解决了这种架构的嵌入式系统的启动、初始化、操作系统内核的固化和引导等问题。
本文简略说明ARM- μCLinux嵌入式系统的硬件平台和软件平台;描述系统引导程序bootloader的设计,阐述设计时考虑的因素和需解决的技术难点,给出一套可行的引导程序流程;针对μCLinux内核的引导程序,说明μCLinux内核的加载和初始化过程。
1 系统组成典型的ARM嵌入式系统硬件平台一般包括一个以ARM为内核的处理器、存储器和必要的外部接口与设备。
在本系统中,采用内嵌ARM7TDMI的Samsung公司的S3C4510处理器,存储器使用2MB的Flash和16MB的SDRAM,外部接口除了用于下载和通信的串口,还配备了一个以太网接口,以支持S3C4510的网络功能。
软件平台由以下部分组成:系统引导程序、嵌入式操作系统内核、文件系统。
系统引导程序通常也称为bootloader,代码量虽少,但是作用非常大,相当于PC上的BIOS,负责将操作系统内核固化到Flash中和系统初始化工作,然后将系统控制权交给操作系统。
ARM的嵌入式Linux应用程序开发设计

ARM的嵌入式Linux应用程序开发设计嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。
而嵌入式Linux系统也蓬勃发展,不仅继承了Linux 源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。
1ARM处理器及开发板在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。
据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。
而嵌入式Linux系统也蓬勃发展,不仅继承了Linux源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。
1 ARM处理器及开发板在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。
据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一商中有19家是ARM的用户。
ARM系列芯片已经被广泛的应用于移动电活、手持式计算机以及各种各样的嵌入式应用领域,成为世界上销量最大的32位微处理器。
ARM已成为业界实际的RISC芯片标准。
ARM系列处理器根据各自特点应用于不同领域。
从应用的角度上ARM芯片选择的一般原则:MMU;处理器速度;内置存储器容量;USB接口;GPIO数量;中断控制器;IIS(integrate interface ofsound)音频接口;nWAIT信号;RTC(real timeclock);LCD控制器;PWM输出等各项指标。
本文使用的是ARM9,其性能远远高过ARM7。
开发板使用的是广州斯道信息技术有限公司的开发板,中央处理器是三星公司的S3C2410。
ARM9具有以下特点:5级流水线;采用哈佛结构;高速缓存和写缓存的引入;支持MMU。
基于ARM的嵌入式设备中uCLinux系统开发.

基于ARM的嵌入式设备中uCLinux系统开发1引言信息家电和手持设备大大加速了嵌入式系统的发展,而ARM体系32位高性能、低功耗处理器和嵌入式操作系统Linux无疑成为佼佼者。
因为Linux源代码开放、免费,任何将其定制于PDA、掌上机或者便携式设备感兴趣的人都可以从因特网免费下载其内核和应用程序,并开始移植或开发,所以Linux在嵌入式开发领域得到稳步发展。
uCLinux即是目前嵌入式linux中最流行的一种,它是针对微控制领域而设计的Linux系统,其最大特征就是没有MMU(内存1 引言信息家电和手持设备大大加速了嵌入式系统的发展,而ARM体系32位高性能、低功耗处理器和嵌入式操作系统Linux无疑成为佼佼者。
因为Linux 源代码开放、免费,任何将其定制于PDA、掌上机或者便携式设备感兴趣的人都可以从因特网免费下载其内核和应用程序,并开始移植或开发,所以Linux 在嵌入式开发领域得到稳步发展。
uCLinux 即是目前嵌入式linux 中最流行的一种,它是针对微控制领域而设计的Linux系统,其最大特征就是没有MMU(内存管理单元模块),适合嵌入式系统小型化应用。
uCLinux支持多任务,支持多种文件系统,提供了对网络的强大支持,具有完整的TCP/IP协议栈,以及标准丰富的API。
由于它的很多核心代码都为没有被MMU的处理器重新编写过,对标准Linux庞大的应用程序库和驱动程序库作了删改,所以它的内核要比常规的Linux 内核小很多;uCLinux包含Linux常用的API和小于512k的内核及相关的工具,总代码只有900k左右,但同时保留了常规Linux 操作系统绝大多数的优点。
2 基于ARM的硬件平台嵌入式领域32位处理器以ARM公司的ARM核最为流行,本文以Samsung公司的ARM7TDMI芯片S3C4510为处理器开发板为硬件平台,开发板上与S3C4510相关的部分主要集成了如下器件:(2M+512k)B 的Flash,其中AT29C010A为512B作为BootLoader,一片SST49VF160为1M×16bitFlash;16MB 的DRAM,由两片4M×16bits的HY57V641620提供;16MB 的SRAM,由M-systems的新一代闪存盘DOC2000构成;Ethernet接口;ARM JTAG 接口。
嵌入式Linux系统开发—基于ARM处理器通用平台 第1章

作者:冯新宇
清华大学出版社
第1章 Linux概述与系统管理
第1节 嵌入式系统概述
什么是嵌入式系统
嵌入式系统是以应用为中心,以计算机技术为 基础,且软硬件可裁减,适应应用系统对功能、 可靠性、成本、体积、功耗有严格要求的专用计 算机系统。 1. 以应用为中心:嵌入式系统不应该独立于应用。 2. 以计算机技术为基础:计算机系统由软件和硬 件构成,嵌入式系统也不例外。
1.2嵌入式系统构架
它一般由以下几部分组成: 嵌入式微处理器 外围硬件设备 嵌入式操作系统 特定的应用程序
1.3嵌入式系统与PC的不同
1. 一般专用于特定的任务,而PC是一个通用计算机。 2. 使用多种类型的处理器和处理器体系结构。 3. 及其关注成本 4. 有实时约束 5. 使用实时多任务操作系统 6. 软件故障造成的后果比PC系统更严重 7. 大多有功耗约束 8. 经常在极端的环境下运行 9. 系统资源比PC少的多 10. 通常所有的目标代码存放在ROM中 11. 需要专用工具和方法进行开发设计 12. 嵌入式系统的数量远远超过PC
配置引导装载程序
7.网络配置
网络配置
8.防火墙配置 Red Hat Linux为增加系统安全性,提供了防 火墙保护,在此可以选择适当的安全级别。
(1)高级 (2)中级 (3)无防火墙
防火墙配置
9.设置根口令 设置根口令的窗口如图3.13所示。必须输入一 个根口令。
根口令必须至少包括6个字符,键入的口令 不会在屏幕上显示。
RPM包的名称有其特有的格式,如典型的 RPM 软 名称类似于:
liubing-1.0-1.i386.rpm 该文件名包括软件包名称“liubing”;软件的版本“1.0” 其中包括主版本号和次版本号;“i386”是软件所运行 硬件平台;最后 “rpm”做为文件的扩展名,当然代表文 件的类型为RPM包。
基于ARM+Linux的嵌入式开发

Linux环境下的编译、连接
GNU编译工具和GNU make
构建嵌入式Linux开发环境
本系统采用交叉开发环境,目标机为基于ARM
的通用电力采集终端,宿主机为运行Linux (Red Hat或Debian)的PC机,如图所示。
JTAG 目标机 COM1 网口
PC机
构建嵌入式Linux开发环境
两种模式:“启动加载”模式和“下载”模式 Flash的分区:
bootloader,kernel映像,root FS,用户数据 区 “下载”模式是针对开发的 首先通过JTAG口固化好bootloader,然后进入 “下载”模式,用串口通信方式或网口通信方 式将宿主机上的kernel映像和root FS下载到 Flash上。
基于ARM LinuБайду номын сангаас的嵌入式开发
主讲人:郑红
ARM介绍
ARM core ARM芯片生产厂家基于ARM core生产出不同
型号的ARM芯片
IP(知识产权)
ARM core ARM920T
Fabless
ARM 芯片s3c2410
设备(如PDA)开发商
电力采集终端
ARM介绍
ARM 是目前世界上应用最为广泛的嵌入式处
ARM汇编及与C语言的混合编程
在C程序中嵌入ARM汇编语句
__asm { instruction[;instruction] … [instruction] }
Boot Loader
分为stag1和stag2 在 stage1 阶段要实现的功能包括以下几个主要
的内容: 1.硬件设备初始化。 2.为加载 Boot Loader 的 stage2 准备 RAM 空 间。 3.拷贝 Boot Loader 的 stage2 到 RAM 空间中 并设置好堆栈。 4.跳转到 stage2 的 C 入口点。
基于ARM的嵌入式Linux中引导加载程序设计与移植

NO.03,2009青年科学2009-03一、引导加载程序(Bootloader)的设计与移植通常,Bootloader的实现都依赖于CPU的体系结构,要在嵌入式系统里建立一个通用的Bootloader几乎不可能,一些ARM平台可以用同一种Bootloader,但每一个特定系统的Bootloader都会有所不同。
本文介绍了一种基于ARM (S3C2410)平台的Bootloader程序的设计与移植实现。
二、Bootloader的典型结构和操作模式(一)Bootloader的典型结构通常多阶段的Bootloader能提供更为复杂的功能,以及更好的移植性,从固态存储设备上启动的Bootloader的大多都是两个阶段的启动过程。
第一阶段是在Flash上执行,主要是执行和CPU的体系结构高度相关的汇编语言代码,比如初始化内存RAM,以便把Bootloader第二阶段执行的代码重定位到RAM中。
Bootloader第二阶段执行的是C代码,完成更为复杂的任务,而且代码会有更好的可读性和可移植性。
Bootloader的第一阶段通常包括以下步骤:1.硬件设备的初始化。
2.为加载Bootloader的阶段二准备RAM空间。
3.复制Bootloader的阶段二到RAM空间中。
4.设置好堆栈。
5.跳转到阶段二的C入口点Bootloader的阶段二通常包括如下步骤:1.初始化本阶段要使用到的硬件设备。
2.检测系统内存映射.3.将kernel映像和根文件系统映像从Flash读到RAM 空间中。
4.为内核设置启动参数。
5.调用内核。
(二)Bootloader操作模式大多数Bootloader都包含两种不同的操作模式:"启动加载"模式和"下载"模式。
启动加载(Boot loading)模式:这种模式也称为"自主"模式。
也即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行。
基于ARM的嵌入式Linux系统构建.

基于ARM 的嵌入式Linux 系统构建①冷玉林钟将(重庆大学计算机学院重庆400044摘要: 详细论述了在基于ARM920T 核心的S3C2410 平台上构建嵌入式Linux 系统的过程,包括交叉开发环境的建立,引导加载程序U-Boot 、Linux操作系统内核针对特定目标平台的移植,以及根文件系统的建立等。
试验结果显示系统在目标平台上运行稳定、可靠,对其它嵌入式系统的开发具有参考意义。
关键词: 嵌入式系统; ARM; S3C2410微处理器; LinuxBuilding Embedded Linux System Based on ARMLENG Yu-Lin, ZHONG Jiang(Department of Computer Science, Chongqing University, Chongqing 400044, China Abstract: This paper discusses the process of building embedded Linux system on the ARM920T core-based S3C2410 platform, including the establishment of crossdevelopment environment, the transplanting ofU-Boot and Linux kernel to a specific target platform, and the building of root file system. The final systemproves to be stable and reliable after several testing. Also it ful to the' s help exploiting of other embeddedsystems.Keywords: embedded system; ARM; S3C2410 microprocessor; Linux1引言随着信息产业的发展和集成电路技术的进步,嵌入式系统已经广泛地应用到移动计算设备、网络设备、工控设备、信息家电和仪器仪表等领域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创
图 2 Bootloader 运行流程图
3.1 其中, Bootloader 的 Stage1 通常依次执行以下
新 主要步骤: 3.1.1 硬件设备初始化。
其 目 的 是 为 执 行 Stage2 及 随 后 的 操 作 系 统 Ker-
nel 准备好一些基本的硬件环境。
(a) 建立中断向量表, 当程序出现异常后可跳转到
- 124 - 360元 / 年 邮局订阅号: 82-946
《P LC 技术应用 200 例》
您的论文得到两院院士关注
ARM 开 发 与 应 用
CPU预留的全部 RAM 地 址空间。而是 往往只把 CPU 预 留 的 全 部 RAM 地 址 空 间 中 的 一 部 分 映 射 到 RAM 单元上, 而让剩下的那部分预留 RAM 地址空间处于 未 使 用 状 态 。 如 S3C2410 使 用 的 RAM 空 间 仅 为 0x30000000- 0x33ffffff。
Bootloader 0x00000000
图 1 Flash 中的布局
2 Bootloader 运行流程
系统加电或复位后, 所有的 CPU 通常都从某个由
己的 Bootloader。
1 系统组成
典型的 ARM 嵌入式系统硬件平台一般包括 一个 以 ARM 为内核的处理器、存储器和必要的外部接口 与设备。在本系统中, 采用内嵌 ARM920T 的 Samsung 公司 S3C2410 处理器, 工作频率 200MHz, 存储器使用 2MB 的 Nor Flash 和 64MB 的 SDRAM, 外部接口除 了 用于下载 和通信 的 串 口 , 还 配 备 有 以 太 网 接 口 、USB 接口。
关键词: Bootloader ;S3C2410;引导;嵌入式系统
中 图 分 类 号 : T P 256
文献标识码:A
重 点 阐 述 了 Boot-
Abstr act:In this paper, the concept and fuction of embedded operationg system booting programme- Bootloader is introduced. And I take loading Linux operation system kernel as an example, expatiate on every step and realizing methods of Bootloader running pro- cess particularly. Key wor ds: Bootloader 、S3C2410、Booting、Embedded system.
技
概述
在专用的嵌入式开发板上运行操作系统( 如 Lin- ux) 已经变得越来越流行, 而 Bootloader 就是为引导操 作系统内核运行的一段代码。通过它可以初始化硬件 设 备 、建 立 或 检 测 内 存 空 间 的 映 射 , 其 功 能 有 点 类 似 于 PC 机的 BIOS( 基本输入输出系统) 程序。它的主要 作用是为运行操作系统提供基本的运行环境, 并操作 系 统 的 内 核 装 载 到 存 储 器 ( RAM) 中 的 合 适 位 置 上 去
bl main b _trampoline 3.2.2 初始化本阶段要使用到的硬件设备 这通常包括: 初始化至少一个串口, 以便和终端 用户进行 I/O 输出信息; 初始化计时器等。在初始化这 些设备之前, 也 可以重新把 LED 灯 点 亮 , 以 表 明 我 们 已经进入 main()函数执行。设备初始化完成后, 可以输 出一些打印信息, 程序名字字符串、版本号等。 3.2.3 检测系统的内存映射( Memory map) 所谓内存映射 就是指在整 个 4GB 物理地址 空 间 中 有 哪 些 地 址 范 围 被 分 配 用 来 寻 址 系 统 的 RAM 单 元 。CPU 通 常 预 留 出 一 段 足 够 大 的 地 址 空 间 给 系 统 RAM, 但是在搭建具体的嵌入式系统时不一定会实现
相应子程序执行。如
b ResetAddr ;
b UndefAddr ;handler for Undefined mode 0x4
b SWI_Addr ;handler for SWI interrupt 0x8
b PreAbortAddr ;handler for PreAbort 0xC
b DataAbortAddr ;handler for DataAbort 0x10
由于 Bootloader 的实现依 赖于 CPU 的体系 结 构 , 因 此 Bootloader 功 能 的 实 现 基 本 可 分 为 Stage1 和 Stage2 两 大 部 分 , 分 别 运 行 于 系 统 的 ROM 和 RAM
刘晶晶:硕士研究生
中。依赖于 CPU 体系结构的代码, 比如设备初始化代
入式操作系统内核是嵌入式系统加电运行后的管理
术 平台, 负责实时性任务和多任务的管理。文件系统是 创 嵌入式系统软件平台占用存储量最大的一部分 , 也是
与用户开发最相关的一部分。它存储了系统配置文
新 件、系统程序、用户应用程序和必需的驱动程序。 软
件平台固化在 Flash 中, 通常分为三个区, 具体分布空 间如图 1。
b.
;reserved 0x14
b IRQ_Addr ;handler for IRQ interrupt 0x18
b FIQ_Addr ;handler for FIQ interrupt 0x1C
(b) 屏蔽所有的中断。为中断提供服务通常是操作
系统设备驱动程序的责任, 因此在 Bootloader 的执行
软件平台由以下部分组成: Bootloader、嵌入式操 作系统内核( Kernel) 、文件系统( File system) 。其中, 嵌
ห้องสมุดไป่ตู้
CPU 制造商预先安排的地址上取指 令。比如 Sansung S3C2410 CPU, 在 系 统 加 电 或 复 位 时 就 会 从 地 址 0x00000000 处读取它 的第一条指 令。基于 CPU 构 建 的嵌入式系统则通常都会有某种类型的固态存储设 备(如本例中的 FLASH)被映射到这个预先安排的地址 上, 而 Bootloader 程序一般正是被烧录或者下载到固 态存储设备的 0x00000000 地址处, 因此在系统在加电 或复位后, CPU 将会首先执行 Bootloader 程序。一个典 型简单的 Bootloader 运行流程图如图 2 所示。
等。
(e) 初始化 LED。典型地, 通过 GPIO 来驱动 LED,
其目的是表明系统的状态是正常还是出现错误。
3.1.2 为加载 Stage2 准备 RAM 空间, 拷贝 Stage2 到 RAM 中。
为了获得更快的执行速度, 通常把 Stage2 加载 到 RAM 空 间 中 来 执 行 , 因 此 必 须 为 加 载 Bootloader 的 Stage2 准备好一段可用的 RAM 空间范围。具体的地址 范围可以任意安排, 比如我们习惯将 Stage2 可执行映 像安排到 RAM 地址最 顶部 1MB 开始的 空间内执行 。 拷贝时要确定两点: Stage2 的可执行映像存放在 Flash 中的起始地址和终止地址; 以及 RAM 空间的起始地 址。
File system 0x00200000
运行。本文将以 Samsung 公司的 S3C2410 开发板为开 发平台, 具体阐述了 Bootloader 的运行原理与实现分 析。
Kernel
0x000c0000 0x00010000
Bootloader 程序与 CPU 芯片的内核结构、具体芯 片和使用的操作系统等因素有着密切关系, 因此要为 所有类型的嵌 入式开发板建 立一个通用 的 Bootloader 几乎是不可能的。尽管如此, 本文将尽量对 Bootloader 归纳出一些通用的概念, 以帮助特定用户设计实现自
3.2.4 加 载 内 核 映 像 和 根 文 件 系 统 映 像 并 从 Flash 上拷贝
规划内存占用的布局。这里包括两个方 面: (1)内 核映像所占用的内存范围; ( 2) 根文件系统所占用的 内存范围。对于内核映像, 一般将其拷贝到从 (MEM_START+0x8000) 这个基地址开始的大约 1MB 大小的内存范围内 (嵌入式 Linux 的内核一般 都不超 过 1MB)。从 MEM_START 到 MEM_START+0x8000 这 段 32KB 大小的内存之所以被空 出, 是因为 Linux 内 核要在这段内存中放置一些全局数据结构, 如: 启动 参数和内核页表等信息。而对于根文件系统映像, 则 一般将其拷贝到 MEM_START+0x0010,0000 开始的地 方。若采用 Ramdisk 作为根文 件系统映像 , 则其解压 后的大小一般为 1MB。
《嵌入式系统应用精选 200 例》
邮局订阅号: 82-946 360 元 / 年 - 123 -
ARM 开 发 与 应 用
中 文 核 心 期 刊 《 微 计 算 机 信 息 》( 嵌 入 式 与 S OC )2006 年 第 22 卷 第 2-2 期
码 等 , 通 常 都 放 在 Stage1 中 , 基 本 都 用 汇 编 语 言 来 实 现, 以达到简短精练的目的。而 Stage2 则通常用 C 语 言来实现, 这样可以实现更复杂的功能, 而且代码会 具有更好的可读性和可移植性。
启动/重启
C语 言 入 口 点
定义入口点
初始化关键的输入/输出设备 ( 如中断、串口、LCD)
初始化堆栈指针
打印信息到控制台
配置系统内存映射
建立异常向量表
初始化 C 代码所需的读/写 内存空间
切换处理器到用户模式