新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > s3c2440 android 移植

        s3c2440 android 移植

        作者: 時間:2016-11-20 來源:網絡 收藏
        ARMv4移植簡單教程:

        相信國內很多朋友手上都有s3c2410/2440的片子,基于armv4t(arm920t)的指令架構。在之前,因為android的一些底層代碼含有armv5t的指令,所以以前無法移植到這樣的平臺。在這里也放出移植教程和已經編譯好的image。讓更多的朋友可以在自己的開發板上親身體驗android。教程基于勤研qt2410以及揚創utu2440完成。
        注意,移植是到armv4而不是armv4t, 原因應該是不開thumb支持會比較好移植一些(改動未涉及的庫依然會用thumb代碼,所以kernel依然要開thumb支持)。
        kernel移植及nfs配置的詳細部分等請自行查閱相關文檔,本文只做提點,另外需要些git的操作。
        目前的image只是臨時方案。主要是基于openmoko的benno一些尚未正式發布的patch,整體來說已經比較完善和clean,我僅做了點小修改就能使用,由于部分庫用c實現替換掉了arm實現,同時一些critical的armv5指令被armv4的替換,速度可能有點慢,尤其是2410上速度很慢。。對于嚴苛的android開發組來說,這些patch部分尚未提交,部分在reviewing,還需要一些周期才會被接受進官方git。等這些patch被官方接受后,我會整理另一套正式一些的版本,同時可能會提供些優化方案。

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

        A. kernel的移植
        1. 移植,兩個方案可以選。
        1). 將android的官方kernel的補丁打到自己的kernel上,這個方法對于kernel版本比較新的朋友比較合適,也很簡單。比如2.6.24或以上。
        a. 下載android kernel,執行 git diff v2.6.25 HEAD > android.patch
        b. 進入你自己的kernl,執行 git apply android.patch
        c. 一般都會出error,手動合并所有帶error的文件,如果你是2.6.25的話很簡單,2.6.24會費點周折,因為kobject/kset的一些改動造成android power/ipv4等驅動不太好合。。
        2). 將自己kernel上的bsp移植到android官方kernel。適用于kernel比較舊的朋友。
        因為2410/2440是linux原生支持,所以基本上只需要移植lcd/touchpanel/網卡等等的驅動,并打開2410/2440支持選項即可。
        2. 這些步驟完成后,檢查如下選項是否都已經打開(make menuconfig):


        顯示代碼打印
        1 CONFIG_AEABI=y

        2 CONFIG_SHMEM=y

        3 CONFIG_ASHMEM=y

        4 CONFIG_ARM_THUMB=y

        5 CONFIG_ANDROID_BINDER_IPC=y

        6 CONFIG_ANDROID_LOGGER=y

        以下不一定重要, 但能開就開,除非移植有問題,比如power驅動:

        顯示代碼打印
        1 CONFIG_ANDROID_POWER=y

        2 CONFIG_ANDROID_POWER_STAT=y

        3 CONFIG_ANDROID_POWER_ALARM=y

        4 CONFIG_ANDROID_RAM_CONSOLE=y

        5 CONFIG_ANDROID_TIMED_GPIO=y

        6 CONFIG_ANDROID_PARANOID_NETWORK=y


        3. 按需要make zImage,再生成uImage,燒寫到nand。

        B. 制作android nfs root
        1. 下載我做好的android_armv4 image包,見帖子下方
        2. 準備好能啟動的nfs root,設置好訪問權限(重要!).
        3. 拷貝包中的system目錄到nfs_root/system, data目錄到nfs_root/data, root目錄到nfs_root/ (其他.img文件可以模擬器使用,同時也可以做真實文件系統,后話了)
        4. 設置nfs啟動參數中的init=/init,既指向nfs_root下的init
        5. 刪除nfs_root/init.rc,去掉除mount tmpfs tmpfs /sqlite_stmt_journals size=4m之外所有的mount命令

        C. 運行!
        跑跑看吧,進入android console之后可以運行logcat查看log。第一次啟動會創建很多的數據,會比較慢,2410幾乎是折磨了。。平常的啟動速度2440大概在1分多鐘,2410要5分鐘了。看到漂亮的大手表,你就搞定了!!

        常見問題:

        1. lcd不顯示, 檢查framebuffer..如果正常,查看nfs權限。
        2. 非法指令,檢查thumb,eabi選項。
        3. servicemanager異常退出,檢查binder & ashmem選項。
        其他的看kernel log和logcat自己分析吧.



        關鍵詞: s3c2440android移

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 嘉义县| 张家口市| 丽江市| 高唐县| 文山县| 黑龙江省| 德化县| 天全县| 西丰县| 云浮市| 积石山| 广西| 丰镇市| 京山县| 麻城市| 甘洛县| 彝良县| 濮阳市| 东平县| 丹东市| 集安市| 乌兰县| 儋州市| 阿城市| 柞水县| 柘荣县| 黄龙县| 马尔康县| 敦化市| 乌鲁木齐县| 台东县| 德清县| 宝山区| 德庆县| 鸡泽县| 南川市| 金山区| 太谷县| 望奎县| 青阳县| 伊川县|