Linux实时操作系统在s3c2410的移植_贺利军
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
术
安装好交叉编译环境后,对内核进行编译,解压内核包,编
创 译 Makefile 文件,在 shell 命令下输入命令进行内核配置:make
menuconfig,然后可以开始编译得到需要的镜像文件,编译新内
核的指令有:
新
bash$ make clean
bash$ make dep
bash$ make zImage
编译工具 cross-3.3.2.tar.bz2 的交叉编译环境的安装步骤:
(1)解压文件命令:tar xjvf cross-3.3.2.tar.bz2
(2)把解压的文件夹中的“3.3.2”文件夹拷贝到/usr/local/arm
目录下(如果没有 arm 目录就新建 arm 目录,但是一定要是拷
贝到这个目录,不然不能运行)。
次性地将文件系统的所有内容都解压到内存中,而只是在系统
需要访问某个数据时,计算出该数据在 Cramfs 中的位置,将其
实时解压到内存中,然后通过对内存的访问来获取文件系统中
需要读取的数据。Cramfs 中的解压缩及解压缩之后内存中数据
的存放位置都由 Cramfs 文件系统维护,用户和开发人员不需要
了解过程细节,这样的方式既简单又节约了资源。Cramfs 有如
2 交叉编译环境
嵌入式系统没有足够的资源在本机运行开发工具和调试 工具,故多采用交叉编译调试的方式,即把目标机和宿主机相 连接。交叉编译和调试环境建立在宿主机上,宿主机可以是一 台 PC 机或工作站,对应的目标机可以是开发系统或者产品。双 方之间一般通过串口、并口或以太网接口建立连接关系,其结 构图如图 2 所示。
the work of porting Realtime Operating System Linux to s3c2410 microprocessor and realized process of porting.
技 Key words: Linux; porting; s3c2410 MicroProcessor
下特点:
* 采用实时解压方式,但有延迟;
* Cramfs 数据都是经过处理、打包,不支持写操作;
* Cramfs 中,文件不能超过 16MB;
* Cramfs 的目录中,没有“.”和“..”这两项,故 Cramfs 中目录
的链接数通常仅有一个;
* Cramfs 中,不保留文件的时间戳信息。
Cramfs 的压缩工具包,解压缩进入目录,执行 make 编译,完
Abstract: The paper describes the method of Porting Realtime Operating System Linux to ARM Processor and the structure characteristic
DÄÇEÈF1É!"Å2#$G3Á%UH&VÂ4W5'X6T7(B08PÃ9I@)ÆACÇQRSB0Y`ofembeddedLinuxRealtimeOperatingSystem,anddiscussestheuseofcross-compilerenvironment,detailedanalysisofmanypointsin
“bootloader”,
offset:
0,
size:
0x00020000,
flag:
0 },
{ name:
“param”,
offset:
0x00020000,
size:
0x000E0000,
flag:
0 },
{ name:
“kernel”,
offset:
0x00100000,
size:
0x00300000,
②ROM 启动代码初始化硬件,配置存储映射关系,启动引
导转载程序 bootloader;
③bootloader 继续初始化硬件,检查内存映射,将 kernel 和
文件复制到 RAM,为内核设置启动参数,启动内核;
图 1 Linux 系统结构图
④内核初始化高速缓存和各种硬件设备,挂载文件系统,
贺利军: 讲师 硕士
RS232
开发系统
JTAG OK
JTAG 仿真器
产品 图 2 交叉编译环境结构图
3 实时内核 linux 在 s3c2410 上的移植
要将 Linux 移植到 s3c2410 上,必须对嵌入式系统的启动 过程要清楚,嵌入式系统启动过程包括如下过程:
①处理器复位,跳转到预定义地址处执行 ROM 启动;
嵌入式操作系统应用 文 章 编 号 :1008-0570(2008)10-2-0080-03
中 文 核 心 期 刊 《 微 计 算 机 信 息》 ( 嵌 入 式 与 S OC )2008 年 第 24 卷 第 10-2 期
Linux 实时操作系统在 s3c2410 的移植
Porting Realtime Operating System Linux to s3c2410
(3) 在命令窗口输入 export PATH=/usr/local/arm/3.3.2/bin:
$PATH
技 (4) 如果输入 arm-然后按下 tab 键能自动补全命令 arm-
linux-, 可以使用 echo $PATH 来查看环境变量中是否有/usr/lo-
cal/arm/3.3.2/bin 路径变量,说明搭建成功。
这 些 指 令 会 在 usr/local/linux -2.6.x/arch/arm/boot/下 生 成
zImage 内核文件(代码略)。
3.3 根文件系统
嵌入式系统也需要一种以结构化格式存储和检索信息的
方法,就需要文件系统参与,几种主要的文件系统有 Romfs、
Cramfs、JFFS2,现在大都采用的是 Cramfs 文件系统。它不是一
术 嵌人式系统就是以应用为中心、以计算机技术为基础,软、 硬件可裁剪,适应应用系统ቤተ መጻሕፍቲ ባይዱ功能、可靠性、成本、体积、功耗等
创 严格要求的专用计算机系统。为了更好发挥硬件的功能和降低 成本,通常的做法就是应用嵌入式操作系统。而 Linux 与 UNIX
新 相似,是以内核为基础、完全内存保护、多任务多进程的操作系 统,支 持 广泛 的 计 算机 硬 件 ,包括 x86、Alpha、Sparc、MIPS、 ARM、NEC、Motorola 等现有的绝大部分芯片,而且程序源码全 部公开,任何人都可以免费使用,只要遵循 GPL 声明,就可自由 修改和传播。但嵌入式 Linux 与普通 Linux 有区别。由于存储资 源和功耗的限制,需要对嵌入式 Linux 系统进行剪裁。主要通过 剔除内核中与对应平台无关的代码、减少无用的动态链接库、 删掉非必要的应用程序、压缩文件系统的手段来减少资源占 用。由于嵌入式的应用对实时性要求较高,嵌入式 Linux 往往也 需要通过修改进程调度法、更改定时器调度算法等对实时性做 相应的修改。 Samsung s3c2410 是韩国三星公司一款基于 ARM920T 内 核的 16 位/32 位 RISC 嵌入式微处理器,主要面向手持设备以 及高性价比,低功耗的应用。运行频率可以达到 203MHz,片上 集成了以下部件:一个 LCD 控制器、SDRAM 控制器、3 个 UART 通道、4 个 DMA 通道、4 个具有 PWM 功能的计时器和 1 个内部 时钟、8 通道 10 位 ADC、触摸屏接口、IIS 总线接口等。
成后会生成 MkCramfs 和 Cramfsck 两个工具,前者用来进行
Cramfs 文件系统的释放及检查,后者用来生成 Cramfs 文件系统。
完成上述工作后,将 bootloader、kernel 和文件系统下载到
《 P LC 技术应用 200 例》
邮局订阅号:82-946 360 元 / 年 - 81 -
1 Linux 实时操作 系统结构
Linux 是由芬兰 Linus Benedict Torvalds 开发的实时系统内 核。图 1 说明了 Linux 的系统结构。
嵌入式 Linux 具有分层的体系结构,一般可分为 3 小层及 内核空间和用户空间两大块,每一层模块都屏蔽了其以下各层 的具体细节,只对上层提供功能接口或图形界面,上层模块不 需要知道其一下各层模块的实现方式,只需要利用下层提供的 接口完成相应功能即可。这样的层次模型大大增加了嵌入式 Linux 的安全性、稳定性、剪裁增添模块的便利性。
内核启动参数(boot parameters)
内核(kernel) 根文件系统(root filesystem)
boot loader
图 3 固态存储设备的典型空间分配结构
修改 NAND flash 分区如下:
mtd_partition_t default_mtd_partitions[] = {
{ name:
(1.成都理工大学;2.吉首大学)贺 利 军 1 王 理 燕 1 彭 永 胜 2 陈 建 华 1
HE Li-jun WANG Li-yan P ENG Yong-s heng CHNE J ian-hua
摘要:本 文 描 述 了 linux 实 时 操 作 系 统 移 植 到 arm 处 理 器 的 方 法 和 嵌 入 式 linux 实 时 操 作 系 统 的 结 构 特 征 , 论 述 了 利 用 交 叉 编 译 环 境 , 进 行 基 于 s3c2410 微 处 理 器 移 植 linux 的 工 作 中 的 若 干 要 点 做 了 详 细 分 析 和 移 植 的 实 现 过 程 。 关键词: Linux; 移植; s3c2410 微处理器 中图分类号: TP316.81 文献标识码: A
flag:
0 },
{ name:
“root”,
offset:
0x00400000,
size:
0x01400000,
flag:
MF_BONFS },
{ name:
“user”,
offset:
0x01800000,
size:
0x02C00000,
flag:
MF_BONFS }
};
3.2 嵌入式 Linux 内核
启动完毕,进入正常运行状态。
- 80 - 360元 / 年 邮局订阅号:82-946
《 现场总线技术应用 200 例》
您的论文得到两院院士关注
嵌入式操作系统应用
Linux 移植主要包括 bootloader 的编写和移植、Linux 内核 配置与构建以及 Linux 文件创建几个步骤。
3.1 bootloader 的编写和移植 一般地,bootloader 都分成主机端(Host)和目标端(Target) 两部分。它是在操作系统内核运行之前运行的,作用主要有初 始化处理器,初始化必备的硬件,下载系统映象,初始化操作系 统并准备执行。 bootloader 的实现除了依赖于 CPU 的体系机构,还依赖于 目标板的设置,本系统的 bootloader 引导程序分为 stagel 和 stage2 两大部分。依赖于 CPU 的体系机构的代码,比如设备初 始化等,放在 stagel 中,采用 ARM 汇编语言来实现,这样可以 达到短小精悍的目的。而 stage2 通常用 C 语言来实现,可以实 现复杂的功能,同时代码具有更好的可读性和可移植性。 bootloader 的 stage1 通常包括以下步骤: * 硬件设备初始化; * 为加载 bootloader 的 stage2 准备 RAM 空间; * 拷贝 bootloader 的 stage2 到 RAM 空间中; * 设置好堆栈; * 跳转到 stage2 的入口点。 bootloader 的 stage2 通常包括以下步骤: * 初始化本阶段要使用到的硬件设备; * 检测系统内存映射(memory map); * 将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空 间中; * 为内核设置启动参数; * 调用内核。 系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制 造商预先安排的地址上取指令。而基于 CPU 构建的嵌入式系 统通常都有某种类型的固态存储设备(比如:ROM、EEPROM 或 FLASH 等)被映射到这个预先安排的地址上。因此在系统加电 后,CPU 将首先执行 bootloader 程序。图 3 就是一个同时装有 bootloader、内核的启动参数、内核映像和根文件系统映像的固 态存储设备的典型空间分配结构图。