新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 將Android移植到FS2410開(kāi)發(fā)板上

        將Android移植到FS2410開(kāi)發(fā)板上

        作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
        一、目前進(jìn)展

        1.Android已經(jīng)可以通過(guò)NFS在FS2410開(kāi)發(fā)板上運(yùn)行

        本文引用地址:http://www.104case.com/article/201611/316661.htm

        二、目前缺陷

        1.觸摸屏沒(méi)有校準(zhǔn)

        2.Android中時(shí)鐘停止,結(jié)束zygote進(jìn)程,系統(tǒng)重啟,時(shí)鐘更新,但再次停止不動(dòng)

        3.串口無(wú)法與GPRS模塊通訊

        三、移植步驟

        一、移植Android內(nèi)核到FS2410開(kāi)發(fā)板上

        1、從de.google.com/p/android/downloads/list">http://code.google.com/p/android/downloads/list上下載linux-2.6.25-android-1.0_r1.tar.gz

        2、將內(nèi)核解壓到用戶目錄,如/home/wangan/kernel.git

        3、進(jìn)入kernel.git文件夾,如cd ~/kernel.git/

        4、修改arch/arm/plat-s3c24xx/common-smdk.c文件中的nand flash分區(qū)設(shè)置,如gedit arch/arm/plat-s3c24xx/common-smdk.c

        修改static struct mtd_partition smdk_default_nand_part[]結(jié)構(gòu)體為:

        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網(wǎng)站上下載IA32 GNU/Linux TAR。

        6、將文件解壓到用戶目錄,如/home/wangan/arm-2008q3

        7、進(jìn)入arm-2008q3/bin文件夾,如cd ~/arm-2008q3/bin/

        8、添加當(dāng)前路徑進(jìn)入環(huán)境變量,如export PATH=$PWD:$PATH,或修改~/.bashrc文件并重新登錄

        9、進(jìn)入內(nèi)核文件夾,如cd ~/kernel.git/

        10、修改Makefile文件,如gedit Makefile

        更改ARCH和CROSS_COMPILE

        #ARCH ?= $(SUBARCH)

        ARCH ?= arm

        #CROSS_COMPILE ?= arm-eabi-

        CROSS_COMPILE ?= arm-none-eabi-

        11、從華清遠(yuǎn)見(jiàn)Linux-2.6.8.1內(nèi)核壓縮包中提取.config文件(注意:config前面有個(gè)“.”)放入kernel.git文件夾

        12、運(yùn)行make menuconfig

        (1) 確保System Type ---> ARM system type ()中的內(nèi)容為Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442, S3C2443

        (2) 確保System Type ---> S3C2410 Machines ---> [*] SMDK2410/A9M2410被勾選

        (3) 取消選擇與Goldfish相關(guān)的內(nèi)容

        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相關(guān)的內(nèi)容

        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內(nèi)核必須選項(xiàng)

        Kernel Features ---> [*] Use the ARM EABI to compile the kernel

        General setup ---> [*] Use full shmem filesystem

        General setup ---> [*] Enable Androids Shared Memory Subsystem

        System Type ---> [*] Support Thumb user binaries

        Device Drivers ---> Android ---> [*] Android log driver

        Device Drivers ---> Android ---> <*> Binder IPC Driver

        (6) 盡量選中Android內(nèi)核可選選項(xiàng)

        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選項(xiàng),如系統(tǒng)支持請(qǐng)一并選擇

        CONFIG_ANDROID_POWER =y

        CONFIG_ANDROID_POWER_STAT =y

        CONFIG_ANDROID_POWER_ALARM =y

        (可以在Kconfig文件中查找ANDROID_POWER等字段進(jìn)行選擇,或者直接修改.config文件)

        13、退出并保存.config

        二、移植LCD驅(qū)動(dòng)到Linux-2.6.25內(nèi)核

        1、 進(jìn)入kernel.git文件夾,如cd ~/kernel.git/

        2、 修改arch/arm/mach-s3c2410/mach-smdk2410.c文件,如gedit arch/arm/mach-s3c2410/mach-smdk2410.c

        (1) 增加頭文件#include

        (2) 增加兩給結(jié)構(gòu)體

        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()函數(shù)中增加s3c24xx_fb_set_platdata(&smdk2410_fb_info);

        三、移植觸摸屏驅(qū)動(dòng)到Linux-2.6.25內(nèi)核(參見(jiàn)《基于linux-2.26.5內(nèi)核的FS2410開(kāi)發(fā)板觸摸屏驅(qū)動(dòng)移植》)并制作zImage文件,如make

        這里提一下,確保已經(jīng)勾選Device Drivers ---> Input device support ---> <*> Event interface,本人曾經(jīng)在這里徘徊,感謝游老師悉心教誨!

        四、制作支持ARMv4的Android根文件系統(tǒng)

        1、從http://www.rayfile.com/files/d4660882-de04-11dd-af0d-0014221b798a/下載Android的ARMv4版本根文件

        2、在/dev下增加null和console兩個(gè)設(shè)備節(jié)點(diǎn)

        mknod -m 660 null c 1 3

        mknod -m 660 console c 5 1

        3、在U-boot中修改啟動(dòng)參數(shù)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命令

        系統(tǒng)制作完成,現(xiàn)在應(yīng)該可以看到漂亮的大表了。首次啟動(dòng)需要?jiǎng)?chuàng)建文件,大約17分鐘。然后每次啟動(dòng)只需要2分鐘。



        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 安泽县| 菏泽市| 吉隆县| 溆浦县| 远安县| 调兵山市| 黑河市| 谢通门县| 花垣县| 青海省| 柘荣县| 邵东县| 黔江区| 黔西县| 惠水县| 雅江县| 桃江县| 郸城县| 富阳市| 松原市| 怀柔区| 兴和县| 久治县| 临桂县| 永安市| 岳普湖县| 西城区| 台湾省| 荥经县| 汪清县| 元阳县| 乾安县| 白玉县| 鄂尔多斯市| 衡水市| 沅江市| 昌吉市| 城市| 铁力市| 嘉黎县| 佛教|