亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4013 | 回復(fù): 1
打印 上一主題 下一主題

移植android內(nèi)核到mini2440 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-10-06 11:37 |只看該作者 |倒序瀏覽

                                                                    國慶這幾天,趁著有時間,在mini2440上搗鼓android。
系統(tǒng)環(huán)境:
    Fedora 11 x86
準備工作:
    手里需要有這些東西才能開始做移植工作。
    通過git得到的android。具體方法可以參考android的說明文件來下載。不過速度嘛……就不得而知了。在這里面有兩個文件是需要注意的:kernel,prebuilt。kernel是Android所使用的Linux的內(nèi)核文件,我這里得到的版本號為2.6.27的。prebuilt,我需要用到這個目錄下的prebuilt/linux-x86/toolchain/arm-eabi-4.4.0交叉編譯工具鏈來編譯內(nèi)核。
    友善之臂提供的linux-2.6.29-mini2440-20090429.tgz。這個內(nèi)核主要用來提取一些文件供移植時使用。如果你git得到的Android內(nèi)核版本為2.6.29的,那么恭喜你……
    linux-2.6.31.1.tar.bz2。在這個版本里面mini2440已經(jīng)被加入了內(nèi)核樹中,他的一些可以作為移植的參考。但是不推薦使用這個版本,雖然在這個版本中mini2440和Linux結(jié)合更加完美,但是跟我所使用的Android的內(nèi)核版本差距過大。
    dnw_linux。這個用于在linux上傳輸鏡像文件。使用時需要自己編譯個USB模塊插入到系統(tǒng)中。
    svn,或者其他版本控制工具。在計劃中是需要使用一個版本控制工具來管理代碼的更新何回滾的,但是我使用的svn似乎出了點狀況,最終采用tar來代替了svn。
移植過程:
    分析版本區(qū)別。在Linux2.6.27和2.6.29之間,arch/arm/目錄中的plat-s3c和plat-s3c24xx中完善了不少三星arm體系的代碼,尤其是其中增加的include可能會對移植造成影響。在2.6.27中,缺少uda134驅(qū)動,需要從2.6.29中移植。
    開始移植準備。使用tags -R建立一個符號鏈接表tags。移植時不能圖方便采用整個目錄樹復(fù)制的方式,這樣會在編譯內(nèi)核最后時刻跳出一個重定義的錯誤,白白消耗了大量時間。因此,這里需要建立一個tags文件來查詢一些變量和函數(shù)的路徑。另外,修改Makefile文件,將交叉編譯工具鏈指向Android的toolchain。
    移植開始。將mach-mini2440.c、common-friendly-arm.c復(fù)制到arch/arm/mach_s3c2440/。另外,common-friendly-arm.h可以加入include/asm-arm/plat-s3c24xx/中。修改arch/arm/mach_s3c2440/Kconfig和Makefile,加入mini2440的信息。
    由于內(nèi)核不同,因此友善提供的mini2440 config文件最好別使用。我們需要自行配置config。由于在2.6.27中,沒有將s3c2440的單獨列出來,并且s3c2410與s3c2440硬件類似,所以我采用了s3c2410_defconfig,在System Type中將其他machines的支持全部給去掉。 Graphice support -> Console display driver support -> VGA text console
這個選上后在編譯的過程中會報錯,無法成功編譯,這個應(yīng)該是在控制臺中輸出圖形的模塊,也沒什么用途,給去掉。在文件系統(tǒng)中,因為板子沒有CD-ROM設(shè)備,在config中也給去掉了。我也不需要NFS,所以,網(wǎng)絡(luò)設(shè)備也被我咔嚓掉了。在Make menuconfig的時候需要注意選中Soc的支持,否則串口將沒有輸出,可悲……
    編譯內(nèi)核。剛開始千萬別抱有編譯成功的想法,plat里面變了很多東西。編譯的目的在于,找到被修改了路徑的變量及函數(shù),添加缺少的頭文件。尋找被修改路徑的變量和函數(shù)有個方法,找到編譯報錯的函數(shù),在android的tags里grep,再修改mach_mini2440.c。如果沒有,那么就到2.6.29里面grep后再加入到android/kernel中。在修改mach_mini2440.c時,我將cs8900的相關(guān)東西給刪掉了,我的mini2440采用的是dm9000。
    在編譯的過程中,至少還會遇上兩個錯誤:
    driver/gpio/gpiolib.c 1060
    跟蹤gpio_to_irq()發(fā)現(xiàn)它僅僅是返回個-EINVAL,直接修改代碼為:int irq = -EINVAL搞定。
    scripts/unifdef.c 209
    這里錯的有些奇怪了,提示跟我系統(tǒng)中的庫沖突。搞不懂!!在linux內(nèi)核郵件列表里也發(fā)現(xiàn)了這個錯誤,而且當時沒有重現(xiàn)出來,也有人說這個BUG和某種文件系統(tǒng)沖突。現(xiàn)在這個問題被我給碰上了,哎!為了方便,暫時給修改成了getlines。
    從板子啟動。雖然這個內(nèi)核是從2.6.29移植到2.6.27的,但是mach_type依然是782。我自作主張的按照2.6.31的來修改成1999,把arch/arm/mach-type給更新了,結(jié)果板子一直是到了解壓縮內(nèi)核完畢就停止了。我在這里調(diào)試浪費了不少時間。
    這樣,內(nèi)核就可以啟動了。附上經(jīng)過修改的mini2440部分文件。

       
        文件:mach-mini2440.tar.gz
        大小:11KB
        下載:
下載
       
               
               
               
               
               
               

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u1/44250/showart_2064754.html

論壇徽章:
0
2 [報告]
發(fā)表于 2011-09-07 14:28 |只看該作者
樓主大部分工作花在了將linux bsp的kernel與android 要求的kernel一致上了,希望以后分享更多的android系統(tǒng)要求的細節(jié)
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP