版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android开源项目向博创2410实验箱上的移植 Team972010年05月结题答辩Team97项目小组简介姓名学号项目分工角色赵瑞甲SA092254701、初始化分析2、根文件系统移植组长杨扬SA092252711、总体技术支持2、vivi修改3、Linux内核移植4、网卡驱动移植组员刘晓辉SA092254471、开发环境搭建Linux&Windows2、应用程序开发组员刘洋SA092253471、驱动移植分析2、LCD移植组员吴秋冬SA092254411、驱动移植分析2、触摸屏驱动移植组员Team97项目小组简介需求分析知识储备开发环境搭建概要设计Linux内核及vivi源码修改应用程
2、序开发定制生成根文件系统移植网卡驱动移植LCD驱动移植触摸屏驱动赵瑞甲FCFCF杨扬CCCCFCF刘晓辉CFFCF刘洋CCCCCFC吴秋冬CCCCCF主要内容项目概述项目意义项目步骤项目演示项目总结参考文献项目概述掌握s3c2410开发板及ARM处理器的结构、功能和应用理解Linux内核知识熟悉Android操作系统,了解其工作原理,掌握操作系统移植工作流程熟悉Linux驱动移植相关知识熟悉Android操作系统的应用开发项目意义Google公司于2007年 11月5日推出的基于Linux平台的开源手机操作系统,是首个为移动终端打造的真正开放和完整的移动软件。项目意义Android的应用手机领
3、域项目意义 Android的应用其他领域机顶盒VOIP电话KTV点唱机数字相框电视机项目步骤准备开发环境:WindowsXP & RadHat9.0BootLoader: viviLinux内核:linux-2.6.25-android-1.0_r1.tar.gz 交叉编译工具:arm-linux-none-gnueabi目标开发板:博创S3C2410开发板项目步骤vivi的修改移植vivi的修改移植及原理NAND Flash 分区使用vivi重建NAND Flash MTD分区为何重分区?vivi的MTD分区表:分区前:vivi part show mtdpart info. (6 part
4、itions) name offset size flag - vivi: 0 x00000000 0 x00020000 0 128kparam: 0 x00020000 0 x00010000 0 64kkernel : 0 x00030000 0 x00400000 0 1Mroot : 0 x00430000 0 x00300000 4 3Muser : 0 x00730000 0 x03800000 0 59Mucos: 0 x03f30000 0 x000cc000 0 816k 项目步骤vivi的修改移植Linux2.6的内核为何会变大?项目步骤vivi的修改移植make时加上V
5、=1参数,可得vmlinux的链接命令如下:/home/yang/yangdroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-ld -EL -p -no-undefined -X -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o arch/arm/kernel/init_task.o init/built-in.o -start-group usr/built-in.o arch/arm/kernel/built-in.o arch/arm/
6、mm/built-in.o arch/arm/common/built-in.o arch/arm/mach-s3c2410/built-in.o arch/arm/mach-s3c2400/built-in.o arch/arm/mach-s3c2412/built-in.o arch/arm/mach-s3c2440/built-in.o arch/arm/mach-s3c2442/built-in.o arch/arm/mach-s3c2443/built-in.o arch/arm/nwfpe/built-in.o arch/arm/plat-s3c24xx/built-in.o ke
7、rnel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o arch/arm/lib/lib.a lib/lib.a arch/arm/lib/built-in.o lib/built-in.o drivers/built-in.o sound/built-in.o net/built-in.o -end-group .tmp_kallsyms2.o项目步骤vivi的修改移植项目步骤vivi的修改移植如何使用vivi进行分区?项
8、目步骤vivi的修改移植修改arch/s3c2410/smdk.c,将结构体数组default_mtd_partitions修改如下:mtd_partition_t default_mtd_partitions = name: “vivi”, offset: 0, size: 0 x00020000, flag: 0 , name: param, offset: 0 x00020000, size: 0 x00010000, flag: 0 , name: kernel, offset: 0 x00030000, size: 0 x00400000, flag: 0 , name: root,
9、 offset: 0 x00430000, size: 0 x00300000, flag: MF_BONFS, name: user, offset: 0 x00730000, size: 0 x03800000, flag: 0 , name: ucos, offset: 0 x03f30000, size: 0 x000cc000, flag:0 ;这里还可以修改字符数组char linux_cmd的初始值,这是vivi传递给linux内核的默认启动参数。为了灵活性,我们选择在vivi命令行中将linux内核的启动参数传递给内核。项目步骤vivi的修改移植 vivi如何使用MTD分区表?
10、项目步骤vivi的修改移植MTD为raw flash设备提供了一个抽象层,它使我们可以使用同一套API来操作不同的flash设备(NAND, OneNAND, NOR, AG-AND, ECCd NOR等)vivi通过其内部的维护的flash分区表来管理flashvivi要求,在烧写flash时,使用分区名来指定烧写的目标地址 如:load flash kernel x 表示使用xmodem协议通过串口将数据下载到flash的kernel分区系统启动时,vivi会将kernel分区中的所有内容拷贝到RAM中的指定位置(0 x30008000地址处,该地址由vivi中的boot_mem_base
11、 + LINUX_KERNEL_OFFSET 决定),然后跳转到该位置执行那里的代码Linux内核也维护了一张Flash MTD分区表,我们使Linux内核的分区表与vivi的保持一致,并且使用vivi将linux根文件系统烧写至flash的root分区;这样,在linux内核的启动参数中需使用root=/dev/mtdblock3告诉linux内核在3号mtd分区即root分区寻找根文件系统项目步骤vivi的修改移植分区后:vivi part show mtdpart info. (6 partitions) name offset size flag - vivi: 0 x00000000
12、 0 x00020000 0 128kparam: 0 x00020000 0 x00010000 0 64kkernel : 0 x00030000 0 x00400000 0 4Mroot : 0 x00430000 0 x00300000 4 3Muser : 0 x00730000 0 x03800000 0 56Mucos: 0 x03f30000 0 x000cc000 0 816k 项目步骤Linux内核移植项目步骤LCD驱动移植Framebuffer框架图项目步骤LCD驱动移植FrameBuffer框架介绍LCD是图形硬件设备,Framebuffer 设备是图形硬件设备的抽象层
13、,它描述视频硬件的帧缓冲区,提供一组非常方便的应用软件访问图形硬件的接口。在Linux系统下,FrameBuffer的主要的结构如上图所示。Linux为了开发FrameBuffer程序的方便,使用了分层结构。fbmem.c处于Framebuffer设备驱动技术的中心位置。它为上层应用程序提供系统调用,也为下一层的特定硬件驱动提供接口;那些底层硬件驱动需要用到这儿的接口来向系统内核注册它们自己。 底层的驱动的工作就是对fbmem.c中的结构体fb_info的成员变量等进行填充,并通过register_framebuffer() 函数注册到名称为registered_fbFB_MAX的全局数组数组
14、中 ,其中的数组下标 为设备的次设备号。项目步骤LCD驱动移植调用过程项目步骤LCD驱动移植调用过程介绍 当用户打开一个FrameBuffer设备的时,也就是打开dev目录下的设备文件fb时,将调用这里的fb_open()函数。传进来的inode就是预打开设备的设备号,包括主设备和次设备号。fb_open函数首先通过iminor()函数取得次设备号,然后查全局数组registered_fbFB_MAX得到设备的fb_info信息,而这里面存放了设备的操作函数集fb_ops。这样,我们就可以调用具体驱动来实现相关的操作项目步骤LCD驱动移植S3c2410 LCD修改步骤 修改文件: /kerne
15、l.git/arch/arm/mach-s3c2410/mach-smdk2410.c 添加头文件: #include 添加初始化参数: 实质是填充结构体s3c2410fb_mach_info 调用设置函数使参数生效: 实质将上面填充的结构体s3c2410fb_mach_info与platform设备关联起来项目步骤触摸屏驱动移植触摸屏中断响应过程项目步骤触摸屏驱动移植触摸屏函数调用过程项目步骤触摸屏驱动移植触摸屏移植过程第一:我们需要修改 linux2.6.25/drivers/input/touchscreen 目录下的 makefile 文件, 将触摸屏驱动链接进去第二:修改 linux
16、2.6.25/ drivers/input/touchscreen/Kconfig ,在上面添加触摸屏驱动配置信息, 修改完成以后,在我们配置内核的时候,就会增加关系s3c2410的触摸屏配置第三:修改 linux-2.6.25/arch/arm/mach-s3c2410/mach-smdk2410.C文件 修改linux-2.6.25/ arch/arm/mach-s3c2410/devs.h 文件 修改arch/arm/mach-s3c2410/devs.c文件 修改上面3个文件的实质就是将触摸屏的一些初始化参数赋给 platform_device 第四:配置内核:第五:编译内核:make
17、 zImage第六:测试在/dev/input/下生成的event0文件就是触摸屏设备驱动文件Cat event0,然后触摸触摸屏,日志上就有触摸点的x和y坐标项目步骤触摸屏驱动移植项目步骤根文件系统移植Linux内核启动挂载android根文件系统过程分析/arch/arm/boot/compressed/head.SStart: /vivi引导bootstraploader (0 x30008000)/arch/arm/boot/compressed/misc.cDecompressed_kernel()/解压内核,将内核放到RAM中Call_kernel() /跳转到RAM里存放内核的地
18、方/init/main.c Start_kernel ():/启动内核Setup_arch() /Rest_init()Init()Do_basic_setup()Prepare_namespace()/启动加载初始化结束init_post(void) /进入用户模式LINUx内核启动部分项目步骤根文件系统移植init_post(void) 分析项目步骤根文件系统移植从GoogleCode上获取Android源码,进入platform下编译Android源码项目步骤根文件系统移植项目步骤根文件系统移植Linux内核启动挂载android根文件系统过程分析/zhaoAndroid/out/tar
19、get/product/generic/root项目步骤根文件系统移植Init.c分析项目步骤根文件系统移植init进程是Android启动后系统执行的第一个名称为init的可执行程序。这个程序以一个守护进程的方式运行,它提供了以下功能: 设备管理 解析启动脚本 执行启动脚本中的基本功能 执行启动脚本中的各种功能 项目步骤根文件系统移植项目步骤根文件系统移植Init.rc分析项目步骤根文件系统移植Init.rc是一个脚本文件,这个脚本被直接安装到目标系统的根文件系统中,被init可执行程序解析,有一定的语法规则理解这些语法规则有利于我们很好理解到底init.rc执行了哪些命令。四大类声明组成:
20、行为类(Actions),命令类(Commands),服务类(Services),选项类(Options).如果想要修改启动过程只需要修改init.c或者init.rc里的内容即可 项目步骤根文件系统移植Init.rc修改项目步骤应用程序开发功能和架构功能:展示小组内各个成员工作。程序开始运行时首先进入一个开始动画,动画是一个3D立方体不停的旋转,立方体的每面都有一张Android机器人的图片纹理,动画持续时间是10s。动画结束后,进入小组成员展示界面,该界面有小组5位成员的照片,照片依次横向排列,屏幕内一次最多能看到三位成员的照片,通过拖拽图片可以移动,看到其他图片。点击每个小组成员的照片可
21、以进入相应成员工作说明的界面,该界面对各个小组成员的工作进行了简明扼要的说明,通过返回按钮可以返回小组成员展示界面。项目步骤应用程序开发架构:开头动画:OpenGL实现,由四个程序文件:OpenGL.java、GLView.java、GLRenderer.java、GLCube.java。OpenGL只是将GLView中定义的视图类GLView装配上并用线程控制运行时间。而GLView定义的视图类是装配了GLRenderer中定义的Renderer类,Renderer类是由GLSurfaceView中定义的一个专门用于渲染3D的借口。在GLRenderer构建Renderer类时,我们必须实现
22、3个抽象方法:public vod onDrawFrame(GL10 gl)、public void onSurfaceChanged(GL10 gl, int width, int height)、public void onSurfaceCreated(GL10 gl, EGLConfig config)。当窗口被创建时需要调用onSurfaceCreated,所以要在里面对OpenGL做一些初始化的工作,如立方体模型的初始化,光线的定义,纹理的载入等。当窗口的大小发生改变时调用onSurfaceChanged方法,在该方法中需要设置OpenGL场景的大小。最后所有的绘图操作都在onDra
23、wFrame()方法中进行。而立方体模型的定义是在GLCube中实现的。项目步骤应用程序开发小组成员展示界面:界面的拖动效果是由Gallery控件实现的,但需要一个容器来存放Gallery显示的图片,这里需要一个继承自BaseAdapter类的派生类来装这些图片,这个容器需要将所有要显示的图片的索引存放在一个int型数组中,然后通过setImageResource方法来设置ImageView要显示的图片资源,最后将每张图片的ImageView显示在屏幕上。要对Gallery设置监听其OnItemClickListener,从而确定用户选中的是哪一张图片,当鼠标点击某个图片时,捕捉并处理该事件,
24、即显示该图片代表的成员工作界面。成员工作简介界面:这个界面非常简单,一个TextView显示介绍文本,一个Button控制返回 项目步骤应用程序开发项目演示项目演示项目演示项目演示项目演示项目演示项目演示项目演示项目演示项目总结收获: 熟悉了Android Linux内核结构、修改移植 熟悉了Linux驱动构架、移植 熟悉了Android文件系统引导过程 熟悉了Android应用程序开发步骤 锻炼了与人沟通和协作的能力遗留问题: 内核未进行适当的裁剪 由于博创开发板内存较小,文件系统太大,目前只能用NFS挂载参考文献/u2/69947/showart_1101212.html/u1/34474
25、/showart.php?id=369449/u1/34474/showart_384863.html/java211/archive/2009/02/02/3857595.aspx/lingdxuyan/archive/2009/12/25/5075508.aspx/u1/34474/showart.php?id=384882嵌入式LINUX开发 作者:(美)哈利南(Hallinan,C.)著出版社:人民邮电出版社 出版时间:2008年02月 Linux设备驱动程序(第三版) 作者:(美)科波特(Corbet,J.) 等著 出版社:中国电力出版社 深入理解LINUX内核作者:(美)博韦,西斯
26、特 著,陈莉君,张琼声,张宏伟 译 出版社:中国电力出版社 出版时间:2007年09月 Android系统原理及开发要点详解 作者:韩超,梁泉著 出版社:电子工业出版社 出版时间:2010年01月 深入浅出Google Android 作者:E2EColud工作室 编著 出版社:人民邮电出版社 Android应用开发揭秘 作者:杨丰盛著 出版社:机械工业出版社 出版时间:2010年01月 9、静夜四无邻,荒居旧业贫。9月-229月-22Sunday, September 18, 202210、雨中黄叶树,灯下白头人。21:00:3221:00:3221:009/18/2022 9:00:32
27、PM11、以我独沈久,愧君相见频。9月-2221:00:3221:00Sep-2218-Sep-2212、故人江海别,几度隔山川。21:00:3221:00:3221:00Sunday, September 18, 202213、乍见翻疑梦,相悲各问年。9月-229月-2221:00:3221:00:32September 18, 202214、他乡生白发,旧国见青山。18 九月 20229:00:32 下午21:00:329月-2215、比不了得就不比,得不到的就不要。九月 229:00 下午9月-2221:00September 18, 202216、行动出成果,工作出财富。2022/9/
28、18 21:00:3221:00:3218 September 202217、做前,能够环视四周;做时,你只能或者最好沿着以脚为起点的射线向前。9:00:32 下午9:00 下午21:00:329月-229、没有失败,只有暂时停止成功!。9月-229月-22Sunday, September 18, 202210、很多事情努力了未必有结果,但是不努力却什么改变也没有。21:00:3221:00:3221:009/18/2022 9:00:32 PM11、成功就是日复一日那一点点小小努力的积累。9月-2221:00:3221:00Sep-2218-Sep-2212、世间成事,不求其绝对圆满,留一份不足,可得无限完美。21:00:3221:00:3221:00Sunday, September 18, 202213、不知香积寺,数里入云峰。9月-229月-2221:00:3221:00:32Septembe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年阳泉师范高等专科学校单招综合素质考试参考题库附答案详解
- 2026年安徽国防科技职业学院单招综合素质笔试备考题库带答案解析
- 2026年广西经济职业学院单招综合素质笔试备考题库带答案解析
- 2026年安徽交通职业技术学院单招职业技能考试备考试题带答案解析
- 土地租赁协议2025年使用期限
- 2026年常州信息职业技术学院高职单招职业适应性考试备考题库有答案解析
- 2026年杭州科技职业技术学院单招综合素质笔试备考试题带答案解析
- 2026年德阳城市轨道交通职业学院单招职业技能考试模拟试题带答案解析
- 投资合作开发合同协议2025年地产
- 投资并购合作协议(2025年私募基金)
- 电子厂安全生产检查表及规范
- 设备管理安全风险辨识
- 新疆赛乃姆舞蹈课件
- 中央管理企业负责人薪酬制度改革方案
- 3.提高多标高深基坑支护施工验收一次合格率-飞扬QC小组
- 2025年大学《社会学-社会心理学》考试参考题库及答案解析
- 数据中心智能化系统设备部署方案
- 税务人员考试题库及答案
- 专项突破:平面直角坐标系中面积、规律、新定义、几何综合问题(解析版)
- 2025年医疗健康行业医疗旅游营销
- 淘宝分销合同模板7篇
评论
0/150
提交评论