LINUX内核在arm平台上的移植

合集下载

嵌入式Linux系统在ARM平台上的构建

嵌入式Linux系统在ARM平台上的构建
BOS程序 ,通 过这段 程序 ,可 以完成硬 件设 备的初 I
泛渗透到人们工作、生活中的各个领域 ,与我们 的生
活息息相关 ,嵌入式处理器已经 占分散处理 器市场份
额 的 9 %以上 。 0
与此 同时 , 嵌入式 Ln x操作 系统也 在嵌入式领 iu 域 中蓬 勃发展 ,它不仅继承 了 Ln x源码开放 、内核 iu
gv n a l i e s we1 n l ,a x e i n le e d d Liu y t m a e n ARM BC2 af r s .Fia l n e p rme t mb d e n x s se b d o y a s S 41 plto 0 m i c n tu td s c e sul . o sr ce u c sf l y Ke wo d : y r s ARM ; mb d e n x;r n p a tto ft eLiu e e; r n pa tto fu b o ; s b x e e d d Liu ta s l a i no h n xk r l ta s l a in o — o t bu y o n n n
1 引言
嵌入式系统已经成 为当今最 为热 门的领 域之一 , 它迅猛的发展势头引起 了社会各方面 人士的关注 ,广
ห้องสมุดไป่ตู้
2 嵌入式 Ln x iu 系统 的构成
在嵌 入式 系统 中 ,操 作 系统 内核是 不能够 直接 运 行 的 ,在操 作 系统 内核运 行之前 必须运 行一 段程 序 ,我们称 之为 b o la e ,它类似 于 P ot dr o C机 中的
摘 要 : 嵌入式 系统在人们的 日常生活 中使用越 来越广泛 。主要研 究 了如何在 A M 平 台上构建嵌入 式 系统 , R

交叉编译HTOP并移植到ARM嵌入式Linux系统

交叉编译HTOP并移植到ARM嵌入式Linux系统

交叉编译HTOP并移植到ARM嵌⼊式Linux系统原创作品,允许转载,转载时请务必以超链接形式标明⽂章、作者信息和本声明,否则将追究法律责任。

最近⼀直在完善基于Busybox做的ARM Linux的根⽂件系统,由于busybox是⼀个精简的指令集组成的简单⽂件系统,其优点就是极精简,满⾜了Linux基本的启动需求,由于它⼏乎没有什么后台服务,对于追求极度裁剪的系统开发者⽽⾔是⼀个⾮常好的体验,不过,也正是由于其精简,很多我们在开发测试中使⽤的⼯具或者库也可能都没有,这对于开发者⽽⾔也增加了⼀定的移植⼯作量,笔者最近正被各种移植⼯具软件和库⽂件深深折磨着,今天主要说⼀下⼀个⽐较实⽤的⼯具HTOP的移植过程。

htop是什么 htop——⼀个可以让⽤户与之交互的进程查看器。

作为⽂本模式的应⽤程序,主要⽤于控制台或X终端中。

当前具有按树状⽅式来查看进程,⽀持颜⾊主题,可以定制等特性。

与top相⽐,htop有以下优点: 1、可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令⾏。

2、在启动上,⽐ top 更快。

3、杀进程时不需要输⼊进程号。

4、htop ⽀持⿏标操作。

5、top 已经很⽼了。

htop移植  1、编译环境 Host机:ubuntu-16.10(64bit) Target: arm 交叉⼯具链:arm-linux-gnueabi-gcc ⼯具包: ncurses-5.9.7: https:///cMkkk9pDiuu7G (提取码:2488) htop-1.0.2: https:///cMkknBsW6T5kp (提取码:b16f) 2、编译前准备 下载两个压缩包,放在/home/liangwode/test⽬录下,解压缩两个压缩⽂件夹,并创建编译安装⽬录。

tar xvzf ncurses.tar.gztart xvzf htop-1.0.2.tar.gzmkdir install_ncursesmkdir install_htop 3、编译ncurses 由于htop依赖于ncurses库,因此需要先编译ncurses,进⼊ncurses⽬录,并配置交叉编译cd ncurses-5.9./configure --prefix=/home/test/install_ncurses --host=arm-linux-gnueabi --without-cxx --without-cxx-binding --without-ada --without-manpages --without-progs --without-tests --with-shared 编译并安装ncurses库make && make install 这样在/home/test/install_ncurses⽬录下就⽣成了ncurses的库和头⽂件等⽂件bin include lib share 4、编译htop 进⼊htop⽬录,并配置htop交叉编译选项,注意需通过LDFLAGS指定ncurses库所在的⽬录并通过CPPFLAGS指定ncurses头⽂件所在的⽬录cd htop-1.0.2./configure --prefix=/home/liangwode/test/install_htop --disable-unicode --host=arm-linux-gnueabi LDFLAGS=-L/home/liangwode/test/install_ncurses/lib CPPFLAGS=-I/home/liangwode/test/install_ncurses/include/ncurses 编译并安装htopmake && make install完可成后可以在在/home/liangwode/test/install_htop⽬录下⽣成安装完⽂件。

泰山服务器代码移植参考手册说明书

泰山服务器代码移植参考手册说明书

TaiShan服务器代码移植参考手册文档版本01发布日期2019-08-03前言概述本文提供将软件从x86 Linux平台移植到ARM Linux平台的移植指导,以及移植过程中遇到的相关问题处理方法,包括编译环境准备、编译脚本和源码修改两部分内容。

读者对象本文档主要适用于执行软件移植的研发工程师和技术支持工程师。

符号约定在本文中可能出现下列标志,它们所代表的含义如下。

用于警示紧急的危险情形,若不避免,将会导致人员死亡或严重的人身伤害。

用于警示潜在的危险情形,若不避免,可能会导致人员死亡或严重的人身伤害。

用于警示潜在的危险情形,若不避免,可能会导致中度或轻微的人身伤害。

用于传递设备或环境安全警示信息,若不避免,可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

“注意”不涉及人身伤害。

用于突出重要“说明”不是安全警示信息,不涉及人身、设备及环境伤害。

修改记录目录前言 (ii)1 简介 (1)1.1 编程语言简介 (1)1.2 基于编译型语言开发的应用程序 (3)1.3 基于解释型语言开发的应用程序 (3)2 准备工作 (4)3 移植相关问题处理 (5)3.1 编译脚本移植类问题 (5)3.1.1 -m64编译选项 (5)3.1.2 char数据类型的符号 (5)3.2 源码修改类问题 (6)3.2.1 代码中汇编指令需要重写 (6)3.2.2 替换x86 CRC32汇编指令 (6)3.2.3 替换x86 bswap汇编指令 (8)3.2.4 替换x86 rep汇编指令 (8)3.2.5 快速移植内联SSE/SSE2应用 (9)3.2.6 弱内存序导致程序执行结果和预期不一致 (9)3.2.7 对结构体中的变量进行原子操作时程序异常coredump (10)3.2.8 核数目硬编码 (11)3.2.9 双精度浮点型转整型时数据溢出,与X86平台表现不一致 (12)4 编译优化项 (14)4.1 gcc编译器优化浮点运算精度 (14)4.2 增加编译选项匹配Kunpeng处理器架构,提升性能 (15)4.3 增加编译选项匹配Kunpeng处理器流水线,提升性能 (15)1 简介1.1 编程语言简介1.2 基于编译型语言开发的应用程序1.3 基于解释型语言开发的应用程序1.1 编程语言简介按照翻译方式的不同,高级语言通常可以分为两类:一类是编译翻译,一类是解释翻译,分别对应着编译型语言和解释型语言。

基于ARM平台Linux内核移植论文

基于ARM平台Linux内核移植论文

基于ARM平台的Linux内核移植中图分类号:tp 文献标识码:a 文章编号:1007-0745(2011)10-0204-01摘要:linux是一个可移植性非常好的操作系统,它广泛支持了许多不同体系结构的计算机。

可移植性是指代码从一种体系结构移植到另外一种不同的体系结构上的方便程度。

本文介绍了基于arm 开发板的linux内核移植过程,主要包括二方面的内容:交叉编译器的安装、内核的配置与移植。

本文要求读者具备一定的linux操作系统使用经验。

关键词:移植内核 linux一、概述一个嵌入式linux系统的启动顺序可以分为四步:1、引导加载程序(bootloader)。

2、加载linux内核。

3、挂载根文件系统。

4、运行应用程序。

所以要想使linux内核在开发板上运行,就必须对以上四步的相关源代码进行移植操作,使其可运行于嵌入式平台。

本文主要介绍内核移植部分,其余部分可参考相应书箱或文档。

二、开发环境的建立2.1、安装虚拟机、fedora13操作系统及相关的开发工具(gcc、gedit等),本文的所有操作均是在这种开发环境下进行,本文的工作目录为 \work,且都是在root权限下操作。

2.2、交叉编译器(arm-linux-gcc)的安装。

交叉编译器是嵌入式linux开发的基础,后续的移植过程都要用到此编译器,在linux pc平台下,利用arm-linux-gcc编译器可编译出针对arm linux平台的可执行代码。

安装过程如下:a、网上获取arm-linux-gcc-4.3.2.tgz源代码包并保存于/work 目录中。

b、解压命令(tar xvzf arm-linux-gcc-4.3.2.tgz -c /)注意上面的命令必须是大写c且后面有个空格,这样将源代码解压至目录/usr/local/arm/4.3.2中。

c、配置编译环境路径。

输入命令(gedit /root/.bashrc)打开.bashrc文件,在最后一行加入如下内容:exportpath=/usr/local/arm/4.3.2/bin:$path保存关闭文件,用root重新登录系统,输入命令:(arm-linux-gcc –v)如果安装成功将会显示arm-linux-gcc的版本号。

ARM开发教程之ARM Linux系统移植步骤

ARM开发教程之ARM Linux系统移植步骤
千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开发教程之ARM LINUX系统移植步骤 ARM开发教程之ARM LINUX系统移植步骤 开发教程之
ARM简介 Linux简介 系统的制作移植建立交叉编译环境 引导程序 内核 修改内核 内核的配置编译 根文件系统 结束语

千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开发教程之引导程序 引导程序
对于计算机系统来说,从开机上电到操作系统启动需要一个引导程 序。嵌入式linux系统同样离不开引导程序,这个引导程序叫做 Bootloader[1]。通过这段小程序,可以初始化硬件设备、建立内存 空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系 统内核做好准 备。 vivi[4]是韩国MIZI公司为其arm9系列产品而研发的Bootloader, 小而灵巧,这里选用它作为小型Linux系统的Bootloader。 首先要修改vivi源代码中的Flash分区信息,新的分区信息如表1 所示。 根据表1,在vivi源码arch/s3c2410/smdk.c文件中作出相应的 修改。 然后在配置菜单中导入smdk2410的默认配置,编译成功将在 vivi源代码目录下生成所需的Bootloader文件,文件名为vivi。 接着,便可把vivi下载到目标板Flash的相应位置。

千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开发教程之ARM简介
Arm9S3C2410微处理器与Linux的结合越来越紧密,逐 渐在嵌入式领域得到广范的应用。目前,在便携式消 费类电子产品、无线设备、汽车、网络、存储产品等 都可以看到S3C2410与Linux相结合的身影。 S3C2410微处理器是一款由Samsung公司为手持 终端设计的低价格、低功耗、高性能,基于arm920T 核的微处理器。它带有内存管理单元 (MMU),采用 0.18mm工艺和AMBA新型总线结构,主频可达203MHz。 同时,它支持Thumb 16位压缩指令集,从而能以较小 的存储空间获得32位的系统性能。

基于ARM9嵌入式Linux内核的移植

基于ARM9嵌入式Linux内核的移植
码 进行裁 减移植 。

ห้องสมุดไป่ตู้
I 在 相 关 地 方 增 加 修改根 目录中的 Ma ef 文件。这个 j“ CONFI ARCH— 3 4 0 = kfe l ¥ G— S C2 1 ”
Ma e l  ̄ kfe 件的任务有两个 : i3 产生v iu  ̄ i“ ml x n y”一 这个语句。 。 件 和 产 生 内 核模 块 。为 了达 到 此 目的 , 1 关键点: of 文件决定了m ncni cn g i euof g Ma ei 将递 归进入内核的各个子 目录中, 菜单的 内容 。把使 用的平 台加在需要的地 kf e l 分别调用位于这些子 目录中的 Ma ef 。 k f e j l 方,这样在配置Ln x时就能够选择是否 iu 打开最上 层目录下的 Ma ei 文 件, 1 k fl e 支持 你的 平台 了。 这个文件 中修改后 的内容如 下所示 : 1 4 . 改ac / r b o )修 r h a m/ o t目录下的 ( )指定 目标平台 :ARCH:= a m Ma ei 文件 1 r kfe l (2 ) 指 定 交 叉 编 译 器 : { 编译出来的内核是存放在 ac / r r am/ h
解压到 目标板的地址 :修改 b o 目录下的 ot 2. )根据电路设置T XT DD E A R { kfe Mael文件 ; i 修改 cm r s / kfe o pe e Mael sd i 因为 2. 1 4. 8版本 的内核还没有包含 1文 件 。
¥C 40 3 2 1X处理器 ,所以要手动增加下面内 } 5. ac /r / e e 目 ) 修改 r am kr l 录下的文 h n 容 『 件 i q¥C FG AR H_ 3 2 1)y f ((ON I_ C S C 40,) e

基于ARM的嵌入式linux内核的裁剪与移植

ARCH

3 内核 配置 过 程
提供 用 户程 序所 使 用 的一些
自行 搭建 交叉 编译 环境 通 常 比较 复 杂 ,而 且 很 容易 出错 。本 文使 用 的是 开 发板 自带 的交 叉 编 译 器 ,即cos 33 交 叉 编译 器 ,该 编 译 只 需 将 rs一 .. 4
光 盘 中 的 am—iu 33 . r z 用 tr xf n — r l x一 .. b . 2 a v n n 4 ab i a
及 下 栽 内核 映像 到 开发 板 等设 计 ,给 出了以sc 4 O 3 2 l 为核 心 的嵌 入 式Ln x iu 内核 的裁 剪 与移植
过程。
关键词 :AR M;嵌 入式Ln x 3 2 1 ;裁剪 ;移植 iu ;¥ C 4 0
0 引 言
微 处 理 器 的产 生 为价 格 低 廉 、结 构 小 巧 的 C U和外 设 的 连接 提 供 了稳 定 可靠 的硬 件 架构 。 P 这 样 。限制嵌 入式 系统 发展 的瓶 颈就 突 出表 现在
第 1卷 1
第 1期 1
电手元 器 件 盔 用
Elcr n cCo o e t D v c p ia in et i o mp n n & e i eAp l t s c o
V . 1 I1 No 1 .l
NO V.2 9 0o
2 0 年 1 Y 09 ll
d i O3 6 /i n1 6 - 7 5 0 91 .2 o: .9 9js .5 3 4 9 . 0 .10 0 l .s 2
以在 另 一个 平 台上执 行 的程 序代 码 。不 同的C U P
需要 有 不 同 的编译 器 。交叉 编 译 如 同 翻译 一 样 ,

基于ARM的嵌入式linux内核裁剪及移植

第 2 卷第 6 ( 5 期 总第 1 8 ) 1期
V 1 5 N .( U o1 8 o. o S M N . 1 ) 2 6
机 械 管 理 开 发
M ECHANI CAL M AN AGEM ENT AND DEVEL0PM ENT
2 0年 1 01 2月
D e .0l c2 0
b nuis 2.5. rb 2、 c 一 3. trbz i t - 1 t . z g c 3. 6. . 2、g i - 2-. . r l a a lbc 3 2t . a
b2 l c l utra s232t . 和 l u -ic ha — z 、g b —i x ed - ...r i n h ag i x l - ed n b
2 B ola e 的 移 植 . 2 ot dr o .
基础上经过裁剪 、 修改 , 适用于嵌入式系统并应用于特 定 嵌入 式场 合 的专 用 Lnx 作 系统 。与其 它 的嵌 入 iu 操 式 操作 系统 相 比, 入 式 Ln x 有 以下 特点 : 有 开 嵌 iu 具 具 放源代 码 , 系统 内核较小 、 效率 高 、 内核 网络结 构完整 , 针对 嵌入 式 的存 储方 案 , 供 实 时版 本和 完 善 的嵌入 提 式解决方 案 、 备一 整套 工具链 , 易搭建嵌 入式 系统 具 容 的 开发环 境 , 减后 的 系统 适用 于诸 如信 息 家 电等嵌 裁 入式 系统 的开发 。

引 言
目前 , 种嵌 入式 Lnx 各 iu 操作 系统迅 速 发展 , 已形 成 了 能 与 Widw C no s E等嵌 入 式操 作 系统 进行 有 力 竞 争 的局 面 。嵌 入 式 Lnx 作 系统 的迅 速 崛 起 , iu 操 主要

基于ARM平台的Linux内核分析与移植研究


是 Ln x iu 支持的体系结构的简称 2 . 在 .3 6 2的 内核代码
中 已经 完 全 包 含 了对 S C 4 0 件 体 系 的支 持 Ln x 3 24 硬 iu
内核 主要 由 5个 子 系 统 组 成 : 程 调 度 、 进 内存 管 理 、 虚
拟文件 系统 、 网络接 口、 进程 间通信 。 iu Ln x内核代码非 常庞大 , 整体代码结构如 图 1 所示 。
3 编 译 内核
内 核 编 译 的方 式 与 引 导 程 序 移 植 大 体 相 同 .利 用
m k m g 命 令 即 可 进 行 编 译 。 当 编 译 完 成后 , 编 a ez ae l 把 译 生 成 的 映 像 z ae 过 VV 下 载 到 硬 件 平 台上 . l g通 m II 就
体 的研 究和 开 发 , 并对 内核 进 行 相 应 的修 改 和优 化 。通 过 配置 、 译 完成 整 个移 植 过 程 . 编 为
Ln x 内 核 移 植 提 供 借 鉴 。 iu
关 键 词 :Ln x 内核 ;¥ C2 4 A;内核 移 植 ;Neftr iu 3 40 tl ie
nt 而 ¥ C 4 0 理 器 包 含 了 MM i, 3 24 处 1 U模 块 , 以需 要 针 所 对 该 体 系结 构选 择 对 Ln x内核 对 MMU模 块 的 支 持 。 iu dvr: 目录 包 含 了 内 核 中 所 有 的 设 备 驱 动 程 i s该 e 序 。该 目录 占据 了 L u i x内核 的 大部 分 代码 , 常 庞大 。 n 非 是 进行 内核移 植 时需 要 重点 关 注 的 目录 . 如 L D显 示 例 C 驱 动程 序 、 摸屏 驱 动程 序 等 源代 码都 放 在该 目录下 。 触

Linux操作系统在ARM9处理器上的移植

系统 引 入到 一 个 前 景更 加 广 阔 的 领域 。 2 软硬 件 平 台结 构

今的嵌人式 操作 系统各 种各 样 , V Wok、 N 有 x rs Q X、
Pam l OS、 id wsCE、 n x  ̄ i u vC OS I Nu W n o Liu ICl x ./ —I n —
单元) 支持 Lnx系统 的移植嵌 入。除此之 外 , , i u 该
处 理 器拥 有 : 立 的 1 B的指 令 C ce 1 B数 独 6K ah 和 6K
据 C ce支持 T T的 L D控制器 、 A D闪存控 制 ah 、 F C N N 器、 三路 U R 、 A T 四路 D MA、 四路 带 P WM 的 Tm r i e、
ce等, | s 每种操作系统都有其 与众不同之处 。本文 u 选用 的将要移植 的嵌入式操作 系统为如今在各领域
中广 泛 应 用 的 Inx L u A u 。 i x是 以 U i 基 础 而 发 n n x为
展起来的操作 系统 , 其最 大优点是源代码公开 , 可以
任意剪裁和修改后将 其移植入 自己的硬件平 台上 , 因此可 以说是嵌入式操作系统 的最佳选择 。
研 究 与 应 用
化 动 及 表,0 ,7 )7 6 工自 化 仪 21 3 2: ~9 0 ( 6
C n rla d I s u ns i h miaቤተ መጻሕፍቲ ባይዱ n u t o to n n t me t C e c lI d s y r n r
L n x操 作 系统 在 A M 9处 理 器 上 的 移 植 iu R
操作系统 也是嵌入式系统的重要组成部分 。当
随着信息科技和微 电子技术 的迅速发展 , 入 嵌
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• /drivers目录,保存了内核中所有设备驱动程序。 • /fs目录,列出了Linux支持的所有文件系统的代码,如ntfs ext3和yaffs等 • /include目录,包括编译核心所需要的大部分头文件,例 如与平台无关的头文件在include/linux子目录下。不同的 平台需要的头文件会有所不同,因此该目录和arch目录一 样,按平台划分多个子目录,如asm-arm是arm平台的。
• 了解bootloader及其作用,了解Linux内核结构。 • 掌握配置和编译Linux系统内核的方法以及移植嵌入式 Linux的基本步骤。
© 2006 Embedded
实验内容
• 在Linux系统的宿主PC下,修改裁减内核源码,编译生成 bootloader、内核映像和根文件系统。 • 在Windows系统的宿主PC下,烧写bootloader、内核映像 和根文件系统。(带U盘)
@ get first tag @ ok, we have a tag list
r4, [r8, #4] r4, #8 r4, [r8, #0] r4, #0 r4, [r8, #8]
/* * find the end of the tag list, and then add an INITRD tag on the end. * If there is already an INITRD tag, then we ignore it; the last INITRD * tag takes rd tag @ end of tag list terminator @ call kernel
/* * We found a param struct. Modify the param struct for the initrd */ param_struct: add r8, r8, #16*4 stmia r8, {r6,r7} mov pc, r12 move: ldmia stmia ldmia stmia subs bcs mov .word .word .word .word .word .word .word .word .word .word .word .type .type r4!, {r7 - r10} r5!, {r7 - r10} r4!, {r7 - r10} r5!, {r7 - r10} r6, r6, #8 * 4 move pc, lr initrd_start initrd_addr initrd_len kernel_start kernel_addr kernel_len 0x54410001 0x54420005 initrd_addr initrd_len params kernel_start,#object initrd_start,#object
◆定义数据、代码段、bbs(未初始化数据段)起始地址变量并对bbs段初始化 ◆设置寄存器以初始化系统硬件 ◆关闭中断 ◆初始化LCD显示 ◆将数据段复制到内存 ◆跳转到内核起始函数start_kernel继续执行 ◆对主寄存器的修改 © 2006 Embedded
Init.S
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • /* * linux/arch/arm/boot/bootp/init.S * * Copyright (C) 2000 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Header file for splitting kernel + initrd. Note that we pass * r0 through to r3 straight through. */ .section .start,#alloc,#execinstr .type _entry, #function _entry: adr r10, initdata ldr r11, initdata sub r11, r10, r11 b splitify .size _entry,. - _entry .type initdata .size .text r13, data ldmia add bl ldmia mov add bl initdata, #object @ compiled address of this initdata,. - initdata
© 2006 Embedded
嵌入式Linux系统构成 嵌入式Linux系统构成 Linux
• 引导加载程序(armboot, blob, redboot, vivi, U-Boot)
– 启动加载模式(正常工作模式),下载模式
• 内核 • 文件系统 • 用户应用程序(有时还包括嵌入式图形用户界面)
@ get size and addr of initrd @ r5 = ATAG_INITRD @ r6 = initrd start @ r7 = initrd end @ r8 = param_struct address @ no param struct? @ 4K? @ 16K? @ 32K?
启动参数
内核
根文件系统
Bootloader
© 2006 Embedded
Bootloader介绍 Bootloader介绍
• 引导加载程序bootloader是系统加电后运行的第一段代码, 它完成整个系统的加载启动任务。 • 在基于ARM的嵌入式系统中,系统在上电或复位时通常都 从地址0x00000000处开始执行,而在这个地址处放的通 常就是系统的bootloader。 • 通过这段小程序,可以初始化硬件设备、建立内存空间的 映射图,从而将系统的软硬件环境带到一个合适的状态, 以便为最终调用操作系统内核准备好正确的环境。
@ then the kernel @ correction
© 2006 Embedded
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
/* * Setup the initrd parameters to pass to the kernel. This can either be * passed in via a param_struct or a tag list. We spot the param_struct * method by looking at the first word; this should either indicate a page * size of 4K, 16K or 32K. */ {r4ldmia r13, {r4-r8}
ldr teq teqne teqne beq ldr teq bne /* * We didn't find a valid tag list - create one. */ str mov str mov str
r9, [r8, #0] r9, #0x1000 r9, #0x4000 r9, #0x8000 param_struct r9, [r8, #4] r9, r4 taglist
© 2006 Embedded
Linux内核结构( Linux内核结构(续) 内核结构
• /init目录,包含了内核的初始化代码,有main.c version.c 两个文件。 • /ipc目录,包含了核心进程间的通信代码。 • /kernel目录,内核管理的核心代码在此,与处理器结构相 关的代码都在arch/*/kernel目录下。 • /lib目录,包括与平台无关的通用函数。 • /mm目录,包含了所有的内存管理代码。与具体硬件体系 结构相关的内存管理代码位于arch/*/kernel目录下。 • /net目录,里面是核心的网络部分代码,其每个子目录对 应于网络的一个方面。 • 其他目录,Documentation目录存放了许多文档。scripts 目录存放配置内核的一些脚本文件。
嵌入式系统课程——实验三 实验三 嵌入式系统课程
LINUX内核在arm平台上的移植 LINUX内核在arm平台上的移植 内核在arm
牛建伟 邹 琪
© 2006 Embedded
• 实验目的 • 实验内容 • Bootloader • Linux内核 • 实验步骤
© 2006 Embedded
实验目的
• 第二个阶段通常用C语言完成,以便实现更复杂的功能, 也使程序有更好的可读性和移植性。这个阶段的任务有:
◆初始化本阶段要使用到的硬件设备 ◆检测系统内存映射 ◆将内核映像和根文件系统映像从flash读到RAM ◆为内核设置启动参数 ◆启动内核(将控制交给内核) © 2006 Embedded
Linux内核介绍 Linux内核介绍
• 目前专门针对嵌入式设备的Linux改版有针对无MMU的 uClinux和针对有MMU的标准Linux在各硬件体系结构上的 移植版本。 • uClinux是通过对标准Linux内核裁减,去除虚拟内存管理 部分的代码,并对内存分配进行优化,从而达到提高系统 运行效率的目的。 • 因此uClinux的应用程序开发要求用户自己正确的处理内存 管理,一旦错误地修改了其他进程的内存,将可能造成系 统死机。基于像ARM2410这样的ARM9内核的ARM-Linux 使用了MMU的内存管理,对进程有保护,提高了嵌入式系 统中多进程的保护能力。使用户应用程序的可靠性得以提 高,降低了用户的开发难度。
© 2006 Embedded
Linux内核结构 Linux内核结构
相关文档
最新文档