android开源项目向arm2410实验箱上的移植

上传人:m**** 文档编号:570179888 上传时间:2024-08-02 格式:PPT 页数:56 大小:10.35MB
返回 下载 相关 举报
android开源项目向arm2410实验箱上的移植_第1页
第1页 / 共56页
android开源项目向arm2410实验箱上的移植_第2页
第2页 / 共56页
android开源项目向arm2410实验箱上的移植_第3页
第3页 / 共56页
android开源项目向arm2410实验箱上的移植_第4页
第4页 / 共56页
android开源项目向arm2410实验箱上的移植_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《android开源项目向arm2410实验箱上的移植》由会员分享,可在线阅读,更多相关《android开源项目向arm2410实验箱上的移植(56页珍藏版)》请在金锄头文库上搜索。

1、Android开源项目向博创2410实验箱上的移植 Team972010年05月结题答辩1Team97项目小组简介姓名学号项目分工角色赵瑞甲SA092254701、初始化分析2、根文件系统移植组长杨扬SA092252711、总体技术支持2、vivi修改3、Linux内核移植4、网卡驱动移植组员刘晓辉SA092254471、开发环境搭建Linux&Windows2、应用程序开发组员刘洋SA092253471、驱动移植分析2、LCD移植组员吴秋冬SA092254411、驱动移植分析2、触摸屏驱动移植组员2Team97项目小组简介需求分析知识储备开发环境搭建概要设计Linux内核及vivi源码修改应

2、用程序开发定制生成根文件系统移植网卡驱动移植LCD驱动移植触摸屏驱动赵瑞甲FCFCF杨扬CCCCFCF刘晓辉CFFCF刘洋CCCCCFC吴秋冬CCCCCF3主要内容项目概述项目意义项目步骤项目演示项目总结参考文献4项目概述掌握s3c2410开发板及ARM处理器的结构、功能和应用理解Linux内核知识熟悉Android操作系统,了解其工作原理,掌握操作系统移植工作流程熟悉Linux驱动移植相关知识熟悉Android操作系统的应用开发5项目意义Google公司于2007年 11月5日推出的基于Linux平台的开源手机操作系统,是首个为移动终端打造的真正开放和完整的移动软件。6项目意义Android

3、的应用手机领域7项目意义 Android的应用其他领域机顶盒VOIP电话KTV点唱机数字相框电视机8项目步骤准备开发环境:WindowsXP & RadHat9.0BootLoader: viviLinux内核:linux-2.6.25-android-1.0_r1.tar.gz 交叉编译工具:arm-linux-none-gnueabi目标开发板:博创S3C2410开发板9项目步骤vivi的修改移植vivi的修改移植及原理10NAND Flash 分区使用vivi重建NAND Flash MTD分区为何重分区?vivi的MTD分区表:分区前:vivipartshowmtdpartinfo.(

4、6partitions)nameoffsetsizeflag-vivi:0x000000000x000200000 128kparam:0x000200000x00010000064kkernel :0x000300000x004000000 1Mroot:0x004300000x003000004 3Muser:0x007300000x038000000 59Mucos:0x03f300000x000cc0000816k11项目步骤vivi的修改移植Linux2.6的内核为何会变大?12项目步骤vivi的修改移植make时加上V=1参数,可得vmlinux的链接命令如下:/home/yang

5、/yangdroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-ld-EL-p-no-undefined-X-ovmlinux-Tarch/arm/kernel/vmlinux.ldsarch/arm/kernel/head.oarch/arm/kernel/init_task.oinit/built-in.o-start-groupusr/built-in.oarch/arm/kernel/built-in.oarch/arm/mm/built-in.oarch/arm/common/built-in.oarch/arm

6、/mach-s3c2410/built-in.oarch/arm/mach-s3c2400/built-in.oarch/arm/mach-s3c2412/built-in.oarch/arm/mach-s3c2440/built-in.oarch/arm/mach-s3c2442/built-in.oarch/arm/mach-s3c2443/built-in.oarch/arm/nwfpe/built-in.o arch/arm/plat-s3c24xx/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-i

7、n.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.o13项目步骤vivi的修改移植14项目步骤vivi的修改移植如何使用vivi进行分区?15项目步骤vivi的修改移植修改arch/s3c2410/smdk.c,将结构体数组default_m

8、td_partitions修改如下:mtd_partition_tdefault_mtd_partitions=name:“vivi”,offset:0,size:0x00020000,flag:0,name:param,offset:0x00020000,size:0x00010000,flag:0,name:kernel,offset:0x00030000,size:0x00400000,flag:0,name:root,offset:0x00430000,size:0x00300000,flag:MF_BONFS,name:user,offset:0x00730000,size:0x03

9、800000,flag:0,name:ucos,offset:0x03f30000,size:0x000cc000,flag: 0;这里还可以修改字符数组charlinux_cmd的初始值,这是vivi传递给linux内核的默认启动参数。为了灵活性,我们选择在vivi命令行中将linux内核的启动参数传递给内核。16项目步骤vivi的修改移植 vivi如何使用MTD分区表?17项目步骤vivi的修改移植MTD为rawflash设备提供了一个抽象层,它使我们可以使用同一套API来操作不同的flash设备(NAND,OneNAND,NOR,AG-AND,ECCdNOR等)vivi通过其内部的维护的

10、flash分区表来管理flashvivi要求,在烧写flash时,使用分区名来指定烧写的目标地址如:loadflashkernelx表示使用xmodem协议通过串口将数据下载到flash的kernel分区系统启动时,vivi会将kernel分区中的所有内容拷贝到RAM中的指定位置(0x30008000地址处,该地址由vivi中的boot_mem_base+LINUX_KERNEL_OFFSET决定),然后跳转到该位置执行那里的代码Linux内核也维护了一张FlashMTD分区表,我们使Linux内核的分区表与vivi的保持一致,并且使用vivi将linux根文件系统烧写至flash的root分

11、区;这样,在linux内核的启动参数中需使用root=/dev/mtdblock3告诉linux内核在3号mtd分区即root分区寻找根文件系统18项目步骤vivi的修改移植分区后:vivipartshowmtdpartinfo.(6partitions)nameoffsetsizeflag-vivi:0x000000000x000200000 128kparam:0x000200000x00010000064kkernel :0x000300000x004000000 4Mroot:0x004300000x003000004 3Muser:0x007300000x038000000 56Mu

12、cos:0x03f300000x000cc0000816k19项目步骤Linux内核移植20项目步骤LCD驱动移植Framebuffer框架图21项目步骤LCD驱动移植FrameBuffer框架介绍LCD是图形硬件设备,Framebuffer 设备是图形硬件设备的抽象层,它描述视频硬件的帧缓冲区,提供一组非常方便的应用软件访问图形硬件的接口。在Linux系统下,FrameBuffer的主要的结构如上图所示。Linux为了开发FrameBuffer程序的方便,使用了分层结构。fbmem.c处于Framebuffer设备驱动技术的中心位置。它为上层应用程序提供系统调用,也为下一层的特定硬件驱动提供

13、接口;那些底层硬件驱动需要用到这儿的接口来向系统内核注册它们自己。 底层的驱动的工作就是对fbmem.c中的结构体fb_info的成员变量等进行填充,并通过register_framebuffer() 函数注册到名称为registered_fbFB_MAX的全局数组数组中 ,其中的数组下标 为设备的次设备号。22项目步骤LCD驱动移植调用过程23项目步骤LCD驱动移植调用过程介绍 当用户打开一个FrameBuffer设备的时,也就是打开dev目录下的设备文件fb时,将调用这里的fb_open()函数。传进来的inode就是预打开设备的设备号,包括主设备和次设备号。fb_open函数首先通过im

14、inor()函数取得次设备号,然后查全局数组registered_fbFB_MAX得到设备的fb_info信息,而这里面存放了设备的操作函数集fb_ops。这样,我们就可以调用具体驱动来实现相关的操作24项目步骤LCD驱动移植S3c2410 LCD修改步骤 修改文件:修改文件: /kernel.git/arch/arm/mach-s3c2410/mach-smdk2410.c 添加头文件:添加头文件: #include 添加初始化参数:添加初始化参数: 实质是填充结构体s3c2410fb_mach_info 调用设置函数使参数生效:调用设置函数使参数生效: 实质将上面填充的结构体s3c2410

15、fb_mach_info与platform设备关联起来25项目步骤触摸屏驱动移植触摸屏中断响应过程26项目步骤触摸屏驱动移植触摸屏函数调用过程27项目步骤触摸屏驱动移植触摸屏移植过程第一:我们需要修改 linux2.6.25/drivers/input/touchscreen 目录下的 makefile 文件, 将触摸屏驱动链接进去第二:修改 linux2.6.25/ drivers/input/touchscreen/Kconfig ,在上面添加触摸屏驱动配置信息, 修改完成以后,在我们配置内核的时候,就会增加关系s3c2410的触摸屏配置第三:修改 linux-2.6.25/arch/ar

16、m/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 zImage第六:测试在/dev/input/下生成的event0文件就是触摸屏设备驱动文件Cat event0,然后触摸触摸屏,日志上就有触摸点的x和y坐标28项目步骤触摸屏驱动移植29项目步骤根文件系统移植Linux内核启动挂载andro

17、id根文件系统过程分析/arch/arm/boot/compressed/head.SStart: /vivi引导引导bootstraploader (0x30008000)/arch/arm/boot/compressed/misc.cDecompressed_kernel()/解压内核,将内核放到解压内核,将内核放到RAM中中Call_kernel() /跳转到跳转到RAM里存放内核的地方里存放内核的地方/init/main.c Start_kernel ():/启动内核启动内核Setup_arch() /Rest_init()Init()Do_basic_setup()Prepare_n

18、amespace()/启动加载初始化结束启动加载初始化结束init_post(void) /进入用户模式进入用户模式LINUx内核启动部分30项目步骤根文件系统移植init_post(void) 分析31项目步骤根文件系统移植从GoogleCode上获取Android源码,进入platform下编译Android源码32项目步骤根文件系统移植33项目步骤根文件系统移植Linux内核启动挂载android根文件系统过程分析/zhaoAndroid/out/target/product/generic/root34项目步骤根文件系统移植Init.c分析35项目步骤根文件系统移植init进程是And

19、roid启动后系统执行的第一个名称为init的可执行程序。这个程序以一个守护进程的方式运行,它提供了以下功能: 设备管理 解析启动脚本 执行启动脚本中的基本功能 执行启动脚本中的各种功能 36项目步骤根文件系统移植37项目步骤根文件系统移植Init.rc分析38项目步骤根文件系统移植Init.rc是一个脚本文件,这个脚本被直接安装到目标系统的根文件系统中,被init可执行程序解析,有一定的语法规则理解这些语法规则有利于我们很好理解到底init.rc执行了哪些命令。四大类声明组成:行为类(Actions),命令类(Commands),服务类(Services),选项类(Options).如果想要

20、修改启动过程只需要修改init.c或者init.rc里的内容即可 39项目步骤根文件系统移植Init.rc修改40项目步骤应用程序开发功能和架构功能:展示小组内各个成员工作。程序开始运行时首先进入一个开始动画,动画是一个3D立方体不停的旋转,立方体的每面都有一张Android机器人的图片纹理,动画持续时间是10s。动画结束后,进入小组成员展示界面,该界面有小组5位成员的照片,照片依次横向排列,屏幕内一次最多能看到三位成员的照片,通过拖拽图片可以移动,看到其他图片。点击每个小组成员的照片可以进入相应成员工作说明的界面,该界面对各个小组成员的工作进行了简明扼要的说明,通过返回按钮可以返回小组成员展

21、示界面。41项目步骤应用程序开发架构:开头动画:OpenGL实现,由四个程序文件:OpenGL.java、GLView.java、GLRenderer.java、GLCube.java。OpenGL只是将GLView中定义的视图类GLView装配上并用线程控制运行时间。而GLView定义的视图类是装配了GLRenderer中定义的Renderer类,Renderer类是由GLSurfaceView中定义的一个专门用于渲染3D的借口。在GLRenderer构建Renderer类时,我们必须实现3个抽象方法:public vod onDrawFrame(GL10 gl)、public void o

22、nSurfaceChanged(GL10 gl, int width, int height)、public void onSurfaceCreated(GL10 gl, EGLConfig config)。当窗口被创建时需要调用onSurfaceCreated,所以要在里面对OpenGL做一些初始化的工作,如立方体模型的初始化,光线的定义,纹理的载入等。当窗口的大小发生改变时调用onSurfaceChanged方法,在该方法中需要设置OpenGL场景的大小。最后所有的绘图操作都在onDrawFrame()方法中进行。而立方体模型的定义是在GLCube中实现的。42项目步骤应用程序开发小组成员

23、展示界面:界面的拖动效果是由Gallery控件实现的,但需要一个容器来存放Gallery显示的图片,这里需要一个继承自BaseAdapter类的派生类来装这些图片,这个容器需要将所有要显示的图片的索引存放在一个int型数组中,然后通过setImageResource方法来设置ImageView要显示的图片资源,最后将每张图片的ImageView显示在屏幕上。要对Gallery设置监听其OnItemClickListener,从而确定用户选中的是哪一张图片,当鼠标点击某个图片时,捕捉并处理该事件,即显示该图片代表的成员工作界面。成员工作简介界面:这个界面非常简单,一个TextView显示介绍文本

24、,一个Button控制返回 43项目步骤应用程序开发44项目演示45项目演示46项目演示47项目演示48项目演示49项目演示50项目演示51项目演示52项目演示53项目总结收获: 熟悉了Android Linux内核结构、修改移植 熟悉了Linux驱动构架、移植 熟悉了Android文件系统引导过程 熟悉了Android应用程序开发步骤 锻炼了与人沟通和协作的能力遗留问题: 内核未进行适当的裁剪 由于博创开发板内存较小,文件系统太大,目前只能用NFS挂载54参考文献嵌入式嵌入式LINUXLINUX开发开发 作者:(美)哈利南(Hallinan,C.)著出版社:人民邮电出版社 出版时间:2008

25、年02月 Linux设备驱动程序(第三版)设备驱动程序(第三版) 作者:(美)科波特(Corbet,J.) 等著 出版社:中国电力出版社 深入理解深入理解LINUXLINUX内核内核作者:(美)博韦,西斯特 著,陈莉君,张琼声,张宏伟 译 出版社:中国电力出版社 出版时间:2007年09月 AndroidAndroid系统原理及开发要点详解系统原理及开发要点详解 作者:韩超,梁泉著 出版社:电子工业出版社 出版时间:2010年01月 深入浅出深入浅出Google Android Google Android 作者:E2EColud工作室 编著 出版社:人民邮电出版社 AndroidAndroid应用开发揭秘应用开发揭秘 作者:杨丰盛著 出版社:机械工业出版社 出版时间:2010年01月 55感谢孟宁老师悉心指导56

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号