网站导航: 首页 > 设计参考 > 正文 文章搜索
将Android移植到FS2410开发板上
 
文章编号:
091118203908
文章分类: 单片机 ARM
点 击:
...
关 键 词: Android,FS2410
文章来源:
摘 要:

一、移植步骤
一、移植Android内核到FS2410开发板上
1、从http://code.google.com/p/android/downloads/list上下载linux-2.6.25-android-1.0_r1.tar.gz

2、将内核解压到用户目录,如/home/wangan/kernel.git

3、进入kernel.git文件夹,如cd ~/kernel.git/

4、修改arch/arm/plat-s3c24xx/common-smdk.c文件中的nand flash分区设置,如gedit arch/arm/plat-s3c24xx/common-smdk.c
修改static struct mtd_partition smdk_default_nand_part[]结构体为:
 

 
  1. static struct mtd_partition smdk_default_nand_part[] = {   
  2.        [0] = {   
  3.               .name      = "Boot Agent",   
  4.               .size = SZ_256K,   
  5.               .offset     = 0,   
  6.        },   
  7.        [1] = {   
  8.               .name      = "Linux Kernel",   
  9.               .offset = SZ_256K,   
  10.               .size = SZ_2M - SZ_256K,   
  11.        },   
  12.        [2] = {   
  13.               .name      = "File System",   
  14.               .offset = SZ_2M,   
  15.               .size = SZ_32M - SZ_2M,   
  16.        },   
  17.        [3] = {   
  18.               .name      = "Other",   
  19.               .offset     = SZ_32M,   
  20.               .size = SZ_32M,   
  21.        }   
  22. };   


5、在http://www.codesourcery.com/gnu_toolchains/arm/portal/release644网站上下载IA32 GNU/Linux TAR。

6、将文件解压到用户目录,如/home/wangan/arm-2008q3

7、进入arm-2008q3/bin文件夹,如cd ~/arm-2008q3/bin/

8、添加当前路径进入环境变量,如export PATH=$PWD:$PATH,或修改~/.bashrc文件并重新登录

9、进入内核文件夹,如cd ~/kernel.git/

10、修改Makefile文件,如gedit Makefile
更改ARCH和CROSS_COMPILE
#ARCH          ?= $(SUBARCH)
ARCH            ?= arm
#CROSS_COMPILE      ?= arm-eabi-
CROSS_COMPILE       ?= arm-none-eabi-

11、从华清远见Linux-2.6.8.1内核压缩包中提取.config文件(注意:config前面有个“.”)放入kernel.git文件夹

12、运行make menuconfig
(1) 确保System Type  ---> ARM system type ()中的内容为Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442, S3C2443
(2) 确保System Type  ---> S3C2410 Machines  ---> [*] SMDK2410/A9M2410被勾选
(3) 取消选择与Goldfish相关的内容
Device Drivers  ---> Character devices  ---> < > Goldfish TTY Driver
Device Drivers  ---> Power supply class support  ---> < >   Goldfish battery driver (NEW)
Device Drivers  ---> Real Time Clock  ---> < >   GOLDFISH (NEW)
Device Drivers  ---> Graphics support  ---> Support for frame buffer devices  ---> < >   Goldfish Framebuffer
(4) 选择S3C2410 LCD相关的内容
Device Drivers  ---> Graphics support  ---> Support for frame buffer devices  ---> <*>   S3C2410 LCD framebuffer support
Device Drivers  ---> Graphics support  ---> [*] Bootup logo  ---> [*]   Standard black and white Linux logo
Device Drivers  ---> Graphics support  ---> [*] Bootup logo  ---> [*]   Standard 16-color Linux logo
Device Drivers  ---> Graphics support  ---> [*] Bootup logo  ---> [*]   Standard 224-color Linux logo
(5) 选中Android内核必须选项
Kernel Features  ---> [*] Use the ARM EABI to compile the kernel
General setup  ---> [*] Use full shmem filesystem
General setup  ---> [*] Enable Android's Shared Memory Subsystem
System Type  ---> [*] Support Thumb user binaries
Device Drivers  ---> Android  ---> [*] Android log driver
Device Drivers  ---> Android  ---> <*> Binder IPC Driver
(6) 尽量选中Android内核可选选项
Device Drivers  ---> Android  ---> [*] RAM buffer console
Device Drivers  ---> Android  ---> [*] Android timed gpio driver
Device Drivers  ---> Android  ---> [*] Only allow certain groups to create sockets
(7) 其余CONFIG选项,如系统支持请一并选择
CONFIG_ANDROID_POWER =y
CONFIG_ANDROID_POWER_STAT =y
CONFIG_ANDROID_POWER_ALARM =y
(可以在Kconfig文件中查找ANDROID_POWER等字段进行选择,或者直接修改.config文件)

13、退出并保存.config 

二、移植LCD驱动到Linux-2.6.25内核
1、 进入kernel.git文件夹,如cd ~/kernel.git/
2、 修改arch/arm/mach-s3c2410/mach-smdk2410.c文件,如gedit arch/arm/mach-s3c2410/mach-smdk2410.c
(1) 增加头文件#include <asm/arch/fb.h>
(2) 增加两给结构体
 

 
  1. static struct s3c2410fb_display smdk2410_lcd_cfg __initdata = {   
  2. .lcdcon5 = S3C2410_LCDCON5_FRM565 |   
  3. S3C2410_LCDCON5_INVVLINE |   
  4. S3C2410_LCDCON5_INVVFRAME |   
  5. S3C2410_LCDCON5_PWREN |   
  6. S3C2410_LCDCON5_HWSWP,   
  7. .type = S3C2410_LCDCON1_TFT,   
  8. .width = 320,   
  9. .height = 240,   
  10. .pixclock = 174757,    
  11. .xres = 320,   
  12. .yres = 240,   
  13. .bpp = 16,   
  14. .left_margin = 16,   
  15. .right_margin = 59,   
  16. .hsync_len = 9,   
  17. .upper_margin = 2,   
  18. .lower_margin = 6,   
  19. .vsync_len = 16,   
  20. };   
  21.   
  22. static struct s3c2410fb_mach_info smdk2410_fb_info __initdata = {   
  23. .displays = &smdk2410_lcd_cfg,   
  24. .num_displays = 1,   
  25. .default_display = 0,   
  26. .gpccon = 0xaa955699,   
  27. .gpccon_mask = 0xffc003cc,   
  28. .gpcup = 0x0000ffff,   
  29. .gpcup_mask = 0xffffffff,   
  30. .gpdcon = 0xaa95aaa1,   
  31. .gpdcon_mask = 0xffc0fff0,   
  32. .gpdup = 0x0000faff,   
  33. .gpdup_mask = 0xffffffff,   
  34. .lpcsel = 0xf82,   
  35. };   

(3) 在smdk2410_init()函数中增加s3c24xx_fb_set_platdata(&smdk2410_fb_info); 

二、移植触摸屏驱动到Linux-2.6.25内核(参见《基于linux-2.26.5内核的FS2410开发板触摸屏驱动移植》)并制作zImage文件,如make
       这里提一下,确保已经勾选Device Drivers  ---> Input device support  ---> <*>   Event interface,本人曾经在这里徘徊,感谢游老师悉心教诲! 

三、制作支持ARMv4的Android根文件系统
1、从http://www.rayfile.com/files/d4660882-de04-11dd-af0d-0014221b798a/下载Android的ARMv4版本根文件
2、在/dev下增加null和console两个设备节点
mknod -m 660 null c 1 3
mknod -m 660 console c 5 1
3、在U-boot中修改启动参数init为/init,完整的命令行如:root=nfs nfsroot=169.254.7.118:/source/rootfs ip=169.254.7.119 console=ttySAC0,115200 init=/init
4、修改/init.rc文件,去除除mount tmpfs tmpfs /sqlite_stmt_journals size=4m之外的所有mount命令
系统制作完成,现在应该可以看到漂亮的大表了。首次启动需要创建文件,大约17分钟。然后每次启动只需要2分钟。

四、目前进展
1.Android已经可以通过NFS在FS2410开发板上运行

五、目前缺陷
1.触摸屏没有校准
2.Android中时钟停止,结束zygote进程,系统重启,时钟更新,但再次停止不动
3.串口无法与GPRS模块通讯

 
相关文章:

 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4