1. 程式人生 > >uboot的模式下操作spi flash燒錄映象到flash分割槽

uboot的模式下操作spi flash燒錄映象到flash分割槽

1、燒錄方式

     1.1 將程式碼燒錄到一個儲存裝置有兩種方式:

           (1)用外部燒錄器來燒錄(比如一些Jink,內建了spi介面,本身可以讀寫spi,再配合配套的上位機軟體將映象或hex檔案燒錄到flash,和MCU沒有關係)

           (2)通過主晶片提供的isp下載的機制來間接燒錄到板載flash,pc需要一個軟體來配合,不需要購買燒錄器,比如海思的HI_TOOL,s5pv210的dnw燒錄工具,通過pc軟體工具我們給的指令,比如分配uboot、kernel等燒錄區間大小、選擇映象等操作,mcu再將映象,kernel等燒錄到指定的分割槽。補充:pc端軟體開啟並連線了,mcu會首先會判斷是否uart的燒錄資料來了,如果一直沒來,或者軟體沒開啟,並且flash裡面已經燒錄了,通過內部資料互動,他就會從flash裡面啟動,一般燒錄後,重新開機就會從flash裡面啟動uboot了。

                    

         (3)uboot啟動後,flash分割槽問題,因為嵌入式系統為了簡化,沒有使用分割槽表來自動管理flash,所以都是事先定死的,在部署一個嵌入式系統前都要人為的定下一個分割槽,這就是之所以s5pv210要也要分割槽的原因,海思3518e的spiflash也一樣要分割槽,可以uboot啟動後,在命令列下進行分割槽,並使用tftp下載的方式燒錄kernel,rootfs;也可以利用工具直接分割槽同時,將各個部分通過uart方式燒錄進去,速度很慢

         (4)uboot命令列下操作spiflash

2、flash介紹

     (1)flash晶片 = 內部flash儲存顆粒 + 封裝的控制器

     (2)程式碼燒錄存放的地方,板子啟動時,根據BL0的設計,有的設計成cpu優先從flash中讀取程式碼到DDR執行,uboot

     (3)像emmc、SD、MMC、Nandflash、SPIflash等區別在於控制器不用(使用不用的時序協議規則)

              小容量需要:SPIflash優勢介面簡單,一般的MCU都支援SPI介面協議,這樣就可以外接,一個8M的只要幾塊錢,MCU內建flash成本高,很多MCU在需要外擴一個8M-64M級別的外部儲存器時,選擇spiflash,比如海思3518E用的16M的,uboot-268k+kernel-2.6M+rootf-4.8M,基本用不到10M;

              大容量需要:使用emmc、SD、MMC、Nandflash等,Nandflash屬於將被淘汰的介面,且複雜,相容性不好,一些MCU不支援了,大多用EMMC(比如現在手機內建的板載128G,不能插卡)、SD卡