28
Android 开开开开开开开 2410 开开开开 开开开 开开开开 开开 开开开开

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

指导老师:孟宁

结题答辩

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

小组成员

姓名 性别 学号 角色

秦国利 男 SA09225328 组长

魏巍 男 SA09225329 组员

杨绍文 男 SA09225152 组员

李伟 男 SA09225399 组员

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

责任矩阵

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

报告内容

项目概述设计目标设计思路移植过程重点和难点项目总结参考文献

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

项目概述

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

我们移植的 Android 系统其内核版本为 linux-2.6.25 。

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

Android 体系结构

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

设计目标

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

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

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

设计思路

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

移植过程

搭建交叉编译环境将交叉编译工具 arm-linux-none-gnu 解压到工作目录,然后设置环境变量:

打开用户主目录下的 .bashrc ,在这个文件中加入export PATH=$PATH:/.../ arm-linux-none-gnu/bin

修改内核根目录下的 Makefile 文件,设置交叉编译工具的路径:ARCH = arm

CROSS_COMPILE=…/ arm-linux-none-gnueabi-

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

移植过程

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

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

移植过程

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

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

移植过程

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

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

移植过程

添加和修改驱动程序本小组所完善的驱动程序主要有 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控制 器的寄存器参数}

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

移植过程

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 )

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

移植过程

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

移植过程

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

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

移植过程

触摸屏驱动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); 

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

移植过程

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 、内核、根文件系统

Page 19: Android 开源项目向博创 2410 实验箱上的移植
Page 20: Android 开源项目向博创 2410 实验箱上的移植
Page 21: Android 开源项目向博创 2410 实验箱上的移植
Page 22: Android 开源项目向博创 2410 实验箱上的移植
Page 23: Android 开源项目向博创 2410 实验箱上的移植

重点和难点

• Android 内核十分庞大,要想搞明白需要花费大量精力。• 必须对博创 2410 的系统组成架构非常清楚,不然就无法

根据它来修改内核代码,来配置各个模块的取舍。• 没有编写驱动程序的经验,对于驱动程序的编写与移植感

到比较艰难。• 由于 Android 根文件系统比较庞大,制作根文件系统遇到很大困难

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

项目总结

通过此个项目,使我对 android 系统架构较深入的了解,对我们将来在该领域的发展积累了很多前期经验。

该项目的设计目标接近完成,但距离一个完善的手机操作系统还有一定的差距,仍需改进。尚需要完善的驱动有 :音频驱动、键盘驱动、 Flash 内存驱动、照相机驱动、蓝牙驱动等。

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

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

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

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

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