1 / 28

Android 开源项目向博创 2410 实验箱上的移植

Android 开源项目向博创 2410 实验箱上的移植. 结题答辩. 指导老师:孟宁. 小组成员. 责任矩阵. 报告内容. 项目概述 设计目标 设计思路 移植过程 重点和难点 项目总结 参考文献. 项目概述.

Download Presentation

Android 开源项目向博创 2410 实验箱上的移植

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Android开源项目向博创2410实验箱上的移植 结题答辩 指导老师:孟宁

  2. 小组成员

  3. 责任矩阵

  4. 报告内容 • 项目概述 • 设计目标 • 设计思路 • 移植过程 • 重点和难点 • 项目总结 • 参考文献

  5. 项目概述 Android是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名为软件叠层)的架构,主要分为三部分:底层以Linux核心为基础,由c语言开发,只提供基本功能。中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以java编写。 我们移植的Android系统其内核版本为linux-2.6.25。

  6. Android体系结构

  7. 设计目标 • 将Android成功移植到博创的2410试验箱上; • 添加和修改最基本的驱动程序; • 系统运行后能进行最基本的操作; • 编写一简单应用程序,使之能在系统中成功运行

  8. 设计思路 该设计思路遵循嵌入式系统移植的基本思路:

  9. 移植过程 • 搭建交叉编译环境 将交叉编译工具arm-linux-none-gnu解压到工作目录,然后设置环境变量: 打开用户主目录下的.bashrc,在这个文件中加入export PATH=$PATH:/.../ arm-linux-none-gnu/bin • 修改内核根目录下的Makefile文件,设置交叉编译工具的路径: ARCH = arm CROSS_COMPILE=…/ arm-linux-none-gnueabi-

  10. 移植过程 • 修改VIVI bootloader,因为博创2410自带的VIVI的MTD分区表默认如下。可以看只给内核分1M空间和根文件系统3M空间,而实际Android内核编译后大于1M,根文件系统也大于3M,所以修改要修改VIVI

  11. 移植过程 找到VIIV的arch/s3c2410/smdk.c ,修改NAND flash分区如下:

  12. 移植过程 • 修改后分区的大小要跟arch\arm\plat-s3c24xx\common-smdk.c中分区相同,如下:

  13. 移植过程 • 添加和修改驱动程序 本小组所完善的驱动程序主要有LCD驱动、USB接口驱动、网卡驱动、触摸屏驱动。 • LCD驱动 1)修改arch/arm/mach-s3c2410/mach-smdk2410.c文件,添加头文件#include <asm/arch/fb.h> 2)添加初始化s3c2410的LCD控制器时所需的参数 3)添加LCD控制器的寄存器参数设置函数 ,查找smdk2410_init,添加如下代码:  static void __init smdk2410_init(void)   {                s3c24xx_fb_set_platdata(&qt2410_lcd_info);//设置LCD控制 器的寄存器参数 }

  14. 移植过程 • USB驱动 因Linux2.6版本的内核已有完善的usb驱动程序,因此只需在arch/arm/mach-s3c2410/mach-smdk2410.c中添加 usb接口相关的初始化信息: 1)添加Usb接口相关的结构体: struct s3c2410_hcd_info usb_s3c2410_info = { .port[0] = { .flags = S3C_HCDFLG_USED }};  2)

  15. 移植过程

  16. 移植过程 3)在smdk2410_map_io函数最后添加: smdk2410_usb_init(); • 博创2410-S所配网卡AX88796(NE2000兼容网卡)驱动 1)修改arch/arm/目录下的Kconfig文件,增加ISA总线支持,使其在make menuconfig 时出现NE2000的网卡配置选项 2)修改include/asm-arm/arch-s3c2410文件夹下的map.h文件。加入AX88796的地址映射 3)修改arch/arm/mach-s3c2410文件夹下的mach-smdk2410.c文件。在smdk2410_iodesc 中加入AX88796的地址信息。 4)修改网卡驱动的主要文件drivers/net/ne.c

  17. 移植过程 触摸屏驱动 1)首先打一个补丁:s3c2410_touchscreen.patch,该补丁主要是在设备文件、配置文件已经驱动程序中添加与触摸屏相关的数据、参数和方法。 2) arch/arm/mach-s3c2410/mach-smdk2410.c中添加与触摸屏相关的结构体: static struct s3c2410_ts_mach_info smdk2410_ts_cfg __initdata = {         .delay = 20000,         .presc = 49,         .oversampling_shift = 2, };并添加支持触摸屏平台代码的信息,这个找到一个名为*smdk2410_devices[]的结构体指针数组里添加:&s3c_device_ts,然后在smdk2410_map_io函数里添加:set_s3c2410ts_info(&smdk2410_ts_cfg);

  18. 移植过程 3)修改driver/input/touchscreen/Makefile,添加如下内容:obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o 4)将驱动s3c2410_ts.c放置在driver/input/touchscreen/下面 • 编译内核 在make menuconfig配置界面中将上面所述的驱动模块以及与android相关的模块选中,保存配置后make zImage • 制作根文件系统 下载内核源码,用busybox工具制作根文件系统 • 编写一小应用程序,将其放在根文件系统/data/app目录下 • 烧写VIVI、内核、根文件系统

  19. 重点和难点 • Android内核十分庞大,要想搞明白需要花费大量精力。 • 必须对博创2410的系统组成架构非常清楚,不然就无法根据它来修改内核代码,来配置各个模块的取舍。 • 没有编写驱动程序的经验,对于驱动程序的编写与移植感到比较艰难。 • 由于Android根文件系统比较庞大,制作根文件系统遇到很大困难

  20. 项目总结 通过此个项目,使我对android系统架构较深入的了解,对我们将来在该领域的发展积累了很多前期经验。 该项目的设计目标接近完成,但距离一个完善的手机操作系统还有一定的差距,仍需改进。尚需要完善的驱动有:音频驱动、键盘驱动、Flash内存驱动、照相机驱动、蓝牙驱动等。

  21. 参考资料 • Linux设备驱动程序学习 • 嵌入式Android_Linux开发_博客 • 嵌入式Linux系统移植 • Android系统及根文件目录分析 • Android源码编译的几个问题 • Android根文件系统启动过程 • NANDFlash Partition • Android根文件系统制作方法 • Android 中文论坛

  22. 非常感谢孟宁老师的悉心指导!!! 谢谢!

More Related