转:基于FS2410平台Android移植

准备工作:

   1.Uboot ,与你之前Linux下跑QT或其它UI的一样,这部分是不 变的,也没什么特殊要求。

    2.交叉编译工具 ,这个没什么说的,下载地址http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

   3.kernel ,你得下载Android版本的(下载地址:http://android.googlecode.com/files/linux-2.6.25-android-1.0_r1.tar.gz ), 这与以前Linux的kernel还是有差异的,具体差异在哪,没研究过,不过从驱动方面看,差异不是很大。

   4.根文件系统 ,自己也是初学乍道,自己还没尝试制作,只能暂用网上流传的 armv4,下载地址:http://attachments.hiapk.com/download//soft/armv4.tar.gz

 

开始工作:

    1.Uboot制作,

        用你原先Linux下的Uboot,只需要修改下启动参数主要是init=/init,我的详细配置信息:#define CONFIG_BOOTARGS         "console=ttySAC0 root=/dev/nfs init=/init nfsroot=192.168.1.110:/tftpboot/root_nfs,rsize=1500,wsize=1500 ip=192.168.1.111:192.168.1.110:192.168.1.1:255.255.255.0:www.sansung.com:eth0:off"

    2.kernel移植,

       a.首先建个个文件夹mkdir /home/android,把上面下载的文件复制到这里,分别解压缩(tar xvf xxx),你会在当前目录看到以下三个文件夹:arm-2008q3, kernel.git, armv4.

       b.进入kernel.git目录,Vim Makefile,修改

              #ARCH           ?= $(SUBARCH)
              #CROSS_COMPILE ?= arm-eabi-
             ARCH            ?= arm
             CROSS_COMPILE   ?= arm-none-linux-gnueabi-
         要和arm-2008q3的工具一致。

        然后,设置编译环境,Vim build.env

           #sh/bin

            export PATH=$PATH:/home/android/arm-2008q3/bin
         退出保存,运行:source build.env。只要关闭了此次Shell窗户,在编译kernel时都要运行的。

       c.把你自己以前Linux下的.config文件copy过来,复制到kernel.git目录。

       d.剩下主要是Android的配置的,具体的我也不清楚,照猫画虎,根据网上盛传的,

         make menuconfig,进入配置界面,主要查看以下选项

         选中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
      尽量选中Android内核可选选项
              Device Drivers ---> Android ---> [*] RAM buffer console
              Device Drivers ---> Android ---> [*] Android timed gpio driver
              Device Drivers ---> Android ---> [*] Only allow certain groups to create sockets

        e.为了能看到Android的UI,你必须移植LCD驱动,具体做法与Linux下相同,就此不做说明。

以上步骤完成,你便可以直接make uImage,中间可能会出现一些问题,每个人的情况可能不一样,在此无法列举,我的下文会列出我遇到的错误和解决方法。

      3.根文件系统制作,

         这里谈不上制作,因为直接下别人的,嘿嘿~~~,废话不说了,直接进入正题,cd armv4,你将看到三个文件夹,分别是data,root,system,其它三个是.img文件,可以忽略不要,分别把data,system文件夹 copy进root文件夹中,覆盖root里原先的data,system文件夹,这样便搞定了,但是,要记住把这个root文件下的内容全部复制到你 nfs挂载的目录下。

        以上工作完成,在做点小动作:

       a.在/dev下增加null和console两个设备节点
                mknod null c 1 3
                mknod console c 5 1

        b.修改/init.rc文件,去除除mount tmpfs tmpfs /sqlite_stmt_journals size=4m之外的所有mount命令

       c.最好改变下这个目录所有文件的权限,chmod -R 777 nfs_root

以上工作完成后,你便可以和当时在Linux下一样的方法,在2410平台下跑你的Android,不过要等待很久哦,第一次启动很慢,要建立很多 文件。

 

 

 

 

遇到的问题总结:                                                     

err1:

CC [M] drivers/net/b44.o
drivers/net/b44.c: In function 'b44_sync_dma_desc_for_device':
drivers/net/b44.c:151: error: implicit declaration of function

'dma_sync_single_range_for_device'
drivers/net/b44.c: In function 'b44_sync_dma_desc_for_cpu':
drivers/net/b44.c:161: error: implicit declaration of function

'dma_sync_single_range_for_cpu'
make[2]: *** [drivers/net/b44.o] 错误 1
make[1]: *** [drivers/net] 错误 2
make: *** [drivers] 错误 2

解决方法:
发现这个貌似和蓝牙相关,但是暂时不用蓝牙,所以就先屏蔽了嘿嘿
#config B44
#       tristate "Broadcom 440x/47xx ethernet support"
#       depends on SSB_POSSIBLE
#       select SSB
#       select MII
#       help
#         If you have a network (Ethernet) controller of this type,

say Y
#         or M and read the Ethernet-HOWTO, available from
#         <http://www.tldp.org/docs.html#howto >.
#
#         To compile this driver as a module, choose M here. The

module
#         will be called b44.


====================================================================
err2:

drivers/video/console/vgacon.c: In function 'vgacon_startup':
drivers/video/console/vgacon.c:494: error: 'PCIMEM_BASE' undeclared

(first use in this function)
drivers/video/console/vgacon.c:494: error: (Each undeclared

identifier is reported only once
drivers/video/console/vgacon.c:494: error: for each function it

appears in.)
drivers/video/console/vgacon.c: In function 'vgacon_do_font_op':
drivers/video/console/vgacon.c:1052: error: 'PCIMEM_BASE' undeclared

(first use in this function)
make[3]: *** [drivers/video/console/vgacon.o] 错误 1
make[2]: *** [drivers/video/console] 错误 2
make[1]: *** [drivers/video] 错误 2
make: *** [drivers] 错误 2

解决方法:
device drivers->
   Graphics support->
      Console display driver support->
         [ ]VGA text console

====================================================================
err3

MODPOST 694 modules
ERROR: "groups_search" [net/ipv6/ipv6.ko] undefined!
ERROR: "groups_search" [net/bluetooth/bluetooth.ko] undefined!
ERROR: "__bad_udelay" [drivers/isdn/hisax/hisax.ko] undefined!
ERROR: "ioport_map" [drivers/char/tpm/tpm_atmel.ko] undefined!
make[1]: *** [__modpost] 错误 1
make: *** [modules] 错误 2

解决方法:
去掉一下配置
networking ->
networking options ->
   <>the IPv6 protocol

<>bluetooth subsystem support
device drivers ->
<>ISDN support
   character devices ->
   <>TMP Hardware support ->
===================================================================
err4

fs2410> go 32000000
## Starting application at 0x32000000 ...
Uncompressing

Linux...............................................................

................................... done, booting the kernel.
死在这里了???但是开机LOGO还是现实了,就是没打印信息....无语啊~~~

解决方法:
   device drivers ->
character devices ->
   serial driver ->
    <*>samsung S3C2410/40/42/12 serial port

support
    <*>support for console on S3C2410 serrial

port

====================================================================
err5

init: Unable to open persistent property directory /data/property

errno: 2

解决方法:
在data目录下自己手动建立一个property文件夹

====================================================================
err6

启动后,画面被缩小了1/4,分别在LCD的上部左右各显示一张,其下部为黑屏

解决方法:
   原先LCD像素为24bit,改为16bit就搞定了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值