標(biāo)題: 基于迅為i.MX6Q開發(fā)板-飛思卡爾系統(tǒng)燒寫工具M(jìn)FGTool2工具詳解 [打印本頁]

作者: keylududt    時(shí)間: 2017-5-10 10:08
標(biāo)題: 基于迅為i.MX6Q開發(fā)板-飛思卡爾系統(tǒng)燒寫工具M(jìn)FGTool2工具詳解
fsl i.MX6開發(fā)板有多種系統(tǒng)燒寫方式,這里介紹使用聯(lián)機(jī)燒寫工具M(jìn)FGTool及其對(duì)系統(tǒng)的燒寫。MFGTool是fsl官方開發(fā)的一套PC聯(lián)機(jī)系統(tǒng)燒寫程序,通過USB將PC和開發(fā)板連接后,使用MFGTool就可以燒寫
u-boot,kernel和filesys。
MFGTool當(dāng)前的版本是MFGTool V2。

MFGTool程序的具體燒寫和運(yùn)行流程是:
一.Boot跳線到USB下載模式---BOOT_MODE[1:0]為0b10

二.MFGTool加載相關(guān)的配置文件:UICfg.ini、cfg.ini、ucl2.xml。其中:
  1. UICfg.ini指明了MFGTool界面配置。
  2. cfg.ini指明了芯片和開發(fā)板名稱,并指定了ucl2.xml文件中的LIST項(xiàng)名稱。另外,MFGTool根據(jù)芯片和開發(fā)板
      名稱在.\Profiles中尋找 相應(yīng)的配置文件ucl2.xml,啟動(dòng)鏡像和燒寫鏡像文件。此處的".\"為相對(duì)目錄,即
      MFGTool 的存放和執(zhí)行目錄。
     如文件cfg.ini內(nèi)容如下:
     [profiles]
     chip = MX6Q Linux Update

     [platform]
     board = SabreSD

     [LIST]
     name = Sabre-SD



     [profiles]
     chip = MX6Q Linux Update,它指明了文件操作的目錄,即為.\Profiles\MX6Q Linux Update\OS Firmware,
     例如MFGTool會(huì)在在.\Profiles\MX6Q Linux Update\OS Firmware中尋找相應(yīng)的配置文件ucl2.xml。
     
      [LIST]
      name = Sabre-SD
      ucl2.xml有多個(gè)LIST項(xiàng),每一項(xiàng)對(duì)應(yīng)于一個(gè)開發(fā)板相關(guān)燒寫配置,此處指明哪一項(xiàng)LIST有效。
      LIST中指明了執(zhí)行的下載/燒寫動(dòng)作,要操作(下載/燒寫/或命令)的文件,shell命令等內(nèi)容,
      針對(duì)文件,根據(jù)上面的chip =xxx來指明其路徑名。

     下圖中說明了文件cfg.ini和[LIST] 標(biāo)簽中name的關(guān)系:


     

     下面兩個(gè)圖中說明了文件ucl2.xml中相關(guān)文件的具體指向:
     




   

  3.ucl2.xml通過LIST項(xiàng)來列出要執(zhí)行的命令集和相應(yīng)文件。

三.MFGTool通過USB將前導(dǎo)u-boot,kernel,文件系統(tǒng)下載到開發(fā)板中的RAM中,并跳轉(zhuǎn)到RAM中的u-boot處來
    執(zhí)行kernel,掛載文件系統(tǒng)。
   之所以稱"前導(dǎo)u-boot,kernel,文件系統(tǒng)“,因?yàn)樗鼈兪菫樽罱K的程序燒寫做系統(tǒng)準(zhǔn)備,它們并不是最終要下
   載到Flash、SD、TF卡等非易失存儲(chǔ)器中的系統(tǒng)鏡像。
   對(duì)應(yīng)于ucl2.xml中的標(biāo)簽,有如下內(nèi)容:
    <CMD state="BootStrap" type="boot" body="BootStrap" file ="u-boot-mx6q-sabreauto.bin" >Loading U-boot</CMD>
    <CMD state="BootStrap" type="load" file="uImage" address="0x10800000"
            loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading Kernel.</CMD>
   
<CMD state="BootStrap" type="load" file="initramfs.cpio.gz.uboot" address="0x10C00000"
              loadSection="OTH" setSection="OTH" HasFlashHeader="FALSE" >Loading Initramfs.</CMD>
   
<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>
   以下是對(duì)其中內(nèi)容詳細(xì)的說明:
   state="BootStrap"指明其為啟動(dòng),對(duì)比參照下面程序燒寫時(shí)的state="Updater"。
   type="boot"或type="load",加載或啟動(dòng),對(duì)比參照下面程序燒寫時(shí)的 type="push" 。
   file指明要操作的文件, address指明了加載的地址。  
   
四.MFGTool強(qiáng)制開發(fā)板啟動(dòng)RAM中的kernel,并裝載相關(guān)特定的USB下載驅(qū)動(dòng),開發(fā)板中的Linux系統(tǒng)做好了程序燒寫的前期準(zhǔn)備。

五.通過執(zhí)行一組在配置文件中設(shè)置的Linux命令,MFGTool使用USB將要燒寫的系統(tǒng)鏡像燒寫到非易失存儲(chǔ)器中。
   如 u-boot燒寫,在ucl2.xml文件中,有如下命令:
   1. <CMD state="Updater" type="push" body="mknod block,mmcblk1,/dev/mmcblk1,block"/>
   2. <CMD state="Updater" type="push" body="send" file="mksdcard.sh.tar">Sending partition shell</CMD>
   
3. <CMD state="Updater" type="push" body="$ tar xf $FILE "> Partitioning...</CMD>
   
4. <CMD state="Updater" type="push" body="$ sh mksdcard.sh /dev/mmcblk1"> Partitioning...</CMD>
5. <CMD state="Updater" type="push" body="mknod block/mmcblk1,mmcblk1p1,/dev/mmcblk1p1,block"/>
   
6. <CMD state="Updater" type="push" body="send" file="files/u-boot.bin">Sending u-boot.bin</CMD>
   
7. <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk1 bs=1k seek=1 skip=1 conv=fsync">write u-boot.bin to sd card</CMD>   上面紅色字體部分是ucl2.xml文件中的原命令,藍(lán)色數(shù)字是為了方便下面的說明而附加的行號(hào)。
   以下是對(duì)其中命令(body標(biāo)簽部分)詳細(xì)的說明:
   行1. body="mknod block,mmcblk1,/dev/mmcblk1,block"   為使用SD,TF卡等設(shè)備創(chuàng)建結(jié)點(diǎn)。
   行2. body="send" file="mksdcard.sh.tar"   發(fā)送文件mksdcard.sh.tar到開發(fā)板的RAM中。
   行3. body="$ tar xf $FILE "   解壓文件mksdcard.sh.tar。
   行4. body="$ sh mksdcard.sh /dev/mmcblk1 執(zhí)行mksdcard.sh,mksdcard.sh是個(gè)shell腳本文件,
         它用來對(duì)Flash、SD、TF進(jìn)行分區(qū),具體的內(nèi)容可查看該文件。
   行5. body="mknod block/mmcblk1,mmcblk1p1,/dev/mmcblk1p1,block" 創(chuàng)建設(shè)備結(jié)點(diǎn),
          具體的用法參考設(shè)備驅(qū)動(dòng)程序相關(guān)內(nèi)容 。
   行6. body="send" file="files/u-boot.bin" 發(fā)送文件files/u-boot.bin到開發(fā)板的RAM中。
   行7. body="$ dd if=$FILE of=/dev/mmcblk1 bs=1k seek=1 skip=1 conv=fsync" 執(zhí)行u-boot的燒寫。
           其中變量$FILE為第6行中設(shè) 定的值,最終執(zhí)行燒寫的命令 是dd。

六.掉電,跳線到正常的啟動(dòng)模式,重啟。









歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1