新聞中心
想了解更多內容,請訪問:

成都創(chuàng)新互聯(lián)公司專注于騰沖企業(yè)網站建設,成都響應式網站建設公司,商城網站建設。騰沖網站建設公司,為騰沖等地區(qū)提供建站服務。全流程定制制作,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務
和華為官方合作共建的鴻蒙技術社區(qū)
https://harmonyos./#zz
1 . 燒錄工具
理解 HarmonyOS 驅動框架,用戶態(tài) APP 和內核態(tài)驅動之間的通信機制。
HarmonyOS 燒錄使用的海思自研的燒錄工具 Hitool ,使用起來相對來說比較簡單。整體界面如圖:
2. 燒錄內容
這些文件分別是: OHOS_ Image.bin 復制文件,rootfs.img 和userfs.img 多個文件。燒錄內容主要分為兩部分,一部分是引導文件 fastboot 燒錄,另一部分為項目文件燒錄。
3. 燒錄方法
本文以 sample_test demo 為例講解燒錄方法,開發(fā)板類型是 Hi 3516DV300。
燒錄的第一步是打開 Hitool 工具,選擇對應的芯片類型。如果你的開發(fā)板使用的是 Hi 3518ev300 的,請選擇對應的芯片。
3.1 串口燒錄
3.1.1 fastboot 燒錄
Hiburn 請按照以下進行設置:
① 我手上用的開發(fā)板是 Hi3516DV300 的,它的外掛 flash 是spi nor 類型的,你們自己的設置請根據(jù)實際情況確定。
② 本示例所用的外接設備,計算機識別成 COM1 ,你們做開發(fā)時請設置成相應的端口號。
③ 燒錄方式選擇 fastboot 。
Uboot 所在目錄(如果 uboot 不能正常啟動,請從其他地方尋找相對老一點的版本 uboot):
點擊開始燒錄,開發(fā)板電源拔掉并重新接上。
燒寫成功后,打開終端,連接串口可以進入 hisilion 命令行。
3.1.2 應用文件燒錄
3.1.2.1 Hitool 設置:
首先軟件的設置如下圖所示,請參考圖例正確設置:
這里面比較重要的就是開始地址和文件長度的確定,這個部分的規(guī)則如下:
① Uboot的占用了 1M 的存儲空間,所以OHOS _Image 。bin 的開始地址是 1M ,
② 文件大小不足 1M 的取值1M ,有時是本示例中OHOS _Image.bin 的大小是 5 656kb , Hiburn 中它的長度設置為 6M 。所以rootfs。img 燒錄的起始地址是 1M + 6M = 7M 。
③ 其余情況,以此類推。
本示例中,各文件長度如下圖所示:
3.1.2.2 主軸
開始燒錄前,首先先擴展打印信息的串口鏈接,把串口騰出來給燒錄器使用。
3.1.2.3 開始燒錄
點擊 “燒寫”,并給開發(fā)板重新上電,燒錄就開始了。16M 的文件,用串口 1 1500bps 的燒寫速度,是需要花費一段時間的,所以系統(tǒng)-及應用文件的燒錄一般不建議使用串口。
燒錄過程截圖:
燒寫完成,耗時 2 8 分鐘。
3.2 網口燒錄
本示例網口燒錄,硬件設備使用的是 UGREEN 的usb 轉RJ45 網線接口,值得參考。
3.2.1 網口增加 IP 地址
首先為開發(fā)板互聯(lián)網口添加 IP 地址:1 92.168.1.3 ,增加方法如下:
控制面板中找到與單板連接的網卡,右鍵打開屬性。
選擇 Internet 協(xié)議版本4 (TCP / IPv4 )。
按圖配置 IP 地址和網關。
點擊 “ 確定” 完成配置保存。
3.2.2 單板 IP 配置
單板與 PC 間連接串口后,將單板電,自動進入U-boot ,按鍵盤“ 回車” 鍵可在命令窗口輸入命令,為單板配置192.168.1.10 的IP 地址,并指定192.168。 1.3 的服務器IP 地址,命令如下。
setenv serverip 192.168.1.3
setenv ipaddr 192.168.1.10
保存環(huán)境
配置完成后使用pri 命令確認查看配置結果,如下圖所示。
檢查網絡:在 PC 端使用ping 命令確定單板與PC 的網絡,命令為“ ping 192.168.1.3” 。
3.2.3 主軸
開始燒錄前,首先先擴展打印信息的串口鏈接,把串口騰出來給燒錄器使用。
3.2.4 配置 Hitool 并燒錄
Hitool 配置如下,請參考。
配置完成后,點擊燒錄。燒錄成功截圖 :
3.2.5 網口燒錄的命令分析
網口燒錄的命令刪除去中間的細節(jié)輸出,整理如下所示:
開始下載過程。
啟動成功啟動!
發(fā)送命令:getinfo版本
版本:U-Boot 2016.11
[EOT](確定)
發(fā)送命令:sf probe 0 / / 選擇spi flash 0
[EOT](確定)
發(fā)送命令:getinfo spi
塊:64KB芯片:16MB * 1
ID:0xC2 0x20 0x18
名稱:“ MX25L128XX”
[EOT](確定)
等待phy準備就緒,將需要8秒鐘。
發(fā)送命令:setenv serverip 192.168.1.3
[EOT](確定)
發(fā)送命令:setenv ethaddr 00:8c:55:07:b0:88
[EOT](確定)
發(fā)送命令:setenv ipaddr 192.168.1.10
[EOT](確定)
發(fā)送命令:setenv網絡掩碼255.255.255.0
[EOT](確定)
發(fā)送命令:setenv gatewayip 192.168.1.1
[EOT](確定)
Tftp服務器下載主頁切換到<\\ 10.175.126.15 \ zhuanjia \ zfdz \ camera0825 \ out \ ipcamera_hi3516dv300_liteos_a>
發(fā)送命令:mw.b 0x81000000 0xFF的0x590000 // 把內存中從 0X 8100 開始的 0X 590000 個字節(jié)全部置 1
[EOT](確定)
發(fā)送命令:tftp 0x81000000 OHOS_Image.bin // 把OHOS_Image.bin 文檔加載到內存中去,起始地址為 0x 81000000。
海思ETH網絡控制器
eth0:PHY狀態(tài)更改:LINK = UP:DUPLEX = FULL:SPEED = 100M
使用eth0設備
來自服務器192.168.1.3的TFTP; 我們的IP地址是192.168.1.10
文件名“ OHOS_Image.bin”。
加載地址:0x81000000
傳輸?shù)淖止?jié)數(shù)= 5791744(586000 hex)
[EOT](確定)
發(fā)送命令:crc32 81000000 586000
crc32 for 81000000 ... 81585fff ==> 78b90ed7
[EOT](確定)
發(fā)送命令:sf probe 0 / / 選擇spi flash 0
[EOT](確定)
發(fā)送命令:sf擦除0x100000 0x600000 // 把閃存存儲中從 0x 100000 開始的6M 字節(jié)的存儲空間清零。
發(fā)送命令:SF寫0x81000000的0x100000 0x590000 // 把內存中從 0X 8100 開始的 0X 590000 字節(jié)的內容復制到閃存中,閃存中存儲的起始地址是 0X 100000
設備0偏移量0x100000,大小為0x590000
發(fā)送命令:mw.b 0x81000000 0xFF的0x780000 // 把內存中從 0X 8100 開始的0x780000 個字節(jié)全部置 1
[EOT](確定)
發(fā)送命令:tftp 0x81000000 rootfs.img // 加載rootfs.img 到內存中去,存儲單位的起始地址是 0x81000000
海思ETH網絡控制器
eth0:PHY狀態(tài)更改:LINK = UP:DUPLEX = FULL:SPEED = 100M
使用eth0設備
來自服務器192.168.1.3的TFTP; 我們的IP地址是192.168.1.10
文件名“ rootfs.img”。
發(fā)送命令:crc32 81000000 772314
crc32為81000000 ... 81772313 ==> ba26d341
[EOT](確定)
發(fā)送命令:sf probe 0 // 選擇spi flash 0
[EOT](確定)
發(fā)送命令:sf擦除0x700000 0x800000 // 把閃存存儲中從 0x 700000 開始的8M 字節(jié)的存儲空間清零。
發(fā)送命令:SF寫0x81000000 0x700000 0x780000 // 把內存中從 0X 8100 開始的0x780000 字節(jié)的內容復制到閃存中,閃存中存儲的起始地址是0x700000
設備0偏移量0x700000,大小為0x780000
發(fā)送命令:mw.b 0x81000000 0xFF 0x10000 // 把內存中從 0x 81000000 開始的0x10000 個字節(jié)全部置 1
[EOT](確定)
發(fā)送命令:tftp 0x81000000 userfs.img // 加載userfs.img 到內存中去,存儲單位的起始地址是 0x81000000
海思ETH網絡控制器
eth0:PHY狀態(tài)更改:LINK = UP:DUPLEX = FULL:SPEED = 100M
使用eth0設備
來自服務器192.168.1.3的TFTP; 我們的IP地址是192.168.1.10
文件名“ userfs.img”。
加載地址:0x81000000
載入中:* ##
0字節(jié)/秒
做完了
傳輸?shù)淖止?jié)數(shù)= 3020(密件抄送十六進制)
[EOT](確定)
發(fā)送命令:crc32 81000000 bcc
crc32為81000000 ... 81000bcb ==> 0361fc92
[EOT](確定)
發(fā)送命令:sf probe 0 / / 選擇spi flash 0
[EOT](確定)
發(fā)送命令:sf擦除0xf00000 0x100000 // 把閃存存儲中從 0x F00000 開始的1M 字節(jié)的存儲空間清零。
發(fā)送命令:sf write 0x81000000 0xf00000 0x10000 // 把內存中從 0x 81000000 開始的0x10000 字節(jié)的內容復制到flash 中, flash 中存儲的起始地址是0xf00000
設備0偏移量0xf00000,大小為0x10000
以0xf10000進行寫入-100%完成。
SF:65536字節(jié)@ 0xf00000書面:OK
[EOT](確定)
分區(qū)成功燒毀!
發(fā)送命令:重置
重置成功!
分區(qū)燒毀完成!
串行通道已成功關閉。
3.3 USB 燒錄
硬件使用的雙母口 USB 線。
3.3.1 Hitool 工具配置
文件目錄中只要包含 OHOS_Image.bin,rootfs.img,userfs.img 三個文件即可,不限定位置。
燒寫方式一定要選擇 DDR 燒寫。
3.3.2 燒錄步驟:
3.3.2.1 燒錄 OHOS_Image.bin 文件
在串口終端中輸入以下命令,每條命令的具體含義請參考網口燒錄相關部分的描述:
mw.b 0x80000000 0xff 0x600000; // 0x600000 就是OHOS_Image.bin 所占的空間(取整)
usbtftp 0x80000000 OHOS_Image.bin;
sf探針0; sf擦除0x100000 0x600000; sf寫入0x80000000 0x100000 0x600000; / / 起始地址為 0X 100000
如果是 Hi3518ev300 的板子,請把命令中的 0x80000000 改成0x40000000 。
3.3.2.2 燒錄 rootfs 。img 文件
在串口終端中輸入以下命令,每條命令的具體含義請參考網口燒錄相關部分的描述:
mw.b 0x80000000 0xff 0x800000; // 0x800000 就是 rootfs .img 所占的空間(取整)
usbtftp 0x80000000 rootfs.img;
sf探針0; sf擦除0x700000 0x800000; sf寫入0x80000000 0x700000 0x800000; / / 起始地址為 0X 100000 + 0x600000 = 0X 7 00000
如果是 Hi3518ev300 的板子,請把命令中的 0x80000000 改成0x40000000 。
3.3.2.3 燒錄 userfs.img 文件
在串口終端中輸入以下命令,每條命令的具體含義請參考網口燒錄相關部分的描述:
mw.b 0x80000000 0xff 0x100000; // 0x100000 就是userfs.img 所占的空間(取整)
usbtftp 0x80000000 userfs.img;
sf探針0; sf擦除0xf00000 0x100000; sf寫入0x80000000 0xf00000 0x100000; / / 起始地址為 0X 100000 + 0x600000 + 的0x800000 = 0xf00000
如果是 Hi3518ev300 的板子,請把命令中的 0x80000000 改成0x40000000 。
3.3.2.4 燒錄過程中控制臺信息:
4. 開源板 emmc 燒錄
燒錄的時候,選擇 eMMC 方式。我們這里選擇通過網口燒錄 eMMC ,網口的配置參考上文。
燒錄完成之后, uboot 的啟動命令還有所不同,在 eMMC 中,存儲以 5 12B 為單位的,如果我們的文件(通常是 OHOS _Image.bin )大小為 6M (1 0 位數(shù)),我們需要把它轉換成 1 6 二進制,具體轉換的公式如下:
1 0 二進制中文件總大?。?6 * 1024 * 1024 字節(jié)= 6291456Byte ,那么總共是多少個 5 12KB 的塊呢?我們用 6 291456/512 = 12288 個塊(十進制),再把十進制中的 1 2288 塊個轉換分類中翻譯 1 6 進制,得 0X 3000 。那么也就是說一共有 0x3000處個5 12Byte 的塊。
“; setenv bootcmd” SF探針0; MMC讀取0x0 0x80000000 0x800 0x3000;“;
setenv bootargs“控制臺= ttyAMA0,115200n8 root = emmc fstype = vfat rootaddr = 7M rootsize = 15M rw”; saveenv;
5. 不同燒錄方法之間的比較
Usb 燒錄方式和網口燒錄方式想象,不同之處比較如下:
網口燒錄和 USB 燒錄的速度基本是相同的,大約在串口燒錄就太慢了,所以正常情況下不推薦串口燒錄。
綜上比較,只從效率的角度看,燒錄器的選擇優(yōu)先級為:
網口燒錄 > USB 燒錄 > 串口燒錄
6. 其他問題
我們現(xiàn)在用的開發(fā)板 Flash 只有 1 6M ,如果程序過大,則無法進行燒錄。所以做項目的時候,外掛的 flash 會大一些,留有足夠的預備空間。
課程鏈接:HarmonyOS南向驅動調試(gpio以及wifi)及燒錄方法總結
想了解更多內容,請訪問:
和華為官方合作共建的鴻蒙技術社區(qū)
https://harmonyos./#zz
當前題目:鴻蒙HarmonyOS燒錄方法總結
文章地址:http://fisionsoft.com.cn/article/cdojpdo.html


咨詢
建站咨詢
