Hi3518_SDK

第一章 Hi3518_SDK_Vx.x.x.x版本升級操做說明linux

若是您是首次安裝本SDK,請直接參看第2章。shell

 

第二章 首次安裝SDKbash

一、Hi3518 SDK包位置服務器

在"Hi3518_V100R001SPC***/01.software/board"目錄下,您能夠看到一個 Hi3518_SDK_Vx.x.x.x.tgz 的文件,該文件就是Hi3518的軟件開發包。網絡

其中,Hi3518_V100R001SPC01xxx對應的是uclib版本,Hi3518_V100R001SPC02xxx對應的是glibc版本。tcp

 

二、解壓縮SDK包工具

在linux服務器上(或者一臺裝有linux的PC上,主流的linux發行版本都可以),使用命令:tar -zxf Hi3518_SDK_Vx.x.x.x.tgz ,操作系統

解壓縮該文件,能夠獲得一個Hi3518_SDK_Vx.x.x.x目錄。component

 

三、展開SDK包內容server

1) 在執行安裝腳本前建議修改系統默認shell爲bash。

2) 返回Hi3518_SDK_Vx.x.x.x目錄,運行source sdk.unpack(請用root或sudo權限執行)將會展開SDK包打包壓縮存放的內容,請按照提示完成操做。

若是您須要經過WINDOWS操做系統中轉拷貝SDK包,請先運行source sdk.cleanup,收起SDK包的內容,拷貝到新的目錄後再展開。

 

四、在linux服務器上安裝交叉編譯器

1)安裝uclibc交叉編譯器(注意,須要有sudo權限或者root權限):

進入Hi3518_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100nptl-linux目錄,運行chmod +x cross.install,而後運行./cross.install便可。

2) 安裝glibc交叉編譯器(注意,須要有sudo權限或者root權限):

進入Hi3518_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv200-linux目錄,運行chmod +x cross.install,而後運行./cross.install便可。

3) 執行source /etc/profile, 安裝交叉編譯器的腳本配置的環境變量就能夠生效了,或者請從新登錄也可。

 

五、編譯osdrv

參見osdrv目錄下readme

 

六、SDK目錄介紹

Hi3518_SDK_Vx.x.x.x 目錄結構以下:

|-- sdk.cleanup # SDK清理腳本

|-- sdk.unpack # SDK展開腳本

|-- osdrv # 存放操做系統及相關驅動的目錄

| |-- busybox # busybox源代碼

| |-- drv # drv源代碼

| |-- kernel # linux內核源代碼

| |-- pub # 編譯好的鏡像、工具、drv驅動等

| |-- rootfs_scripts # rootfs源代碼

| |-- toolchain # 交叉編譯器

| |-- tools # linux工具源代碼

| |-- uboot # uboot源代碼

| `-- Makefile # osdrv Makefile

|-- package # 存放SDK各類壓縮包的目錄

| |-- osdrv.tgz # linux內核/uboot/rootfs/tools源碼壓縮包

| |-- mpp.tgz # 媒體處理平臺軟件壓縮包

| `-- image # 可供FLASH燒寫的映像文件,如內核、根文件系統

|-- scripts # 存放shell腳本的目錄

|-- mpp # 存放媒體處理平臺的目錄

|-- component # 組件源代碼

|-- extdrv # 板級外圍驅動源代碼

|-- include # 對外頭文件

|-- ko # 內核模塊

|-- lib # release版本庫以及音頻庫

|-- tools # 媒體處理相關工具

`-- sample # 樣例源代碼

 

 

第三章、安裝、升級Hi3518DEMO板開發開發環境

# 若是您使用的Hi3518的DEMO板,能夠按照如下步驟燒寫u-boot,內核以及文件系統,如下步驟均使用網絡來更新。

# 一般,您拿到的單板中已經有燒寫u-boot,若是沒有的話,建議更換帶u-boot的Flash。

# 更詳細的操做步驟及說明,請參見01.software\board\documents目錄下的《Linux開發環境用戶指南》。

# 如下操做假設您的單板上已經有u-boot,使用網口燒寫uboot、kernel及rootfs到Flash中。

# Demo單板默認爲從SPI Flahs啓動。

 

一、配置tftp服務器

# 可使用任意的tftp服務器;

# 若是使用hi3518a,將package/image_uclibc_hi3518a(或image_glibc_hi3518a)下的相關文件拷貝到tftp服務器目錄下;

# 若是使用hi3518c,將package/image_uclibc_hi3518c(或image_glibc_hi3518c)下的相關文件拷貝到tftp服務器目錄下;

# 若是使用hi3516c,則使用package/image_uclibc_hi3516c(或image_glibc_hi3516c)目錄下的相關文件鏡像。

 

二、參數配置

# 單板上電後,敲任意鍵進入u-boot。設置serverip(即tftp服務器的ip)、ipaddr(單板ip)和ethaddr(單板的MAC地址)。

setenv serverip xx.xx.xx.xx

setenv ipaddr xx.xx.xx.xx

setenv ethaddr xx:xx:xx:xx:xx:xx

setenv netmask xx.xx.xx.xx

setenv gatewayip xx.xx.xx.xx

ping serverip,確保網絡暢通。

 

三、燒寫映像文件到SPI Flash

以16M SPI Flash爲例。

1)地址空間說明

| 1M | 3M | 12M |

|------------|---------------|-----------------------|

| boot | kernel | rootfs |

 

如下的操做均基於圖示的地址空間分配,您也能夠根據實際狀況進行調整。

2)燒寫u-boot

sf probe 0

sf erase 0 0x100000

mw.b 82000000 ff 100000

tftp 0x82000000 u-boot-200MHZ.bin #若是是hi3516c,使用u-boot-220MHZ.bin

sf write 82000000 0 100000

reset

3)燒寫內核

sf probe 0

sf erase 100000 0x300000

mw.b 82000000 ff 300000

tftp 82000000 uImage

sf write 82000000 100000 300000

4)燒寫文件系統

sf probe 0

sf erase 400000 0xc00000

mw.b 82000000 ff c00000

tftp 82000000 rootfs_64k.jffs2

sf write 82000000 400000 0xc00000

5)設置啓動參數

setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'

setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'

save

 

四、燒寫映像文件到NAND Flash

注意:Hi3518c不支持nand flash

下面以128M 2k1bit類型的Nand Flash爲例。

1)地址空間說明

| 1M | 3M | 12M | 112M |

|------------|---------------|-----------------------|-----------------------|

| boot | kernel | rootfs | others |

 

如下的操做均基於圖示的地址空間分配,您也能夠根據實際狀況進行調整。

2)燒寫u-boot

mw.b 82000000 ff 100000

tftp 82000000 u-boot-200MHZ.bin #若是是hi3516c,使用u-boot-220MHZ.bin

nand erase 0 100000

nand write 82000000 0 100000

reset

3)燒寫內核

mw.b 82000000 ff f00000

tftp 82000000 uImage

nand erase 100000 300000

nand write 82000000 100000 300000

4)燒寫文件系統

mw.b 82000000 ff c00000

tftp 82000000 rootfs_2k_1bit.yaffs2

nand erase 400000 c00000

nand write.yaffs 82000000 400000 $(filesize)

5)設置啓動參數

setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:1M(boot),3M(kernel),12M(rootfs),112M(others)'

setenv bootcmd 'nand read 0x82000000 0x100000 0x300000;bootm 0x82000000'

save

 

五、啓動新系統

reset # 重啓進入新系統。

 

第四章、開發前環境準備

 

一、管腳複用

與媒體業務相關的管腳複用都在mpp/ko_Hi3518目錄下的sh腳本中配置,若是與實際狀況不符請直接修改,此腳本被load3518調用,在加載mpp內核模塊以前被執行;

mpp以外的其餘管腳複用統一在uboot中配置,詳細說明請參見《U-boot移植應用開發指南》。

 

第五章、使用SDK和DEMO板進行開發

一、開啓Linux下的網絡

# 設置網絡

ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx;

ifconfig eth0 xx.xx.xx.xx netmask xx.xx.xx.xx;

route add default gw xx.xx.xx.xx

# 而後ping一下其餘機器,如無心外,網絡將能正常工做。

 

二、使用NFS文件系統進行開發

# 在開發階段,推薦使用NFS做爲開發環境,能夠省去從新制做和燒寫根文件系統的工做。

# 掛載NFS文件系統的操做命令:

mount -t nfs -o nolock -o tcp xx.xx.xx.xx:/your-nfs-path /mnt

# 而後就能夠在/mnt目錄下訪問服務器上的文件,並進行開發工做。

 

三、開啓telnet服務

# 網絡正常後,運行命令 telnetd& 就能夠啓動單板telnet服務,而後才能使用telnet登陸到單板。

 

四、運行MPP業務

# 在單板linux系統下,進入mpp/ko_Hi3518目錄,加載KO。執行load3518腳本時須要帶sensor名,如使用ar0130 sensor:

cd mpp/ko_hi3518

./load3518 -i ar0130

 

# 進入各sample目錄下執行相應樣例程序(sample須要先在服務器上成功編譯過)

cd mpp/sample/vio

./sample_vio 0

 

第六章 地址空間分配與使用

一、DDR內存管理說明

1)全部DDR內存中,一部分由操做系統管理,稱爲OS內存;另外一部分由MMZ模塊管理,供媒體業務單獨使用,稱爲MMZ內存。

2)OS內存起始地址爲0x80000000,內存大小可經過bootargs進行配置,例如第三章中的setenv bootargs 'mem=64M ... ',表示分配給操做系統內存爲64M,您能夠根據實際狀況進行調整。

3)MMZ內存由MMZ內核模塊管理(mpp/ko_hi35xx目錄下的mmz.ko),加載mmz模塊時,經過模塊參數指定其起始地址及大小,例如:

insmod mmz.ko mmz=anonymous,0,0x84000000,64M anony=1

表示mmz一塊區域,區域的名稱爲anonymous,起始地址爲0x84000000,大小爲64M。

您能夠經過修改mpp/ko_Hi3518目錄下load3518腳本中的mmz模塊參數,來修改其起始地址和總大小。

4)請注意MMZ內存地址範圍不能與OS內存重疊。

 

二、DEMO板DDR內存管理示意

1) 以容量爲128MBytes的DDR內存爲例,如下爲根據本文檔和SDK默認配置獲得的內存管理示意圖:

 

-----|-------| 0x80000000 # Memory managed by OS.

64M | OS |

| |

-----|-------| 0x84000000 # Memory managed by MMZ block anonymous.

64M | MMZ |

| |

-----|-------| 0x88000000 # End of DDR.

 

注意:

(1)用戶在配置啓動參數時須要設置OS的管理內存爲64M,「setenv bootargs 'mem=64M ...」。

(2)系統啓動後,配置load3518的腳本中mmz的管理內存爲64M,「insmod mmz.ko mmz=anonymous,0,0x84000000,64M」。

本站公眾號
   歡迎關注本站公眾號,獲取更多信息