Hi3518_SDK


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

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

 

第二章 首次安裝SDK

1、Hi3518 SDK包位置

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

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

 

2、解壓縮SDK包

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

解壓縮該文件,可以得到一個Hi3518_SDK_Vx.x.x.x目錄。

 

3、展開SDK包內容

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

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

如果您需要通過WINDOWS操作系統中轉拷貝SDK包,請先運行source sdk.cleanup,收起SDK包的內容,拷貝到新的目錄后再展開。

 

4、在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, 安裝交叉編譯器的腳本配置的環境變量就可以生效了,或者請重新登陸也可。

 

5、編譯osdrv

參見osdrv目錄下readme

 

6、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啟動。

 

1、配置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)目錄下的相關文件鏡像。

 

2、參數配置

# 單板上電后,敲任意鍵進入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,確保網絡暢通。

 

3、燒寫映像文件到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

 

4、燒寫映像文件到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

 

5、啟動新系統

reset # 重啟進入新系統。

 

第四章、開發前環境准備

 

1、管腳復用

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

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

 

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

1、開啟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一下其他機器,如無意外,網絡將能正常工作。

 

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

# 在開發階段,推薦使用NFS作為開發環境,可以省去重新制作和燒寫根文件系統的工作。

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

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

# 然后就可以在/mnt目錄下訪問服務器上的文件,並進行開發工作。

 

3、開啟telnet服務

# 網絡正常后,運行命令 telnetd& 就可以啟動單板telnet服務,然后才能使用telnet登錄到單板。

 

4、運行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

 

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

1、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內存重疊。

 

2、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”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM