下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux在ARM上的移植摘要:本文是基于ARM的平台上进行嵌入式操作系统LINUX的移植,其中ARM选S3C2410。文中首先对Linux操作系统内核进行了介绍,然后对系统引导程序(BootLoader)进行了设计,最后给出了Linux在ARM上的移植过程。关键字:Linux、ARM、BootLoader、移植一、Linux操作系统内核Linux作为一种优秀的操作系统,近几年在嵌入式领域成为了极具潜力的嵌入式操作系统。本文的主要内容是将Linux系统的内核移植到ARM(基于ARM9S3C2410)上。Linux操作系统主要由内核、Shell、文件结构组成。其中内核是系统的心脏,是运行程序和管理磁盘、打印机等硬件设备的核心程序。Linux内核结构Linux内核是整个Linux系统的灵魂,负责整个系统的内存管理、进程调度和文件管理。Linux内核与大部分UNIX内核一样是单内核体系结构的,能够根据需要定制内核映像的尺寸,具有很大灵活性,不需要重新编译内核和引导就能检验新的内核组件,这个特性对于嵌入式而言是非常有好处的,方便用户构筑自己的个人内核。Linux内核由5个主要的子系统组成:进程调度、内存管理、虚拟文件系统、网络接口和进程间通信。Linux内核代码组织结构本文将对LINUX进行内核移植,其内核代码分布如图所示。图2Ling内核代码分布下面分别对其进行说明:/arch目录包含了目前Linux支持的硬件结构,如i386、alpha、arm等的内核代码;/drivers目录包含了内核中所有的设备驱动程序;/fs目录包含了所有的文件系统的代码;/include目录包含了建立内核代码所需的大部分库文件,这个模块利用其它模块重建内核;/init目录包含了内核的初始化代码,内核从此处工作;/ipc目录包含了进程间通信代码;/kernel子目录包含了主内核代码;/mm目录包含所有独立于CPU体系结构的内存管理代码;/net目录包含了和网络相关的代码,如ipv4、ipv6等。一般在每个目录下都有一个.depend文件和一个Makefile文件,这两个文件都是编译时使用的辅助文件。二、弓I导加载程序的设计2.1引导加载程序(BootLoader)说明引导加载程序通常称为BootLoader,是在系统复位后执行的第一段代码,是非常重要的组成部分。BootLoader独立于操作系统,必须由用户自己设计,它的实现高度依赖于硬件,所以不可能形成一个通用的BootLoader。2.2BootLoader设计与分析大多数BootLoader都分为第一阶段和第二阶段两大部分。第一阶段中包含依赖于CPU体系结构的代码,通常都用汇编语言来实现以达到短小精悍的目的。第二阶段则通常用C语言来实现较复杂的功能,具有更好的可读性和可移植性。通常把第二阶段加载到RAM空间中来执行,以获得更快的执行速度。本系统BootLoader的第一阶段实现步骤:关闭watch-dog,屏蔽所有中断。设置处理器时钟和工作频率。CPU的工作频率为200MHz。初始化外部寄存器。初始化堆栈指针。拷贝BootLoader的第二阶段到RAM空间中,使用一个跳转语句跳转到第二阶段的C入口点。第二阶段用C语言完成,实现步骤如下:(1)完成通用IO口的设置。部分代码如下:voidset_gpios(void){GPACON=vGPACON;GPAUP=vGPAUP;GPBCON=vGPBCON;GPBUP=vGPBUP;}其中GPIO口在/arch/s3c2410/smdk2410.h文件中定义。完成内存映射初始化和内存管理单元初始化:Mem_map_init();mmu_init();这两个函数都在/arch/s3c2410/mmu.c中。初始化mtd设备。mtd_dev_init();这个函数在/drivers/mtd/maps/s3c2410_flash.c中。拷贝flash中的kernel映像和根文件系统映像到RAM空间中。跳转到内核的第一条指令处。跳转时需要满足下列条件:RO为0;R1为机器类型ID;禁止中断(IRQ和FIQ);CPU设置为SVC模式(SVC是供操作系统使用的一种保护模式);关闭MMU;关闭数据Cache。至此,BootLoader的任务结束,下面的工作由操作系统来接管。三、Linux在ARM平台上的移植3.1准备实验环境拷贝光盘CD3\LinuxSource目录到Cygwin/tmp/目录下,并改名为edukit-2410;拷贝光盘中\EduKit2410Linux\drivers和examples目录到Cygwin/usr/local/src/edukit-2410目录下;使用EduKit2410目标板附带的串口线连接目标板上UART0和PC机串口COMx;3.2串口/网络设置在PC机上运行Windows附件中自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。3.3实验操作过程(1) 安装Linux源代码包拷贝Linux源代码包linux-2418-rmk7-pxa1-mz5.tar.bz2到$SOURCEDIR(/tmp/edukit-2410/)目录下;运行cygwin,首先运行以下命令,设置工作环境变量及检查交叉编译工具是否正确安装:$>source/tmp/edukit-2410/set_env」inux.sh$>arm-linux-gcc-v如果看不到类似的提示信息,重新安装好编译工具;如果编译工具安装正确,进入工作目录执行以下命令安装Linux源代码:$>cd$WORKDIR$>tar-xvjf$SOURCEDIR/linux-2.4.18-rmk7-pxa1-mz5.tar.bz2$>ls...kernel...(2) 解压Linux源代码包下载测试程序正确解压Linux源代码包后,执行以下命令对Linux进行配置:$>cdkernel$>makexconfig在弹出的配置窗口里,点击“Loadconfigurationftomfile”,输入./arch/arm/def-configs/edukit2410-amd,点击OK返回后,选择SaveandExit项保存退出,完成内核及用户程序配置。选择存放于/arch/arm/def-configs/目录下的配置文件,在工作目录下执行以下命令:$>makemrproper$>makexconfig$>makedep$>makezImage编译通过后,在./arch/arm/boot/目录下生成内核的压缩映像文件zImage。3.4观察实验结果用EmbestonlineFlashProgrammer烧写工具软件进行烧写,点击其菜单File>Open后选择光盘附带的EduKit2410&am29lv160db.cfg配置文件。将vivi烧写到Flash地址0x000000-0x00020000(No.1〜No.5sector),将内核映像文件zImage烧写到Flash地址0x00020000-0x000E0000(No.6〜No.17sector),将根文件系统映像root.cramfs烧写到剩余空间(No.18〜No.35sector)。断电后再加电重新启动目标
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年百度财务笔试题目及答案
- 2022单招畜牧专业半结构化面试押题及得分话术答案
- 2026东莞乐理等级考试临考冲刺模拟卷及答案
- 2022滕州初中语文面试零备考应急题库及完整答案
- 2026年面试时要做测试题及答案
- 2026年辽宁医药职业学院单招高命中率押题模拟卷及答案
- 2020版假肢矫形器装配工术后适配技能集 康复阶段搭配方案全指南
- 2022建筑电工学企业招聘笔试电工题附参考答案
- (正式版)DB33∕T 1440-2025 智慧高速公路 云控平台功能与数据共享技术规范
- 物流公司运输调度员路线规划与时效管理指导书
- 【长沙】2025年湖南长沙市芙蓉区公开招聘事业单位工作人员20人笔试历年典型考题及考点剖析附带答案详解
- GB/T 47241-2026虚拟电厂技术导则
- 政策工具选择分析-洞察与解读
- 2026年3月山东济南轨道交通集团运营有限公司社会招聘笔试历年参考题库附带答案详解
- 中国人寿校园招聘历年真题
- 冲压车间事故案例分析
- 疏浚施工方案范本(3篇)
- 中国资源循环集团有限公司招聘笔试题库2026
- 充电站安全培训制度
- 2025 年大学大学语文(文学常识)期中测试卷
- 2025年超星尔雅学习通《社会主义发展史》考试备考题库及答案解析
评论
0/150
提交评论