<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    怎樣將Android移植到FS2410開發板上

    發布時間:2010-11-24 12:12    發布者:eetech
    關鍵詞: Android , FS2410 , 開發板 , 移植
    一、目前進展

    1.Android已經可以通過NFS在FS2410開發板上運行

    二、目前缺陷

    1.觸摸屏沒有校準
    2.Android中時鐘停止,結束zygote進程,系統重啟,時鐘更新,但再次停止不動
    3.串口無法與GPRS模塊通訊

    三、移植步驟

    一、移植Android內核到FS2410開發板上
    1、下載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,
    },
      = {
    .name = "Linux Kernel",
    .offset = SZ_256K,
    .size = SZ_2M - SZ_256K,
    },
      = {
    .name = "File System",
    .offset = SZ_2M,
    .size = SZ_32M - SZ_2M,
    },
      = {
    .name = "Other",
    .offset = SZ_32M,
    .size = SZ_32M,
    }
    };

    5、在網站上下載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) 增加兩給結構體
    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、從下載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分鐘。
    本文地址:http://www.portaltwn.com/thread-41343-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    初級工 發表于 2011-3-15 15:32:13
    猛人啊。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷