最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

鴻蒙HarmonyOS燒錄方法總結

2020-09-19 14:34 作者:張飛實戰(zhàn)電子  | 我要投稿

1.燒錄工具

理解HarmonyOS驅動框架,用戶態(tài)APP和內核態(tài)驅動之間的通信機制。

HarmonyOS燒錄使用的海思自研的燒錄工具Hitool,使用起來相對來說比較簡單。整體界面如圖所示:

?


2.?燒錄內容

燒錄內容主要分為兩部分,一部分是引導文件fastboot燒錄,另一部分為項目文件燒錄。這些文件分別是:OHOS_Image.bin可執(zhí)行文件,rootfs.img和userfs.img鏡像文件。


3.?燒錄方法

本文以sample_test demo?為例講解燒錄方法,開發(fā)板類型是Hi3516DV300.

燒錄的第一步是打開Hitool工具,選擇對應的芯片類型。如果你的開發(fā)板使用的是Hi3518ev300的,請選擇對應的芯片。

?


?

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的大小是5656kb,Hiburn中它的長度設置為6M。所以rootfs.img燒錄的起始地址是1M+?6M?=?7M。

③?其余情況,以此類推。

?

本示例中,各文件長度如下圖所示:

?


3.1.2.2?斷開串口

開始燒錄前,首先先斷開打印信息的串口鏈接,把串口騰出來給燒錄器使用。

?


3.1.2.3?開始燒錄

點擊“燒寫”,并給開發(fā)板重新上電,燒錄就開始了。16M的文件,用串口11500bps的燒寫速度,是需要花費一段時間的,所以系統(tǒng)及應用文件的燒錄一般不建議使用串口。

燒錄過程截圖:

?

燒寫完成,耗時28分鐘。

?

3.2?網口燒錄

本示例網口燒錄,硬件設備使用的是UGREEN的usb轉RJ45網線接口,僅供參考。

3.2.1?網口增加IP地址

首先為開發(fā)板互聯(lián)網口添加IP地址:192.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

saveenv

?

配置完成后使用pri命令確認查看配置結果,如下圖所示。

?


檢查網絡:在PC端使用ping命令確定單板與PC的網絡,命令為"ping 192.168.1.3"。

?


3.2.3?斷開串口

開始燒錄前,首先先斷開打印信息的串口鏈接,把串口騰出來給燒錄器使用。

?


3.2.4?配置Hitool并燒錄

Hitool配置如下,請參考。

?


配置完成后,點擊燒錄。燒錄成功截圖:

?


3.2.5?網口燒錄的命令分析

網口燒錄的命令刪去中間的細節(jié)輸出,整理如圖所示:

?

start download process.

?

Boot started successfully!

?

Send command:getinfo version

version: U-Boot 2016.11

[EOT](OK)

?

Send command:sf probe 0//選擇spi flash 0

[EOT](OK)

?

Send command:getinfo spi

Block:64KB Chip:16MB*1

ID:0xC2 0x20 0x18

Name:"MX25L128XX"

[EOT](OK)

waiting phy ready, it will take 8s.

Send command:setenv serverip 192.168.1.3

[EOT](OK)

Send command:setenv ethaddr 00:8c:55:07:b0:88

[EOT](OK)

Send command:setenv ipaddr 192.168.1.10

[EOT](OK)

Send command:setenv netmask 255.255.255.0

[EOT](OK)

Send command:setenv gatewayip 192.168.1.1

[EOT](OK)

Tftp server Download Home switched to <\\10.175.126.15\zhuanjia\zfdz\camera0825\out\ipcamera_hi3516dv300_liteos_a>

Send command:mw.b 0x81000000 0xFF 0x590000//把內存中從0x81000000?開始的0x590000個字節(jié)全部置1

[EOT](OK)

?

Send command:tftp 0x81000000 OHOS_Image.bin//把OHOS_Image.bin文檔加載到內存中去,起始地址為0x81000000.

Hisilicon ETH net controler

eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M

Using eth0 device

TFTP from server 192.168.1.3; our IP address is 192.168.1.10

Filename 'OHOS_Image.bin'.

Load address: 0x81000000

Bytes transferred = 5791744 (586000 hex)

[EOT](OK)

?

Send command:crc32 81000000 586000

crc32 for 81000000 ... 81585fff ==> 78b90ed7

[EOT](OK)

Send command:sf probe 0//選擇spi flash 0

[EOT](OK)

Send command:sf erase 0x100000 0x600000//把flash存儲器中從0x100000開始的6M字節(jié)的存儲空間清零。

Send command:sf write 0x81000000 0x100000 0x590000//把內存中從0x81000000開始的0x590000字節(jié)的內容copy到flash中flash中存儲的起始地址是0x100000

device 0 offset 0x100000, size 0x590000

Send command:mw.b 0x81000000 0xFF 0x780000//把內存中從0x81000000?開始的0x780000個字節(jié)全部置1

?

[EOT](OK)

Send command:tftp 0x81000000 rootfs.img//加載rootfs.img到內存中去,存儲單位的起始地址是0x81000000

Hisilicon ETH net controler

eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M

Using eth0 device

TFTP from server 192.168.1.3; our IP address is 192.168.1.10

Filename 'rootfs.img'.

Send command:crc32 81000000 772314

crc32 for 81000000 ... 81772313 ==> ba26d341

[EOT](OK)

Send command:sf probe 0//選擇spi flash 0

[EOT](OK)

Send command:sf erase 0x700000 0x800000//把flash存儲器中從0x700000開始的8M字節(jié)的存儲空間清零

Send command:sf write 0x81000000 0x700000 0x780000//把內存中從0x81000000開始的0x780000字節(jié)的內容copy到flash中,flash中存儲的起始地址是0x700000

device 0 offset 0x700000, size 0x780000

Send command:mw.b 0x81000000 0xFF 0x10000//把內存中從0x81000000?開始的0x10000個字節(jié)全部置1

?

[EOT](OK)

Send command:tftp 0x81000000 userfs.img//加載userfs.img到內存中去,存儲單位的起始地址是0x81000000

Hisilicon ETH net controler

eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M

Using eth0 device

TFTP from server 192.168.1.3; our IP address is 192.168.1.10

Filename 'userfs.img'.

Load address: 0x81000000

Loading: *##

?0 Bytes/s

done

Bytes transferred = 3020 (bcc hex)

[EOT](OK)

Send command:crc32 81000000 bcc

crc32 for 81000000 ... 81000bcb ==> 0361fc92

[EOT](OK)

Send command:sf probe 0//選擇spi flash 0

[EOT](OK)

Send command:sf erase 0xf00000 0x100000//把flash存儲器中從0xF00000開始的1M字節(jié)的存儲空間清零

Send command:sf write 0x81000000 0xf00000 0x10000//把內存中從0x81000000開始的0x10000字節(jié)的內容copy到flash中,flash中存儲的起始地址是0xf00000

device 0 offset 0xf00000, size 0x10000

Writing at 0xf10000 -- 100% complete.

SF: 65536 bytes @ 0xf00000 Written: OK

[EOT](OK)

Partition ?burnt successfully!

Send command:reset

reset success!

Partition burnt completed!

Serial channels were closed successfully.

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 probe 0;sf erase 0x100000 0x600000;sf write 0x80000000 0x100000 0x600000;//起始地址為0x100000

如果是Hi3518ev300的板子,請把命令中的0x80000000改成0x40000000。

?


3.3.2.2?燒錄rootfs.img文件

在串口終端中輸入以下命令,每條命令的具體含義請參考網口燒錄相關部分的描述:

mw.b 0x80000000 0xff 0x800000;//0x800000就是rootfs.img所占的空間(取整)

usbtftp 0x80000000 rootfs.img;

sf probe 0;sf erase 0x700000 0x800000;sf write 0x80000000 0x700000 0x800000;//起始地址為0x100000?+?0x600000 = 0x700000

如果是Hi3518ev300的板子,請把命令中的0x80000000改成0x40000000。


?


3.3.2.3?燒錄userfs.img文件

在串口終端中輸入以下命令,每條命令的具體含義請參考網口燒錄相關部分的描述:

mw.b 0x80000000 0xff 0x100000;//0x100000就是userfs.img所占的空間(取整)

usbtftp 0x80000000 userfs.img;

sf probe 0;sf erase 0xf00000 0x100000;sf write 0x80000000 0xf00000 0x100000;//起始地址為0x100000?+?0x600000?+?0x800000=?0xf00000

如果是Hi3518ev300的板子,請把命令中的0x80000000改成0x40000000。


3.3.2.4?燒錄過程中控制臺信息:

?


4.?開源板emmc燒錄

燒錄的時候,選擇eMMC方式。我們這里選擇通過網口燒錄eMMC,網口的配置參考上文。

?


燒錄完成之后,uboot的啟動命令還有所不同,在eMMC中,存儲是以512B為單位的,如果我們的文件(比如是OHOS_Image.bin)大小為6M(10進制),我們需要把它轉換成16進制,具體轉換的公式如下:

10進制中文件總大?。?*?1024?*?1024?Byte=6291456Byte,那么總共是多少個512KB的塊呢?我們用6291456/512=?12288個塊(十進制),再把十進制中的12288個塊轉換成16進制,得0x3000。那么也就是說一共有0x3000個512Byte的塊。

?

setenv bootcmd "sf probe 0;mmc read 0x0 0x80000000 0x800 0x3000;";

setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=7M rootsize=15M rw"; saveenv;

5.?不同燒錄方法之間的比較

Usb燒錄方式和網口燒錄方式想象,不同之處比較如下:

燒錄方式

文件導入命令

內存起始地址

命令輸入方式

校驗環(huán)節(jié)

Usb燒錄

usbtftp

0x80000000

手工

網口燒錄

tftp

0x81000000

自動

網口燒錄和USB燒錄的速度基本是相同的,相比之下串口燒錄就太慢了,所以正常情況下不推薦串口燒錄。

綜上比較,只從效率的角度看,燒錄器的選擇優(yōu)先級為:

網口燒錄> ?USB?燒錄>串口燒錄


6.?其他問題

我們現(xiàn)在用的開發(fā)板Flash只有16M,如果程序過大,則無法進行燒錄。所以做項目的時候,外掛的flash盡可能大一些,留有足夠的預備空間。

鴻蒙HarmonyOS燒錄方法總結的評論 (共 條)

分享到微博請遵守國家法律
西昌市| 罗山县| 广东省| 岳西县| 南漳县| 子长县| 金寨县| 望城县| 蒲城县| 广安市| 包头市| 隆尧县| 怀宁县| 延吉市| 博爱县| 崇礼县| 兴宁市| 昭通市| 托克逊县| 邹城市| 太原市| 常州市| 扎鲁特旗| 克山县| 岳普湖县| 涟源市| 湘阴县| 屏山县| 吉林市| 敦化市| 达日县| 金湖县| 泽普县| 静宁县| 沙雅县| 新竹县| 嵩明县| 万宁市| 桂阳县| 友谊县| 五华县|