1、軟件的構成html
以官網下載的L4.1.15_2.0.0-ga_mfg-tools.tar.gz軟件包爲例子。在官網下載好軟件包後在本地解壓,解壓後以下圖所示,其中紅色箭頭所指向的文件及文件夾爲配置下載工具時須要修改及注意的地方。linux
文件說明:ide
cfg.ini文件:用來配置鏡像所在的文件夾位置、及ucl2.xml中執行哪一個列表的指令、定義一些初始化參數。工具
UICfg.ini:定義MfgTool軟件能同時燒錄幾塊SoC,官方文檔說明最大設定值4,對應4塊。ui
Document/: 關於Mfgtool 的使用文檔;spa
Drivers/: USB iMX_BulkIO_Driver;orm
Profiles/: 存放要燒錄的image文件以及ucl.xml;xml
mfgtool.log:關於Mfgtool使用過程當中的log記錄。htm
mfgtool2-***.vbs:.vbs文件是用來執行MfgTool2.exe的腳本並傳遞參數到軟件,若是cfg.ini文件中也定義了一樣的參數默認.vbs中的參數會覆蓋cfg.ini中的參數值。接口
2、Mfgtool工做原理
參考 517-MFGTOOLCustomizationGuide.pptx官方ppt裏面介紹Mfgtool的啓動流程圖。
一、 當 i.MX6板子上電後,什麼都沒有初始化,只有Chip ROM(芯片的內部ROM)能夠運行。Chip ROM的默認程序會去初始化USB,並將其配置爲HID設備。這就是爲何板子設置爲Download模式並上電後在PC端的設備管理器能夠看到HID-compliant device連上。
二、 一旦PC機檢測到HID設備連上,那麼PC(USB Host)就會去枚舉設備並創建鏈接。創建鏈接後的第一件事就是傳送一個mini uboot(firmware)到目標板SoC的Chip RAM(芯片的內部RAM)中而後開始運行mini uboot(firmware)。mini uboot會對目標板進行初始化,主要是初始化 DDR/外部ROM等設備,因此以後DDR及外部ROM已經能夠訪問了。mini uboot從mini uboot中提取內存初始化代碼或數據來執行任務。也可使用內存初始化腳原本獲取初始化數據。
三、 初始化外部基本接口以後,PC端會將mini kernel(firmware)、mini system(firmware)、dtb(firmware)傳送給SoC並放到DDR(外部RAM)指定的地址。而後PC發送命令(ucl2.xml中<CMD state="BootStrap" type="jump" > Jumping to OS image. </CMD>)給Chip ROM讓其跳轉到DDR的kernel首地址去執行。
四、 跳轉到kernel以後,初始化USB驅動,並枚舉爲一個MSC設備,此時SoC能夠和主機進行高速數據傳輸。
五、 以後PC機MFGTool工具經過ucl2.xml中的腳本逐條執行剩下的指令直到最後遇到Done指令。
注:
* 上面提到的mini uboot、mini kernel、mini system、dtb文件均在軟件目錄下的\Profiles\Linux\OS Firmware\firmware文件夾下。
* mini kernel必需要配置USB、USB大容量存儲驅動、SD卡、UTP等。詳見:mfgtools\Document\V2\Manufacturing Tool V2 Linux or Android Firmware Development Guide V2.docx文檔。
* mini kernel啓動linuxrc做爲第一個進程,linuxrc實際上是一個腳本,最終經過執行 uuc 來啓動UTP傳輸協議。UTP是做爲USB Mass Storage(v4 Kernel)驅動的擴展,因此啓動 UTP 必須對 USB 進行復位而後從新枚舉。
到此MFGTool的工做原理基本就講解完。瞭解到MFGTool的工做機制以後會幫助開發人員在從此的開發過程當中更容易的去發現問題,也能夠爲往後根據各自須要對MFGTool定製提供一個參考。
原文連接:https://www.forlinx.com/article_view_367.html