<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          s3c2440 android 移植

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          ARMv4移植簡單教程:

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

          本文引用地址:http://www.ex-cimer.com/article/201611/318992.htm

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

          顯示代碼打印
          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,設(shè)置好訪問權(quán)限(重要?。?
          3. 拷貝包中的system目錄到nfs_root/system, data目錄到nfs_root/data, root目錄到nfs_root/ (其他.img文件可以模擬器使用,同時也可以做真實文件系統(tǒng),后話了)
          4. 設(shè)置nfs啟動參數(shù)中的init=/init,既指向nfs_root下的init
          5. 刪除nfs_root/init.rc,去掉除mount tmpfs tmpfs /sqlite_stmt_journals size=4m之外所有的mount命令

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

          常見問題:

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



          關(guān)鍵詞: s3c2440android移

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();