歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

移植Andorid4.0.4到FS100開發板 - 步驟及問題匯總

開發板: FS_S5PC100

  CPU:  S5PC100,800Mhz,A8

  MEM:256Mb

  NAND: 256Mb

  LCD:4.3

Android4.0.4源碼:

 linaro-android-12.06-release for origen

由於s5pc100官方只給出Android2.1的release版本,沒有最新版本的,所以只能自己移植。

-------------------------------------------------------------------------------

1. 通過git下載源碼

2. 設置編譯環境為origen-eng

3. 修改device裡的BoardConfig.mk

    # 不編譯內核和Uboot(默認編譯會將Uboot和zImage一起編譯出來)

    # 去掉支持SMP(A8是單核)

    # 去掉硬件加速和Gator的arm調試服務

4. 編譯

  由於android4.0.4 for origen是使用的CPUExynos 4210的獵戶座CPU,該CPU是A9的,支持SMP和Mali-400 GPU,所以內核我們要自己進行重新編譯針對S5PC100。

5. 編譯內核

  使用s5pc100的默認配置,編譯內核,注意加上android的必要驅動。

  Android驅動:
  # Android Binder:基於openBinder框架的驅動,進程間通信底層主要驅動,沒有了它,android無法工作。
  # Andorid Logger:是一個輕量級的日志系統,在內核裡是misc設備驅動,它與logcat配合實現調試。
代碼:driver/staging/android/logger.c
  # Andorid Lowmemorykiller:低內存管理器,是linux標准OOM(Out Of Memory)改進版,當系統內存不足時,會殺掉一些不重要的進程,釋放空間。
代碼:driver/staging/android/lowmemorykiller.c
  # Android Ram Console ram_console:輔助調試的內核機制,它用一段物理內存虛擬一個console設備,這樣printk的時候會把調試信息寫一份到這塊ram,最後通過/proc文件系統輸出。
  #Android Timed Device timed_gpio:基於platform driver 實現的一個增強的gpio驅動,它與內核定時器綁定在了一起,實現了一種時鐘控制的gpio
通過sysfs操作gpio,可以讓gpio輸出高、低電平,同時也可以指定一個定時器過期時間,當超時的時候,會去執行一個callback函數。目前支持vibrator和LED設備
對應代碼:driver/staging/android/timed_gpio, time_output,對應文件系統(sys/class/timed_output/<dev_name>/enable)
  # Androd Switch:它是android新引進的驅動,用於檢查一些開關量,如耳機插入,USB設備插入,在sysfs裡創建對應的entry(sys/class/switch/<dev_name>/stat),用戶通過sysfs與之進行交互,同時,也可以使用uevent機制與其交互。
  設備文件沒有讀寫權限,沒有加載對應的uevent.rc啟動腳本文件(該腳本 文件為android的設備進行權限設置的)
對應代碼:driver/switch/*
  # Android Power Manager:基於標准linux電源管理系統的輕量級電源管理驅動
代碼:kernel/power/*
  # Android Ashmem:匿名共享內存,為進程間提供大塊共享內存,同時為內核提供回收和管理這些內存的機制。
代碼:mm/ashmem.c
  # Android PMEM:用於向用戶空間提供連續的物理內存,DSP和其它需要連續物理內存的設備需要它的提供服務。
代碼:driver/misc/pmem.c
  # Android alarm:提供一個定時器用於把設備從睡眠狀態喚醒,同時它也提供了一個即使在設備睡眠時也會運行的時鐘基准。
代碼:driver/rtc/alarm.c
  # USB Gadget:一個基於標准Linux USB gadget驅動框架的設備驅動,Android的USB驅動是基於gadget框架的。
代碼:driver/usb/gadget/   
  # Yaffs2文件系統:Android采用Yaffs2作為 MTD Nandflash文件系統。

 平台設備

  網卡:dm9000 

http://www.linuxidc.com/Linux/2012-07/64866.htm

  LCD:顯示

編譯出內核來,將其放到tftp目錄下,等待使用。

Copyright © Linux教程網 All Rights Reserved