免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1553 | 回复: 0
打印 上一主题 下一主题

将Android移植到FS2410开发板上 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-23 16:20 |只看该作者 |倒序浏览

一、目前进展
1.Android已经可以通过NFS在FS2410开发板上运行
二、目前缺陷
1.触摸屏没有校准
2.Android中时钟停止,结束zygote进程,系统重启,时钟更新,但再次停止不动
3.串口无法与GPRS模块通讯
三、移植步骤
一、移植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[]结构体为:
static struct mtd_partition smdk_default_nand_part[] = {
       [0] = {
              .name      = "Boot Agent",
              .size = SZ_256K,
              .offset     = 0,
       },
       [1] = {
              .name      = "Linux Kernel",
              .offset = SZ_256K,
              .size = SZ_2M - SZ_256K,
       },
       [2] = {
              .name      = "File System",
              .offset = SZ_2M,
              .size = SZ_32M - SZ_2M,
       },
       [3] = {
              .name      = "Other",
              .offset     = SZ_32M,
              .size = SZ_32M,
       }
};
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
    (2) 增加两给结构体
    static struct s3c2410fb_display smdk2410_lcd_cfg __initdata = {
    .lcdcon5 = S3C2410_LCDCON5_FRM565 |
    S3C2410_LCDCON5_INVVLINE |
    S3C2410_LCDCON5_INVVFRAME |
    S3C2410_LCDCON5_PWREN |
    S3C2410_LCDCON5_HWSWP,
    .type = S3C2410_LCDCON1_TFT,
    .width = 320,
    .height = 240,
    .pixclock = 174757,
    .xres = 320,
    .yres = 240,
    .bpp = 16,
    .left_margin = 16,
    .right_margin = 59,
    .hsync_len = 9,
    .upper_margin = 2,
    .lower_margin = 6,
    .vsync_len = 16,
    };

    static struct s3c2410fb_mach_info smdk2410_fb_info __initdata = {
    .displays = &smdk2410_lcd_cfg,
    .num_displays = 1,
    .default_display = 0,


    .gpccon = 0xaa955699,
    .gpccon_mask = 0xffc003cc,
    .gpcup = 0x0000ffff,
    .gpcup_mask = 0xffffffff,
    .gpdcon = 0xaa95aaa1,
    .gpdcon_mask = 0xffc0fff0,
    .gpdup = 0x0000faff,
    .gpdup_mask = 0xffffffff,

    .lpcsel = 0xf82,
    };
    (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<SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hans

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/90973/showart_1908217.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP