嵌入式操作系统作业模版(0)
- 格式:doc
- 大小:129.50 KB
- 文档页数:6
嵌入式实验报告班级:14级移动一班学号:1415925655姓名:蒋浩题目:一:实现三个客户端,分别简称客户端1,客户端2,客户端3.....客户端1实现向服务器发送字符串“name”客户端2实现向服务器发送字符串“class”客户端3实现向服务器发送字符串“id”实现一个服务器程序,要求该服务器程序采用并发机制处理客户端发送过来的数据,具体要求如下:服务器收到客户端1发送的字符串“name”后,给客户端1回复“蒋浩”服务器收到客户端2发送的字符串“class”后,给客户端2回复“14级移动一班”服务器收到客户端2发送的字符串“id”后,给客户端2回复“1415925655”二:三个客户端分别收到服务器回复的数据后完成以下操作:1:客户端1把服务器回复的数据“蒋浩”传递给客户端2,然后等待客户端2发送信号SIGUSR1,如果客户端1收到该信号,则客户端1打印“client over”字符串后结束2:客户端2收到客户端1的数据后,给客户端1发送信号SIGUSR1,然后,客户端2把字符串“蒋浩-14级移动一班1415925655”发送给客户端3,发送成功后结束。
3:客户端3收到数据后把字符串“蒋浩-14级移动一班1415925655”写入到文件蒋浩-14级移动一班1415925655.txt文件中思路:(1):客户端与服务器间通信:程序通过socket编程实现,socket是在用户应用层和TCP/IP 协议通信层间的封装接口,简化操作,让用户通过socket来实现2层间的操作,组织数据。
服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。
在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。
客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。
嵌⼊式⼤作业嵌⼊式⼤作业项⽬名称:交通指⽰灯系统设计班级:学号:姓名:⽬录⼀、前⾔ (3)1.1、总体介绍 (3)1.2、设计要求 (3)⼆、设计原理 (3)2.1、总体原理 (3)2.2、芯⽚介绍 (4)2.3、GPIO简介 (4)2.4、寄存器介绍 (5)三、设计步骤 (6)3.1、整体程序框图 (6)3.2、程序 (6)3.3、硬件结构设计 (8)四、现象结果及分析 (10)五、设计体会 (11)六、参考⽂献 (11)⼀、前⾔1.1、总体介绍嵌⼊式系统(Embedded system),是⼀种“完全嵌⼊受控器件内部,为特定应⽤⽽设计的专⽤计算机系统”,嵌⼊式系统为控制、监视或辅助设备、机器或⽤于⼯⼚运作的设备。
与个⼈计算机这样的通⽤计算机系统不同,嵌⼊式系统通常执⾏的是带有特定要求的预先定义的任务。
由于嵌⼊式系统只针对⼀项特殊的任务,设计⼈员能够对它进⾏优化,减⼩尺⼨降低成本。
嵌⼊式系统通常进⾏⼤量⽣产,所以单个的成本节约,能够随着产量进⾏成百上千的放⼤。
随着移动设备的流⾏和发展,嵌⼊式系统已经成为⼀个热点。
它并不是最近出现的新技术,只是随着微电⼦技术和计算机技术的发展,微控制芯⽚功能越来越⼤,⽽嵌⼊微控制芯⽚的设备和系统越来越多,从⽽使得这种技术越来越引⼈注⽬。
它对软硬件的体积⼤⼩、成本、功耗和可靠性都提出了严格的要求。
嵌⼊式系统的功能越来越强⼤,实现也越来越复杂,随之出现的就是可靠性⼤⼤降低。
最近的⼀种趋势是⼀个功能强⼤的嵌⼊式系统通常需要⼀种操作系统来给予⽀持,这种操作系统是已经成熟并且稳定的,可以是嵌⼊式的Linux,WINCE等等。
本⽂所要研究的就是基于ARM嵌⼊式系统的交通灯系统的设计与实现。
1.2、设计要求(1)⽤S3C2410或者其他ARM芯⽚的GPIO设计相关电路(2)设计相关的软件并注释(3)实现⼗字路⼝2组红、绿交通灯交替显⽰。
⼆、设计原理2.1、总体原理⼀个嵌⼊式系统装置⼀般都由嵌⼊式计算机系统和执⾏装置组成,嵌⼊式计算机系统是整个嵌⼊式系统的核⼼,由硬件层、中间层、系统软件层和应⽤软件层组成。
伊犁师范学院电信学院嵌入式系统大作业题目:嵌入式GPS车载导航系统设计班级:电信09-2学号:****************日期:2012--12--23车载GPS导航系统的设计一背景:1.1 产品介绍:随着汽车的全面普及化,车载导航仪也已经成为了应用得非常广的一款产品。
导航软件和地图数据还在不断发展和更新版本,引进卫星导航定位技术,应用于车载GPS 导航。
能为驾驶者提供精准、实时的道路信息。
1.2 市场已有设备的介绍(1)国际领先GPS导航仪品牌:Ahada(艾航达)――源自美国硅谷。
Ahada(艾航达)――专注于发展先进的GPS卫星导航便携式设备供应商,公司产品线涉及便携式导航、GPS手机导航及个人手持导航装置等全系列GPS便携产品。
(2)任我游N510是一款高性能GPS,与其它GPS不同的是,具有声控导航功能,其改变了以往车载GPS必须使用双手去操作的模式,用户只需要简简单单的说出目的地,GPS系统就会用最快的时间为您选出最近的路径,使用更加方便,也大大增加了驾车的安全性。
(3)ZT510正面是5寸高清触摸液晶显示屏,反面是磨砂材质外壳,外观简洁大方,操作简单。
此款导航仪内置了拥有庞大用户群体的正版凯立德地图,同时还内置了正版善领DSA 预警软件,是一款聚3D实景导航、流动测速、固定测速为一体的多功能导航仪。
1.3 设计原因:为什么选择此题目的原因?意义?最近几年,汽车的数量在我国增持较快,开车的人越来越多,随着旅游业的蓬勃发展,交通道路的修建,是得越来越多的人需要CPS导航系统,CPS导航系统不仅仅是一款电子地图设备,它更多的是扮演保证人们安全出行的工具。
随着人们经济基础增强,安全意识增强的基础上,很多人都会选择车载GPS导航设备,所以制造功能强大,价格低廉的车载GPS 导航设备是有很大市场和发展前景的。
由于导航仪投入小,外壳模块、芯片等材料市场供应量大,这也是我选择设计车载GPS导航设备的理由。
嵌入式系统设计第二次作业嵌入式系统的几种模式z简单嵌入式系统,包含简单的硬件初始化以及应用代码;z简单嵌入式系统,包含bootloader以及应用代码,bootloader与应用紧密集成在一起,构成一个嵌入式系统;z复杂嵌入式系统,包含bootloader、操作系统、应用软件。
目标z本次作业预期:–学习嵌入式系统开发的开发模式与基本过程。
–了解应用最多的开源Bootloader,U-BOOT。
–熟悉嵌入式系统C语言开发,尤其是内存直接访问。
–熟悉嵌入式系统仿真工具skyeye的使用。
z参考资料–资料目录下的UBootdoc.pdf前提z第一次作业已经做完。
要求z完成时间:本学期结束前一周z提交方式:上载到FTP服务器上作业目录下z作业格式:Word文档(移植开发文档+心得等等)。
z命名格式:学号+姓名+嵌入式系统开发.doc作业内容一z第一步–从课程ftp上下载应用程序源码,可自由选择其一z第二步–移植、编译、调试所下载的应用程序源码,cygwin或linux下用arm-elf-gcc直接编译通过。
z第三步–将编译链接后生成的代码通过skyeye仿真运行,测试其功能是否满足要求。
作业内容三z第一步–移植、编译、调试所下载的应用程序源码,将其作为一个应用程序运行于uclinux下。
z第二步–将移植后生成的代码通过skyeye下的uclinux调用运行,测试其功能是否满足要求。
需要用到的工具z编译工具–Arm-elf-gcc–ADSz编辑工具–Source Insight–VCz仿真环境–Skyeye–ADS。
嵌入式系统开发作业指导书第一章前言嵌入式系统是一种特定用途的计算机系统,通常被嵌入到其他设备中,以完成特定的任务。
嵌入式系统开发涉及到硬件设计、软件开发和系统验证等多个方面。
本指导书旨在帮助学生理解并顺利完成嵌入式系统开发的作业。
第二章实验要求2.1 实验目标本次作业的实验目标是设计并实现一个简单的嵌入式系统,完成指定任务并满足特定要求。
通过这个实验,学生将会了解嵌入式系统的基本概念、开发流程和相关工具的使用。
2.2 实验内容在本次作业中,学生需要完成以下任务:1. 硬件设计:根据要求,设计并实现嵌入式系统的硬件电路。
2. 软件开发:使用指定的编程语言,编写适配于目标硬件的嵌入式系统软件。
3. 系统验证:测试和验证已开发的嵌入式系统,确保其满足设计要求。
2.3 实验要求1. 学生需要按照实验指导书中的指导完成实验要求。
2. 实验过程中需要注意安全,并且遵循实验规范。
3. 学生需要详细记录实验过程,包括设计理念、实施方法、结果分析等。
4. 实验报告需要包括硬件设计图、软件源代码和系统测试结果等。
第三章实验流程3.1 硬件设计在硬件设计阶段,学生需要完成以下步骤:1. 确定嵌入式系统的功能和性能要求。
2. 根据要求设计硬件电路,包括主控芯片、外设接口等。
3. 完成原理图设计和PCB布局,并进行必要的仿真和验证。
3.2 软件开发在软件开发阶段,学生需要完成以下步骤:1. 选择适当的编程语言和开发工具。
2. 根据硬件设计和功能需求,编写嵌入式系统的软件代码。
3. 进行编译、烧录和调试,确保软件能够正确运行。
3.3 系统验证在系统验证阶段,学生需要完成以下步骤:1. 设计合适的测试用例,包括功能测试和性能测试。
2. 运行测试用例,记录测试结果并进行分析。
3. 优化系统的设计和实现,以满足性能要求。
第四章实验注意事项1. 本实验需要学生具备一定的硬件和软件开发基础知识。
2. 在实验过程中,学生需要按照指导书中的要求和步骤进行实验。
嵌入式实时操作系统作业班级:姓名:学号:摘要随着计算机技术的迅速发展和芯片制造工艺的不断进步,嵌入式系统的应用日益广泛,在嵌入式系统的应用开发中,采用嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。
这已逐渐成为嵌入式系统开发的一个发展方向。
其中,linux、uC/OS-II和eCOS为源代码公开的实时操作系统。
在此,分析一下linux、uC/OS-II和eCOS的中断处理机制,通过阅读相关代码,掌握嵌入式操作系统的中断处理机制,分析它们的优点,指出了不同应用领域所适合的ERTOS。
关键字:linux,uC/OS-II,eCOS,嵌入式,中断目录一、μC/OS-II、eCos和linux中断 (3)1、μC/OS-II的中断处理机制 (3)2、eCos的中断的中断处理机制 (5)3、linux的中断处理机制 (7)二、优点 (9)1、μC/OS-II (9)2、eCos (10)3、linux (10)三、应用 (11)1、μC/OS-II的应用 (11)2、eCos的应用 (11)3、linux的应用 (11)中断是一种硬件机制,用于通知CPU有个异步事件发生了。
中断一旦被识别,CPU保存部分(或全部)现场(Context)即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。
中断服务子程序做事件处理,处理完成后,程序回到:•在前后台系统中,程序回到后台程序•对不可剥夺型内核而言,程序回到被中断了的任务•对可剥夺型内核而言,让进入就绪态的优先级最高的任务开始运行中断使得CPU 可以在事件发生时才予以处理,而不必让微处理器连续不断地查询(Polling)是否有事件发生。
通过两条特殊指令:关中断(Disable interrupt)和开中断(Enable interrupt)可以让微处理器不响应或响应中断。
在实时环境中,关中断的时间应尽量的短。
一、实训基本信息1. 实训名称:嵌入式系统实训2. 实训时间:____年__月__日至____年__月__日3. 实训地点:____4. 实训指导老师:____5. 实训学生姓名:____6. 实训班级:____二、实训目的1. 掌握嵌入式系统的基本概念、组成和原理。
2. 熟悉常用嵌入式开发工具和环境。
3. 学习嵌入式编程语言,如C语言、C++等。
4. 了解嵌入式系统在各个领域的应用。
5. 培养动手实践能力和团队协作精神。
三、实训内容1. 嵌入式系统概述(1)嵌入式系统的定义、特点及分类(2)嵌入式系统的组成及工作原理(3)嵌入式系统的发展趋势2. 嵌入式开发环境(1)集成开发环境(IDE)的使用(2)交叉编译器的安装与使用(3)代码编辑器、调试器的选择与使用3. 嵌入式编程语言(1)C语言编程基础(2)C++面向对象编程(3)嵌入式系统中的数据结构4. 嵌入式系统应用(1)常用外设接口及驱动程序开发(2)实时操作系统(RTOS)的使用(3)嵌入式系统在各个领域的应用案例5. 实训项目(1)项目背景及需求分析(2)硬件平台搭建与调试(3)软件设计及编程(4)系统集成与测试(5)项目总结与心得体会四、实训过程1. 第一阶段:理论学习(1)认真听讲,做好笔记(2)查阅相关资料,拓宽知识面(3)积极参与课堂讨论,提出问题2. 第二阶段:实践操作(1)按照实训指导书要求,完成各项实验(2)遇到问题及时与指导老师沟通,寻求帮助(3)独立完成实训项目,记录实验过程和心得体会3. 第三阶段:项目实践(1)根据项目需求,进行硬件平台搭建(2)编写软件程序,实现项目功能(3)进行系统集成与测试,确保项目正常运行(4)撰写项目总结报告,总结实训经验五、实训成果1. 理论知识方面(1)掌握了嵌入式系统的基本概念、组成和原理(2)熟悉了常用嵌入式开发工具和环境(3)学会了嵌入式编程语言,如C语言、C++等(4)了解了嵌入式系统在各个领域的应用2. 实践能力方面(1)具备独立完成嵌入式系统硬件搭建和调试的能力(2)能够熟练运用C语言、C++等编程语言进行嵌入式系统开发(3)掌握了嵌入式系统在各个领域的应用案例(4)提高了团队协作能力和沟通能力六、实训心得体会1. 通过本次实训,我深刻认识到嵌入式系统在实际应用中的重要性。
嵌入式作业(一)159030021 张倩1、什么是嵌入式系统?有何特点?国内对嵌入式系统的一般定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
其特点:a.软硬件一体化,集计算机技术、微电子技术、行业技术于一体;b.需要操作系统支持,代码小,执行速度快;c.专用紧凑,用途固定,成本敏感;d.可靠性要求高;e.多样性,应用广泛,种类繁多。
2、说明ARM处理器核的分类及特点。
分类:ARM7T、ARM7E、ARM9、ARM9E、ARM10T、ARM10E、ARM11。
其特点:a.小体积、低功耗、低成本而高性能;b.16/32位双指令集;c.全球的合作伙伴众多。
3、什么是流水线?作图说明ARM7、ARM9核的流水线操作。
流水线是RISC处理器执行指令时采用的机制。
流水线技术是一种将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术。
使用流水线,可在取下一条指令的同时译码和执行其他指令,从而加快执行速度。
ARM7是3级流水线结构,ARM9是5级流水线结构。
ARM9把3级流水线中的执行阶段的操作进行再分配,即把执行阶段中的“寄存器读”插在译码阶段中完成,把“寄存器写”安排在另一级(即第5级)完成,同时,在该级之前,再安排一级(存储访问)4、说明ARM寄存器的组织结构、分类及功能。
ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。
但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。
但在任何时候,通用寄存器R14~R0、程序计数器PC、一个或两个状态寄存器都是可访问的。
1.ARM 状态下的寄存器组织通用寄存器:通用寄存器包括R0~R15,可以分为三类:(1)不分组寄存器R0~R7 :不分组寄存器R0~R7是真正的通用寄存器,可以工作在所有的处理器模式下,没有隐含的特殊用途。
键盘控制电机转动圈数设计0 引言0.1 嵌入式系统嵌入式系统是不同于常见计算机的一种计算机系统,嵌入式系统不以独立设备的形态出现。
嵌入式系统的组件根据主体设备以及应用的需要,嵌入在主体设备内部,发挥着运算、处理、储存以及控制等等作用。
从体系结构看,嵌入式系统主要由嵌入式处理器、外围硬件和嵌入式软件组成。
其中嵌入式处理器通常是单芯片或微控制器,一般是8位或16位,目前32位正在占据主流地位。
外围硬件主要包括储存组件,如ROM、RAM、闪存(Flash Memory)等,通信组件,如USB 接口、网络接口等,显示组件,如VGA显示卡、液晶显示组件等、I/O接口,如RS232接口、键盘等等。
不少嵌入式系统的外围硬件中还提供模拟信号与数字信号之间的转换组件。
嵌入式软件包括支持硬件的驱动软件、操作系统、支持软件以及应用中介软件,如通讯协议、图形接口、数据库系统和浏览器等等。
0.2 JX44B0嵌入式教学实验系统本篇工作基于嵌入式JX44B0教学实验系统进行。
JX44B0教学实验系统是一套硬件、软件集成的,基于ARM的完整的教学实验系统,系统包含丰富的硬件资源、完善而优越的调试手段和详尽的教学实验教程。
ADT IDE采用了一个通用的界面,可以非常方便地进行工程管理、编辑、编译、链接和调试,使得我们可以很快地进入到具体的实验中,含多种外设接口,采用模块化设计,便于硬件升级换代,并提供丰富的扩展槽以便扩充外部接口,专门为嵌入式系统教学定制。
JX44B0目标处理器采用三星的S3C44B0X处理器,开发平台采用武汉创维特信息技术有限公司的ADT集成开发环境(以下简称ADT IDE),嵌入式开发的所有过程都可以在该环境下完成。
JX44B0系列教学实验箱是实验系统的主要硬件平台,它包含一系列嵌入式教学实验方案:(1)JX44B0-1B教学实验箱:硬件系统包含了嵌入式系统开发应用所需的大部分接口,如:以太网、USB口、音频接口、LCD以及触摸屏、键盘。
嵌入式课程设计大作业一、教学目标本课程的教学目标是让学生掌握嵌入式系统的基本原理和设计方法,能够独立完成嵌入式系统的设计与实现。
具体来说,知识目标包括:理解嵌入式系统的概念、组成和分类;掌握嵌入式处理器的工作原理和体系结构;熟悉嵌入式操作系统的基本原理和常用操作系统;了解嵌入式系统的设计流程和开发工具。
技能目标包括:能够使用嵌入式处理器进行系统设计和编程;能够使用嵌入式操作系统进行应用开发;能够使用常见的嵌入式开发工具和调试技术。
情感态度价值观目标包括:培养学生的创新意识和团队合作精神,提高学生解决实际问题的能力。
二、教学内容本课程的教学内容主要包括嵌入式系统的基本原理、嵌入式处理器、嵌入式操作系统和嵌入式系统设计流程。
具体来说,教学大纲如下:1.嵌入式系统概述:介绍嵌入式系统的概念、组成和分类,理解嵌入式系统在现代社会中的广泛应用。
2.嵌入式处理器:学习嵌入式处理器的工作原理和体系结构,掌握嵌入式处理器的基本性能指标和选型方法。
3.嵌入式操作系统:了解嵌入式操作系统的原理和特点,学习常用嵌入式操作系统的基本使用方法和编程技巧。
4.嵌入式系统设计流程:掌握嵌入式系统的设计流程,包括需求分析、系统设计、硬件选型、软件设计和系统测试等环节。
5.嵌入式系统开发工具:学习常见的嵌入式开发工具和调试技术,掌握使用这些工具进行嵌入式系统开发的方法。
三、教学方法为了达到本课程的教学目标,我们将采用多种教学方法进行授课,包括讲授法、讨论法、案例分析法和实验法等。
通过这些教学方法的综合运用,激发学生的学习兴趣和主动性,提高学生的实际操作能力。
1.讲授法:通过讲解嵌入式系统的基本原理和设计方法,使学生掌握相关知识。
2.讨论法:学生进行课堂讨论,引导学生思考和分析问题,提高学生的解决问题的能力。
3.案例分析法:通过分析典型的嵌入式系统案例,使学生了解嵌入式系统的实际应用和设计技巧。
4.实验法:安排学生进行实验操作,使学生在实践中掌握嵌入式系统的原理和设计方法。
嵌入式操作系统作业
题目 Linux操作系统的移植院系信息与电气工程学院
班级 09电信
学号 13884019 学生姓名邹邦智
指导教师李征明
成绩
2012年7月
摘要:随着ARM技术的广泛应用, 建立基于ARM构架的嵌入式操作系统已成为当前研究的热点。
本文结合实例论述了基于ARM9核的微处理器上的嵌入式Linux 操作系统的移植技术, 讨论了uClinux内核的移植过程中内核代码裁剪,介绍了移植uClinux 的基本实现过程。
关键词:ARM 嵌入式操作系统移植Linux
1. 前言
目前, 在嵌入式系统里基于ARM核的嵌入式处理器已经成为市场主流。
随着ARM 技术的广泛应用, 建立面向ARM构架的嵌入式操作系统也就成为当前研究的热点问题。
在众多的嵌入式操作系统里, 开发人员选择比较多的是Linux , 这是因为它公开源代码, 可以让任何人将其修改移植到自己的目标平台系统里使用。
ARM Linux 支持包括ARM7、ARM9、StrongARM等系列的ARM处理器, 这些ARM处理器都带有内存管理单元(MMU) , 而对于不带有内存管理单元的CPU , 一般采用uClinux 作为其操作系统。
本文就是根据实际项目,研究如何将uClinux内核(使用的uClinux版本:2.4.18)移植到ARM构架的目标平台上。
2. 目标平台介绍
本文讨论的嵌入式目标平台采用的是大唐微电子科技有限公司开发的基于ARM946E核的COMIP嵌入式处理器,COMIP内部集成了LCD控制器,支持SRAM、SDRAM和FLASH等多样大容量外部存储器。
本文所用平台在系统统一编址空间里经重映射后的地址空间分配为:SRAM位于0 ~ 0x00080000,FLASH位于0x02000000 ~ 0x02200000,SDRAM位于0x08000000 ~ 0x08800000。
其中FLASH地址烧写了Bootloader、uClinux kernel以及Jffs2文件系统。
3. uClinux移植分析
3.1 uClinux启动的Bootloader介绍
uClinux的Bootloader有许多开源代码,如Blob、Redboot、U-boot等,Bootloader有以下功能:
1. 禁止所有中断;
2. 设置存储器参数;
3. 设置GPIO参数;
4. 设置处理器的时钟,初始化各个模式下寄存器与堆栈;
5. 使能I catch ,D catch;
6. 跳转到c代码,初始化串口,设置uClinux启动参数;
7. 然后跳转到uClinux的内核启动地址。
3.2 uClinux启动参数
uClinux启动可以在Bootloader中输入相应的启动参数,启动参数放入SDRAM中固定的地址,以方便uClinux在启动过程中取得相应的地址的数据,并解释执行。
启动参数的定义在:linux/include/asm/setup.h。
Linux 2.4.x 以后的内核都期望以标记列表(tagged list)的形式来传递启动参数。
启动参数标记列表以标记ATAG_CORE 开始,以标记ATAG_NONE 结束。
每个标记由标识被传递参数的tag_header 结构以及随后的参数值数据结构来组成。
数据结构tag 和tag_header 定义在Linux 内核源码的include/asm/setup.h 头文件中。
在嵌入式Linux 系统中,通常需要由Bootloader 设置的常见启动参数有:ATAG_CORE、ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD 等。
Linux 内核在启动时可以以命令行参数的形式来接收信息,利用这一点我们可以向内核提供那些内核不能自己检测的硬件参数信息,或者重载(override)内核自己检测到的信息。
3.3 uClinux内核自解压过程
处理器在经过Bootloader初始化后,跳转到uClinux的内核起始地址。
一般uClinux有两个入口的说法,一个就是Head.S(本版本为head-comip.S),另一个是head-armv.S 的,其实真正的入口是head-armv.S。
这是由于uClinux编译完成后有两个版本,一个是.ram版本,一个是.rom版本,.rom版本是uClinux可执行文件的压缩版本,.ram为未压缩版本。
Head.S为.rom版本的入口地址,head-armv.S为.ram版本的入口地址。
head.S可以说属于Bootloader的范畴,主要功能是初始化自解压所需要的空间,获得内核解压后的首地址ZRELADDR;然后调用decompress_kernel,(该函数也有初始化串口,提供串口的输入输出的函数,在include/ asm-armnommu/arch-comip/uncompresse.c 中定义),在该函数中调用gunzip(),对系统压缩内核解压,解压的内核地址放在ZRELADDR上。
最后跳转到ZRELADDR的地址区,开始真正的uClinux内核启动过程。
3.4 uClinux内核裁剪
前面的内容介绍了移植uClinux一些基本原理和准备工作,然而uClinux移植需要更改与添加的内容比较复杂,具体要修改的文件查看表1。
其中如何将COMIP处理器的支
uClinux的系统中[1]。
(config.in为系统的配置文档,主要是配置相关的宏定义、系统信息等等,这样在Makefile中根据这些宏定义来决定编译连接那些程序[3]。
至于uClinux 如何规定代码,数据映象的地址分配,可以参考\linux\arch\armnommu\vmlinux.lds[4]。
4. uClinux内核启动
4.1 内核启动入口
head-armv.S为uClinux内核启动的真正入口函数,这段汇编代码很短,程序过程如下:
1. 设定当前程序状态,禁止FIQ、IRQ进入SVC模式;
2. 清空BSS段;
3. 判断保存processor类型与Architecture 类型;
4. 跳转到start_kerenel。
4.2内核启动流程
对uClinux内核修改编译通过后,用FLASH 烧写工具依次将Bootloader、内核以及根盘文件系统(Jffs2文件系统)烧写到FLASH 里。
然后就可以启动系统了。
内核启动的流程如图1 所示[2]。
首先, 系统上电复位后, 根据系统设置, 系统程序计数器(PC) 指针先指向SRAM的地址0 处, 完成必要的系统初始化。
然后, PC 跳转到FLASH的零地址, 也就是0x02000000 处,执行FLASH开始处的flashloader 代码, 完成系统SDRAM的初始化工作,然后将后面的Bootloader代码复制到SDRAM的零地址, 也就是0x08000000 处。
然后将PC 指针再次跳转到0x08000000 , 在SDRAM存储器内部执行Bootloader,内核加载代码。
采用在SDRAM 内而不在FLASH内执行Bootloader 的原因是在SDRAM 内执行代码程序速度比在FLASH 内快很多, 有利于加快系统启动速度。
接下来Bootloader 所做的工作就是从FLASH里把压缩的内核映象复制到SDRAM内, 并且把根盘文件系统所在地址参数传递给内核。
内核复制到SDRAM之后,进行内核解压, 执行内核启动。
内核启动过程中根据Bootloader 传递过来的地址参数去寻找根盘文件系统, 将其加载到嵌入式系统上。
这样, 整个uClinux 被引导启动起来, 进入正常工作状态。
5. 结束语
本文根据COMIP目标平台, 分析了如何将uClinux 移植到ARM9构建的嵌入式系统上的主要技术和基本流程, 掌握这些移植的技术和流程, 对于开发嵌入式系统是十分重要的。
目前已经成功移植uClinux到COMIP目标平台,并能顺利启动和稳定运行。
参考文献
[1] Daniel P. Bovet , Understanding the Linux Kernel (2nd Edition) [M]. O'Reilly , 2002.
[2] 刘峥嵘等编著. 嵌入式Linux 应用开发详解[M]. 北京: 机械工业出版社, 2004.7.
[3] 王学龙编著. 嵌入式Linux系统设计与应用[M]. 北京: 清华大学出版社, 2001.8.
[4] 李明. ARMLinux 的移植过程及分析[J] . 电子设计应用,2003.7.
[5] 孙雨; 基于ARM的嵌入式系统移植设计[D]. 长春理工大学 2007
[6] 鲁昀; 基于ARM的嵌入式测控平台设计[D]. 西北工业大学 2006
[7] 李宇丽; 基于ARM的嵌入式Linux系统的研究及应用[D]. 西安电子科技大学2007
[8] 李善平.刘文峰.王焕龙. Linux与嵌入式系统[M].北京:清华大学出版社,2006
[9] 孟庆昌.牛欣源. Linux教程[M].北京:电子工业出版社,2007
[10] 周立功等编著; ARM嵌入式系统软件开发实例[M]. 北京航空航天大学出版社,
2004
[11] 王俊伟.吴俊海. Linux标准教程[M].北京:清华大学出版社,2006。