收藏 分享(赏)

基于嵌入式Linux实验箱移植Android操作系统的可行性研究03new.doc

上传人:dreamzhangning 文档编号:2235530 上传时间:2018-09-06 格式:DOC 页数:38 大小:969KB
下载 相关 举报
基于嵌入式Linux实验箱移植Android操作系统的可行性研究03new.doc_第1页
第1页 / 共38页
基于嵌入式Linux实验箱移植Android操作系统的可行性研究03new.doc_第2页
第2页 / 共38页
基于嵌入式Linux实验箱移植Android操作系统的可行性研究03new.doc_第3页
第3页 / 共38页
基于嵌入式Linux实验箱移植Android操作系统的可行性研究03new.doc_第4页
第4页 / 共38页
基于嵌入式Linux实验箱移植Android操作系统的可行性研究03new.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、 论文题目:基于嵌入式 Linux 实验箱移植 Android 操作系统的可行性研究年级: 09 级院系:电信学院学生姓名: 钭启恒指导教师: 张林中摘要 .3第 一 章 : 绪 论 .31.1 项目开发背景 .31.2 嵌入式 Android 应用与发展趋势 31.3 本文工作及内容 .3第二章 Android 系统的设计与构建 32.1 Android 硬件平台设计: .32.1.1 硬件平台资源 32.1.2 原理图修改 .32.1.3 PCB 版图的布局 .32.2 Android 软件平台设计 .32.2.1 Android 操作系统体系结构 .32.2.2 Android 和 Li

2、nux 操作系统的不同 32.2.2.1 基于 ARM 架构增加 Gold-Fish 平台 32.2.2.2 增加 Yaffs2 FLASH 文件系统 .32.2.2.3 增加 Android 相关设备驱动 32.2.2.4 增加新的共享内存处理方式 .32.2.3 Android 主要驱动程序特征 .32.2.3.1 Binder.32.2.4 Android 软件平台移植步骤 .32.2.4.1 Android 文件系统移植方法 32.2.4.2 Android 内核移植方法 3第三章: Android 系统设备的硬件实现 33.1 设备平台布线规则 33.2 PCB 排版中碰到的问题和解

3、决方法 .3第四章: Android 系统设备的软件实现 34.1 Linux 内核移植 .34.2 增加 Android 功能打 Android 补丁 34.3 移植文件系统 34.3.1 配置内核支持 yaffs2 文件系统 .34.3.1.1 获取 yaffs2 源码 34.3.1.2 修改内核支持 yaffs2.34.3.1.3 在配置单中添加对 yaffs 的支持 34.3.2 制作文件系统 .34.3.2.1 获取 BusyBox 源码 34.3.2.2 修改并配置 BusyBox.34.3.2.3 编译并安装 BusyBox.34.3.2.3 添加文件系统内容 34.4 M900

4、0 网络驱动移植 34.5 LCD 驱动与触摸屏移植 34.5.1 LCD 驱动移植 .34.5.2 触摸屏驱动移植 .34.6 RTC 移植 .34.7 android 文件系统移植 34.7.1 android 文件系统结构 .34.7.2 android 文件系统编译 .34.7.3 android 文件系统去启动过程 .3第五章: Android 设备测试与分析 35.1 Android 内核启动测试 35.2 DM9000 网络功能测试 35.3 LCD 触摸屏功能测试 35.4 Androi d 设备整体测试与分析 3第六章:总结 .3参考文献 .3摘 要为了让智能手机用户能够随时

5、随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网以及互联网访问 Web 网站并处理各种各样的业务。因此,智能手机的应用软件及其需要的服务将有广阔的发展前景。在如今这个智能手机系统群雄纷争的时候,2008 年 Google 推出了一款名为 Android 的开源智能手机操作系统,它采用 Linux 内核,开放手机联盟(OHA)成员可以任意使用和修改 SDK 包,系统的开源性使其具有良好的拓展性。这款软件包括了操作系统、用户界面和应用程序,即智能手机工作所需要的全部软件。Android 的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境

6、,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android 平台具有无限的吸引力。关键字:android;开放手机联盟;智能手机平台 AbstractIn order for smart phone users to check the Internet anytime, anywhere services provided an efficient way to expand the function of the system will be applied to the mobile phone terminal, t

7、he mobile phone to Internet access via mobile networks, and variety of Web sites and process business. Therefore, the smart phone applications and the need for the service will have broad prospects for development. In todays smart phone system when disputes warlords, 2008, Google introduced a smart

8、phone called the Android open source operating system, which uses Linux kernel, Open Handset Alliance (OHA) members can be free to use and modify the SDK package, the system It has a good open-source nature of the expansion of. The software includes the operating system, user interface and applicati

9、ons that need to work smart phones all the software. Androids biggest feature is its open architecture, not only has a very good development and debugging environment, but also supports a variety of scalable user experience, including rich graphical components, multimedia support, and powerful brows

10、er. Therefore, for software professionals is, Android platform has unlimited appeal. Keywords:android ;Open Handset Alliance;smartphone platform1第 一 章 : 绪 论1.1 项目开发背景Android是由Google开发的,基于Linux内核的软件平台和操作系统。它诞生以来,它的功能和易用性不断得到完善。目前已有多款基于Andriod操作系统的手机问世,得到不少好评,其市场占有率也在不断上升。Android之所以得到用户的认可与其特性密不可分:图片1

11、 Android手机 应用程序框架支持组件重用与替换; Dalvik虚拟机专门为移动设备做了优化; 内部集成基于开源WebKit浏览器引擎; 优化图形库,3D图形库基于OpenGL ES 10; #SQLite用作结构化数据存储; 多媒体支持常见音视频和静态印象文件格式; GSM电话; Bluetooth,EDGE,3G,and WiFi; 照相机,GPS,指南针,和加速度计; 开发环境友好和Eclipse集成开发环境插件; Android的发布会同一个核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。这些应用程序都由一系列服务和

12、系统组成。 一个可扩展的视图:新建应用程序,包括列表,网格,文本框,按钮,以及2一个可嵌入的web浏览器。 内容管理器:使得应用程序可以访问另一个应用程序的数据或者共享它们自己的数据.一个资源管理器:提供非代码资源的访问,如图形,和分层文件。一个通知管理器:使应用程序可以在状态栏中显示客户通知信息。一个活动类管理器:管理应用程序生命周期并提供常用的导航回退功能。Android内核和文件系统较之前的Linux内核和Qtopia文件系统功能和界面都做了补充和改进,设计更加人性化,操作更加简便实用,在系统驱动中更加入了对重力传感器的支持和应用程序,使得在产品的新颖性上可以和Iphone一较高下,这也

13、是其为何获得众多用户和产品开发商青睐的原因。1.2 嵌入式 Android 应用与发展趋势Android自它诞生之日起,就面临着诸多手机软件平台的挑战。首先它需要获得广大设备制造商的认可,争取手机操作系统软件的市场份额并继续生存下去。Symbian软件平台发言人表示:Android只是另一个1inux,Symbian对其它软件与其形成的竞争并不感到担心。Symbian平台智能手机占有大部分市场份额与Iphone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目。但AndroidbLIphone等其他手机有更强

14、搜索功能,界面更友好,是一种融入全部Web应用的单一平台。Android手机系统引人入胜之处在于其开放性和服务免费。 Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有很大的自由度,突破了iPhone等只能添加为数不多固定软件的枷锁;同时与Windows Mobile、Symbian 等厂商不同,Android操作系统免费向开发人员提供,可节省相当的成本。Android操作系统经过一段时间的成长,Android项目已经从手机运营商、手机厂商、开发者和消费者那里获得了大力支持。Google移动平台主管AndyRubin表示,与软件开发合作伙伴的密切接触一直在进行中,Goo

15、gle已经向服务提供商、芯片厂商和手机销售商提供Android平台,并组建了“开放手机联盟“,其成员超过30家。越来越多的用户和产品制造商正在投入至UAndriod的使用和开发当中,目前各公司对Android系统开发和应用人才的需求也越来越高,投入也越来越大,特别是在经济危机之后,越来越多的公司倾向于使用开源和免费的软件,这又进一步推动3“Andriod操作系统的发展与普及。在可以预见的将来,相信Android会给用户带来更多的功能、更人性化的操作系统,为开发商和产品制造商带来更大的利益。1.3 本文工作及内容本文基于对Android和Linux内核及文件系统的特点和分析,将市场上普遍应用于A

16、RMll设备的Andriod操作系统移植到ARM9 3C2440平台上可行性研究,针对ARM9平台设计电路原理图、PCB板、移植Linux操作系统,为Linux内核打补丁完成Android内核移植,移植内核必要的驱动程序(Binder、Power、网络驱动),制作文件系统。使Android内核可以启动并挂载相应的文件系统,使系统实际应用于ARM9嵌入式设备中。文章最后对移植的效果和问题进行测试和分析。3第 二 章 Android 系 统 的 设 计 与 构 建2.1 Android 硬件平台设计 :2.1.1 硬件平台资源硬件平台的设计参考 ARM9 原理图并加以修改。原理图中有如下设备:S3

17、C2440A、64M SDRAM 141、64M Nand Flash、LCD、DM9000网络芯片、2个串口、1个摄像头接口、1个USB Host、1个USB Slave、1个SD卡存储、1路立体声音频输出口、6个按键、实时时钟电池等。2.1.2 原理图修改电路原理图设计系统直接从Nand Flash启动。保留一个串口uart0终端调试,增加一个AD模数转换、1个PWM控制蜂鸣器、1个12C总线AT24C08芯片81、去掉一个USB Slave、为了使系统信号有更好的完整性更改SDRAM匹配电阻33欧姆为22欧姆更改网口电平转换器为HR911103A提高系统的集成度。其次设计电路板为4层PC

18、B板,Top layer和Bottom layer用于布信号线,中间层为电源层和地层。在原理图中将芯片各引脚引到电路板边缘,便于调试。2.1.3 PCB 版图的布局PCB板布局为12cm * 6am设计,为使电路板能够获得较好的布局和良好的信号完整性,安排3C2440芯片位于电路板中间,电路板电源部分在电路板左下角为整块电路板供电,键盘按键在电路板正下方,音频和存储芯片位于板子右下;左边是UART串口输出和SDRAM,右边是CMOS摄像头接口,DM9000网络芯片位于电路板的左上角,尽量与电源分开避免干扰,中间是NAND FLASH和AD模数转换,SD卡接口和外接调试接口位于电路板的右上方。如

19、图片2所示: 4图片2 PCB板布局示意图2.2 Android 软件平台设计2.2.1 Android 操作系统体系结构Androiod 操作系统体系结构如图片 3 所示图片 3 Androiod 操作系统体系结构图Android操作系统采用software stack架构,主要分为三部分。1底层以Linux内核为基础,使用C语言开发,提供硬件驱动功能。52中间层包括函数库Library和虚拟机Virtual Machine,为上层应用程序调用驱动提供函数接口。3上层应用程序使用Java开发,由各公司自行维护。Android的体系结构使得应用程序可以在不考虑底层驱动接口情况下,方便地移植到另

20、一操作平台而应用程序不用多做改动,为应用程序软件的编写提高了效率,也为产品的升级和维护提供了方便,压缩了软件平台开发的周期。这是Android得以在短期得到推广的主要原因之一。2.2.2 Android 和 Linux 操作系统的不同将网站下载的Android Linux内核与标准Linux 内核比较,Android内核增加了其特有的功能。2.2.2.1 基于 ARM 架构增加 Gold-Fish 平台 在Gold-Fi sh平台的基础上相应增加设备目录。kernelarchammachgoldfishkernelincludeasmarmarchgoldfishGoldFish平台采用ARM

21、926T CPU作为处理器,而要流畅运行Android CPU主频应该在500Mhz以上,所以最好选用ARMll及以上平台进行开发。2.2.2.2 增加 Yaffs2 FLASH 文件系统在内核fs目录下增加fsyaffs2文件系统,但是在移植文件系统时发现Android对Yaffs2文件系统的支持与Linux并不兼容,一些Flash块和页的读写操作略有不同,在移植时候需要做适当的修改。2.2.2.3 增加 Android 相关设备驱动驱动程序位于 kerneldriversandroid,增加的驱动程序如表 1 所示。表 l Android 相关设备驱动列表Android IPC 系统 Bi

22、ngerAndroid 日志系统 LoggerAndroid 电源管理 PowerAndroid 闹钟管理 AlarmAndroid 内存控制台 Ram_consoleAndroid 时钟控制的 gpio Timed_apio1Binder驱动程序解决进程间通信,也能共享对象。IPC过程是通过内核一个模块(或用户空间的守护进程),中转和翻译不同进程需要共享的对象,以取得所有进程似乎处于同一个名字空间的效果。2一个轻量级的日志设备,用于抓取Android系统的各种日志。3一个基于标准Linux电源管理系统的轻量级Andriod电源管理驱动,针对嵌入式设备做了很多优化。4提供一个定时器用于把设备从

23、睡眠状态唤醒,同时也提供了一个即使在设备睡眠时也会运行的时钟基准。5为了提供调试功能,Andriod允许将调试日志信息写入一个被称为RAM Console的设备里,它是一个基于RAM的Buffer。6提供了一种使用时钟控制引脚电平的设备驱动。62.2.2.4 增加新的共享内存处理方式相应增加的文件为kernelmmashmemC。它为进程间提供大块内存,同时为内核提供回收和管理这些内存的机制。Android GoldFish 相应的平台驱动与文件列表如表 2 所示。表 2 为 Linux 内核所做补丁GoldFish 平台相关驱动 驱动文件位置字符输出设备 Kernel/drivers/cha

24、r/goldfish_tty.c图像显示设备 Kernel/drivers/video/goldfish.c键盘输入设备 Kernel/drivers/input/keyboard/goldfish_events.cRtc 设备 Kernel/drivers/rtc/rtc-goldfish.cUsb device 设备 Kernel/drivers/usb/gadget/android_adb.cSd 卡设备 Kernel/drivers/mmc/host/goldfish.cFlash 设备 Kernel/drivers/mtd/devices/goldfish_nand.cLED 设备

25、Kernel/arch/leds/ledtrig-sleep.c电源设备 Kernel/arch/power/goldfish/_battery.c音频设备 Kernel/arch/arm/mach-goldfish/audio.c电源设备 Kernel/arch/arm/mach-goldfish/pm.c时钟设备 Kernel/arch/arm/mach-goldfish/timer.c2.2.3 Android 主要驱动程序特征2.2.3.1 BinderBinder驱动程序n21是一个miscdevice,主设备号为10,此设备号使用动态获得,其设备的节点为devbinder,Bind

26、er驱动程序会在proc文件系统中建立自己的信息procbinder,其中包含以下内容。proc目录:调用Binder各个进程的内容state文件:使用函数binder_read_procstate transactions文件:使用函数binderread_proctransactionstransaction_log文件:使用函数binderread_proctransactionlogfailedtransaction_log 文件:使用函数 binder_read_proctransaction_logBinder文件被打开后,其私有数据类型struct binder_proc包含当前

27、进程、进程ID、内存映射信息、Binder的统计信息和线程信息等。在用户空间对Binder驱动程序进行控制主要使用接口是mmap、poll和ioctl。Binder相关文件作为Android uitls库一部分,这个库编译后名称为libuti ls.so,是Android系统中的一个公共库。主要文件的路径如下所示。frameworksbaseinc ludeut i i s*frameworksbaseibsutiis*Service Manager是一个守护进程,它位于Android文件系统中,负责启动各个进程之间的服务,对于相关的两个需要通讯的进程,它们通过调用1ibutils.so实现通

28、讯,而真正通讯的机制是内核空间中的一块共享。 72.2.4 Android 软件平台移植步骤2.2.4.1 Android 文件系统移植方法Android内核移植有2个方法可以实现软件平台的移植。l. 下载android内核将andriod内核代码移植到适合于s3c2440的系统平台上,这样做的好处的代码版本比较新,保留andriod比较完整的结构和驱动程序。但是经过实践,下载Android Linux 2625内核进行移植并没有成功,内核下载到开发板上调试失败,内核输出报错。出错与系统内核底层给驱动程序分配内存地址空间时调用空指针有关,导致内存泄露,经过修改还是不能成功。出错于mmslubc

29、中的内存分配函数,如下所示。void*kmem cache_al loc(struct kmem_cache*s,gfP_t gfpflags)(return slabal loc(s,gfpflags,Dbui ltin_return_address(0):)EXPORT_SYMBOL(kmem_cacheal loc):内核有自己独有且固定空间分配方式,修改其分配函数不一定会得到稳定高效的内核功能,也不是移植的主要工作。2. 先将linux26XX内核移植到s3c2440的系统平台,然后在linux系统内核上打patch,让linux内核具有与android内核同样的属性。这样的方法适合于

30、已经将硬件驱动程序移植到目标板的linux内核,但是这样会有冲突,特别是在yaffs2文件系统目录下,andriod和原linux内核中的yaffs2文件系统不兼容,打上的patch包会产生木rej文件,需要手动进行比较修改,对比fs文件目录下的冲突文件。然后移植开发板驱动程序,如DM9000网络驱动,LCD与触摸屏的驱动,文件系统yaffs2和android文件系统。在实现过程中首先成功完成内核的移植,然后试验kernel是否可以挂载yaffs2文件系统。在yaffs2文件系统挂载成功以后,可以在终端看见文件系统目录,查看文件系统命令是否可执行。接着再试着挂载qtopia文件系统查看在qto

31、pia文件系统下文件系统是否可以正常挂载,GUI界面是否可以启动,触摸屏驱动是否可以使用等。最后再移植android文件系统,让andriod内核挂载andriod自身的文件系统,这里需要成功移植binder和power驱动,否则UI界面不能成功启动。在andriod文件系统中servicemanager需要对电源的电压进行检测,如果电平低于设置要求系统将自动复位重启。Android 整个移植的步骤如图 4 所示:8图 4 Android 操作系统移植流程图2.2.4.2 Android 内核移植方法移植Android文件系统前,需要设置工作环境安装Git和Repo来获得Android文件系统

32、代码。全部代码大约2IGB,编译完成后约6GB。在编译前需要安装一些软件保证其成功编译。安装RepoRepo是一个网络下载工具它与Git配合使用可以对Android代码进行版本控制,更好的管理Android源代码n91。按照如下步骤安装、初始化、配置Repo。1确定home目录下有bin文件夹,并且在你的输出路径下。$cd$mkdir bin$echo $PATH2下载repo脚本并且将它更改为可执行。$curl https:androidgitkernelorgrepobinrepo$chmod a+xb inrepo9初始化Repo1创建一个空的目录保存源代码$mkdir mydroid$

33、cd mydroid2运行Repo初始化下载最新版本Repo$repo initu git:androidgitkernelorgplatformmanifestgit如果想得到某一分支的文件系统可以!JH-b说明分支名称。$repo initU git:androidgitkernelorgplatformmanifestgitb cupcake在初始化过程中会要求输入你的姓名和邮件地址。当终端提示repo initialized inmydroid时,初始化完成。获得源代码为了获得源代码需要在刚才创建的目录下运行$repo sync经过一段时间的下载,Android文件系统源代码就下载到指

34、定的文件夹中。经过多次的下载尝试,发现电信可以比较容易的获得Android源码,教育网和网通下载经常下载失败。编译源代码在你下载的目录下首先需要对硬件平台进行配置,运行环境设置脚本选择编译平台,然后运行make就可以编译Android文件系统源代码。如果在编译过程中出现失败,报missingrunjavatool可以编译前增加环境变量再继续编译。$export ANDROIDJAVA H0ME=$JAVA_HOME第 三 章 : Android 系 统 设 备 的 硬 件 实 现3.1 设备平台布线规则BGA是PCB上常用组件,80的高频信号及特殊信号会由BGA封装内拉出。所以BGA封装的走线

35、对重要信号会有很大影响。通常环绕在BGA附近的小零件,依重要性优先级可分为几类:1by pass。2clock终端RC电路。3damping(以串接电阻、排组形式出现,如memory BUS信号)4EMI RC电路(以dampin、C、pull height型式出现,例如USB信号)。5其它特殊电路(依不同的CHIP所加的特殊电路;例如CPU的感温电路)。640mil以下小电源电路组(以C、L、R等型式出现;此种电路常出现在AGP、CHIP或含AGP功能之CHIP附近,透过R、L分隔出不同的电源组)。7pull low R、C。8一般小电路组(以R、C、Q、U等型式出现;无走线要求)。9pul

36、l height R、RP。1到6项通常是布线重点,排版尽量靠近BGA,在排版时需要特别关注。第7项重要性次之,8、9项为一般性电路。相对于上述BGA附近的小零件重要性以优先级来说,在布线时要求如下:101旁路电阻电容与芯片同一面时,直接由芯片引脚接旁路器件,再由旁路拉出过孔接地;与芯片不同面时,可与BGA的VCC、GND pin共享同一个via,线长请勿超越100mil。2时钟终端RC电路走线尽量短,平顺,尽量不跨越VCC分隔线。3阻抗有线宽、线距、线长及分组走线需求;走线尽量短,避免参杂其它信号。440mii以下小电源电路尽量在表层完成布线,将内层空间完整保留给信号线使用,并尽量避免电源信

37、号在BGA区上下穿层,造成不必要的干扰。3.2 PCB 排版中碰到的问题和解决方法在排版中,出于提高系统设备密度的考虑采用4层PCB板。4层板的布线和平时采用的6层板的布线不同,$3C2440芯片的引脚只能从Top layer和Bottom layer中引出,布线和过孔需要考虑到中间的VCC和VDD是否能够和外面的电源和地平面相连通,否则就算连接上了内部的电源和地也是悬空的晗。在布局的时候,芯片的摆放和朝向会对布线产生影响,不合理的布局会增加布线的难度。外围芯片的布局应该尽量围绕着芯片,靠近芯片的引脚,这样布线能够依照一定的规则进行豫羽。S3C2440总共有289个引脚,布局为17x17方正,

38、前2排的引脚直接从芯片的一边引出,内部的引脚可以在引脚之间打过孔然后再引出,引出时一般首先考虑引脚是否能够先从芯片的一边引导到外围,再在外围安排和布线的顺序和位置。由于芯片内部引脚靠的比较近,一般需要4mil的线才可以引出,所以在布局时需要总体考虑引线的走向和过孔的位置,否则在后面检查时会因为布线过于紧密或被引线围绕产生悬空地或电源而重新布线。第 四 章 : Android 系 统 设 备 的 软 件 实 现4.1 Linux 内核移植1内核移植需要修改顶层Makefile文件,将Makefile文件里193行改为如下所示。ARCH ?=armCROSS_COMPILE ?=arm-linux

39、-然后用S3C2410默认配置文件#make s3c2410_defconfig 生成config,需要先修改 Makefile 文件才能执行。2修改时钟为12Mhz, 否则超级终端中会出现乱码修改Archarmmachs3c2440machsmdk2440.C将S3c24xxinitclocks(16934400)改为S3c24xxinitclocks(12000000)。3修改nand分区信息。使内核的hand flash分区信息与bootloader设置一致。4修改CPUID,否则会出现由于CPU machtype不对应找不到CPU而无法启动的情况。5修改driversmtdnands3

40、c2410.CNANDECC SOFT;NANDECC_NONE:116移植YAFFS2这在文章后会讲述具体方法和所碰到的问题。7Make menuconfig修改Kernel Features* Use the ARM EABI to compile the kernel* Allow old ABI binaries to run with this kernel(EXPERIMENTA)选上。如果不选启动时会出现Kernel panicnot syncing:Attempted to kill init !8Make zImage编译成功以后可以在archarmboot文件夹下找到zIm

41、age文件,将它下载到开发板就可以调试刚才编译出的Linux内核。4.2 增加 Android 功能打 Android 补丁比较Android和1inux内核不同产生补丁文件。Sdiffrun 1inux一2629Androide-linux-2629Androidpatch产生Android补丁文件,然后再打在移植好的Linux内核上。进入Linux内核目录做如下操作。$patchplreject然后可以查看reject的内容。检查发现大部分冲突发生在fsyaffs2文件夹下,需要手动比较2个内核文件系统加以修改重新编译。对比修改Android和Linux内核文件系统不同之后,编译打了补丁的

42、内核并下载到开发板进行调试。可以发现Android内核fs文件夹下yaffs2文件系统和同一版本Linux2629内核不兼容,内核不能识别Flash中的Yaffs2文件系统,导致内核启动以后挂载文件系统失败,所以干脆将Android内核下的yaffs2文件系统全部删除,用已经移植好的Linux的yaffs2文件系统代替,这样就可以挂载yaffs2文件系统了。4.3 移植文件系统4.3.1 配置内核支持 yaffs2 文件系统4.3.1.1 获取 yaffs2 源码4.3.1.2 修改内核支持 yaffs2执行#patch-kerSh 1inux-2.6.25.8解压yaffs2源码到yaffs

43、2目录。此时到内核源码fs目录下可以看到新添加一个名为yaffs2的目录,同时fs目录下的Makefi le文件和Kconfig文件也添加了yaffs2的配置和编译条12件。1修改内核fsKconfig增加source” fsyaffs2Kconfig”2修改内核fsMakefile增加ojb一$(CONFIG_YAFFS_FS) +=yaffs23在内核fs目录下创建yaffs2目录将yaffs2源码目录下面的Makefilekernel文件复制为内核fsyaffs2Makefie;将yaffs2源码目录的Kconfig文件复制到内核fsyaffs2目录下;将yaffs2源码目录下的*.c

44、*.h文件复制到内核fsyaffs2目录下。4.3.1.3 在配置单中添加对 yaffs 的支持在命令行输入:make menuconfig,进入配置单,然后配置如下所示:File systems-Kerne l automounter supportKernel automounter version 4 support (also supports v3)Filesystem in Userspace supportCDROMDVD Fi lesystems-ISO 9660 CDROM fi le system supportDOSFATNT Fi lesystems-MSDOS fs

45、supportVFAT(Windows一95)fs support(437)Default codepage for FAT(iso8859-1) Default iocharset for FATPseudo fi lesystems。-*Virtual memory fi le system support (former shm fs)*Tmpfs POSIX Access Control ListsUserspacedriven configuration filesystemMiscel laneous fi lesystems-YAFFS2 fi le system support

46、-*-512 bytepage devices*Lets Yaffs do its own ECC-*-2048 byte(or larger)page devices*Di sable lazy loading*Turn off wide tnodes*Force chunk erase check-*-Native language support- Native language support(iso8859-1)Default NLS OptionCodepage 437(Uni ted States,Canada)Simplified Chinese charset(CP936,G

47、B2312)NLS ISO 8859-1(Latin 1:Western European Languages)NLS UTF-8配置好后保存,编译镜像就可以把yaffs2文件系统移植好。4.3.2 制作文件系统4.3.2.1 获取 BusyBox 源码4.3.2.2 修改并配置 BusyBox解压busybox,使用命令#tar jxvf busybox-1.13.0.tar.bz2一13Cbusybox然后进到源码中,修改Makefile文件。ARCH?=armCROSSCOMPILE?=usr10calarm3.4.5binarm一linux一然后输入:#make menuconfig,

48、进入配置单进行配置。没有列出的选项,可以采用默认,或根据自己需要添加。Busybox Sett ings-BuiId Options-*Build BusyBox as a static binary(no shared 1ibs)Busybox Library Tuning-*vistyle line editing commands*Fancy shell promptsLinux Module Uti 1 ities-(1ibmodules) Default directory containing modules(modulesdep) Default name of modules.

49、dep* insmod* rmmod* lsmod* modprobe- Options common to multiple modutils配置完成后退回根目录,选择Save Configuration to an Alternate File,保存刚刚的配置mini2440busy_config,编译时调用的是.config文件。4.3.2.3 编译并安装 BusyBox在命令行输入make:make instal l,编译结束会在busybox-1130根目录下生成一个名为一install的目录。完成busybox编译后,就可以进行文件系统的构建。新建一个root一2629fs目录,复制编译出来的bu

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报