android系統移植emmc記錄(總)

來源:互聯網
上載者:User

曆時一個月,終於成功把android系統移植到emmc上啟動。

開發板:s5pv210

系統:android 2.34

目的:使用emmc代替 nand flash

 

燒寫命令:fastboot  sdfuse

分區命令:    fdisk

vfat格式命令:fatformat

Ext3格式命令:ext3format

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

1:android系統移植emmc記錄(1)--製作SD卡啟動模式

2:android系統移植emmc記錄(2)--u-boot燒寫emmc檔案方式

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

 

如果android產生的檔案是ext3格式(如何產生,請網上瞭解,我自己的只是手動產生),則應該可以啟動系統,基本移植成功。然而,這時三星的基本移植方式,對於我手上的源碼,卻並不合適,測試無法啟動系統,停止在
mount根檔案系統後,無法找到/init 檔案。

經分析,基本屬於kernel沒有擷取到正確的ramdisk分區地址,至此開始分析u-boot源碼了。

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

3:android系統移植emmc記錄(3)--sd/mmc初始化分析

4:android系統移植emmc記錄(4)--fdisk命令分析

5:android系統移植emmc記錄(5)--fastboot命令分析

6:   android系統移植emmc記錄(6)--sd卡燒寫檔案分析

 

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

 u-boot基本可初始化emmc和sd了,並能夠通過sd來燒寫emmc。

根據【2】項燒寫android編譯出來的ext3檔案,並不能成功執行到Init進程,出現如下錯誤:

Kernel panic - not syncing: No init found. Try passing init= option to kernel.

在此問題上一直卡了很久,分析ramdisk燒寫到emmc的分區裡。而kernel掛載的分區並不含ramdisk分區,只有fdisk分的各個區。

所以目前的做法是:不把ramdisk檔案獨立出來,跟system檔案整合成一個ext3檔案,燒寫到system分區上,讓kernel掛載上,成功執行到

init進程,並啟動了android系統。

原理:根據init.rc指令檔發現,ramdisk只是把system分區mount到ramdisk分區檔案下的system,所以把system檔案全部考到root/ system下

修改init.rc指令檔,最後產生ext3檔案就行了。

方法:

1:修改init.rc檔案

[java]
view plaincopyprint?
  1.  on init  
  2.   
  3. sysclktz 0  
  4.   
  5. loglevel 3  
  6. ....  改變system/bin/下檔案執行許可權  
  7. chmod 777 /system/bin/*  
  8. ....  
 on initsysclktz 0loglevel 3....  改變system/bin/下檔案執行許可權chmod 777 /system/bin/*....

on fs
# mount mtd partitions
    # Mount /system rw first to give the filesystem a chance to save a checkpoint
    #mount yaffs2 mtd@system /system  屏蔽掉system分區掛載,因目前分區已經有system
    #mount yaffs2 mtd@system /system ro remount
    mount ext3 /dev/block/mmcblk0p3 /data nosuid nodev
    mount ext3 /dev/block/mmcblk0p4 /cache nosuid nodev
   # mount ext4 /dev/block/mmcblk0p3 /data nosuid nodev
   # mount ext4 /dev/block/mmcblk0p4 /cache nosuid nodev

chown  setprop等命令不要放在service 下面,不然會提示 init :錯誤資訊。 

2: 把system裡面的所有檔案考入到root/ system/ 檔案下。修改下/root/system/bin/ 裡面檔案的執行許可權。

3: 使用工具 : mkext3image  root     system.ext3   產生ext3檔案。

4: 編譯kernel ,支援 ext3 檔案系統。重建zImage

5: 燒寫:

        fastboot 方式:

                 1:把 u-boot.bin   zImage    system.ext3  檔案放入 fastboot工具目錄下
                 2:通過moviNAND 工具把u-boot.bin韌體到sd裡,然後設定板子從SD卡模式啟動。

                 3:板子串連usb,在PC上運行 --> cmd ,

                        cd  e:\fastboot\

                        e:\fastboot\  :    fastboot flash bootloader u-boot.bin

                                                    fastboot flash kernel         zImage

                                                   fastboot flash  system   system.ext3

      sdfuse 方式:

                 1:把 u-boot.bin   zImage    system.ext3  檔案放入 SD卡下sdfuse目錄下
                 2:通過moviNAND 工具把u-boot.bin韌體到sd裡,然後設定板子從SD卡模式啟動。

                 3:進入命令列:

                 輸入# :  sdfuse flash bootloader u-boot.bin       

                               sdfuse flash  kernel         zImage   

                               sdfuse flash  system   system.ext3

6: 修改啟動參數:

                set bootcmd "movi read kernel   c0008000; bootm c0008000"

                set bootargs "console=ttySAC2,115200 noinitrd  root=/dev/mmcblk0p2 rw  init=/init "

                system 分區是 mmcblk0p2 ,  rw :表示 system分區可讀可寫,一定要加上去,不然不能在system上安裝軟體了。

7:啟動系統,可以進入android系統了。

 

 fastboot工具下載

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

註: 因emmc介面跟sd一樣,我們可以移植android檔案系統到SD卡上,讓android在SD卡上跑。

           方法:

                       1:用winpm 軟體把SD卡分3個區,並預留10M空間,格式為ext3,分別為 system userdata cache 分區。

                       2:用moviNAND 工具把支援從SD卡啟動的u-boot燒錄sd裡面。注意:此u-boot不能開啟 USE_MMC0,只能開啟 USE_MMC2。

                             也就是支援SD,不支援emmc。所以,開發板上是NANDflash的就可以做這種卡了。帶emmc的就不行。

                       3:然後通過ubuntu 系統,mount上 system分區,並把root 檔案下的所有檔案考入 system分區裡。

                       4:設定板子為SD卡啟動模式,插入sd卡,改變bootargs 參數,指定root 為system的分區裝置。

                       5:進入系統。

 會出現的錯誤:

注意這條:表示你的sd卡處在防寫保護狀態了。所以就打不開裝置了。

 mmcblk0: mmc0:aaaa SU04G 3.69 GiB (ro)

[    2.439190]  mmcblk0: p1 p2 p3 p4
[    2.479149] VFS: Cannot open root device "mmcblk0p2" or unknown-block(179,2)
[    2.484751] Please append a correct "root=" boot option; here are the available partitions:
[    2.493070] 1f00             256 mtdblock0 (driver?)
[    2.497978] 1f01            5120 mtdblock1 (driver?)
[    2.502917] 1f02            5120 mtdblock2 (driver?)
[    2.507856] 1f03            3072 mtdblock3 (driver?)
[    2.512811] 1f04          112640 mtdblock4 (driver?)
[    2.517735] 1f05           81920 mtdblock5 (driver?)
[    2.522675] 1f06          839680 mtdblock6 (driver?)
[    2.527620] b300         3872256 mmcblk0 driver: mmcblk
[    2.532829]   b301         3256302 mmcblk0p1
[    2.537059]   b302          124806 mmcblk0p2
[    2.541306]   b303          359290 mmcblk0p3
[    2.545552]   b304          105896 mmcblk0p4
[    2.549801] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)

http://blog.csdn.net/yunfly163/article/details/7495035

原文地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.