閱讀604 返回首頁    go 技術社區[雲棲]


Hi3531 SDK 安裝以及升級使用說明

Hi3531 SDK 安裝以及升級使用說明

第一章 Hi3531_SDK_Vx.x.x.x版本升級操作說明
   如果您是首次安裝本SDK,請直接參看第2章。
   
第二章 首次安裝SDK
1、Hi3531 SDK包位置
    在"Hi3531_V100R001***/01.software/board"目錄下,您可以看到一個 Hi3531_SDK_Vx.x.x.x.tgz 的文件,
該文件就是Hi3531的軟件開發包。

2、解壓縮SDK包
    在linux服務器上(或者一台裝有linux的PC上,主流的linux發行版本均可以),使用命令:tar -zxf Hi3531_SDK_Vx.x.x.x.tgz ,
解壓縮該文件,可以得到一個Hi3531_SDK_Vx.x.x.x目錄。

3、展開SDK包內容
    返回Hi3531_SDK_Vx.x.x.x目錄,運行./sdk.unpack(請用root或sudo權限執行)將會展開SDK包打包壓縮存放的內容,請按照提示完成操作。
如果您需要通過WINDOWS操作係統中轉拷貝SDK包,請先運行./sdk.cleanup,收起SDK包的內容,拷貝到新的目錄後再展開。

4、在linux服務器上安裝交叉編譯器
    1)安裝uclibc交叉編譯器(注意,需要有sudo權限或者root權限):
       進入Hi3531_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100-linux目錄,運行chmod +x cross.install,然後運行./cross.install即可。
    2) 安裝glibc交叉編譯器(注意,需要有sudo權限或者root權限):
       進入Hi3531_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目錄介紹
Hi3531_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                  # 樣例源代碼


第三章、安裝、升級Hi3531DEMO板開發開發環境
    # 如果您使用的Hi3531的DEMO板,可以按照以下步驟燒寫u-boot,內核以及文件係統,以下步驟均使用網絡來更新。
    # 通常,您拿到的單板中已經有u-boot,如果沒有的話,就需要使用仿真器進行燒寫。
    # 更詳細的操作步驟及說明,請參見01.software\board\documents目錄下的《Linux開發環境用戶指南》。
    # 以下操作假設您的單板上已經有u-boot,使用網口燒寫uboot、kernel及rootfs到Flash中。
    # Demo單板默認為從SPI Flahs啟動。

1、配置tftp服務器
    # 可以使用任意的tftp服務器,將package/image_uclibc(或image_glibc)下的相關文件拷貝到tftp服務器目錄下。
   
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       |      4M       |      11M      |
        |---------------|---------------|---------------|
        |     boot      |     kernel    |     rootfs    |

        以下的操作均基於圖示的地址空間分配,您也可以根據實際情況進行調整。
    2)燒寫u-boot
        sf probe 0
        mw.b 82000000 ff 100000
        tftp 0x82000000 u-boot-hi3531_930MHz.bin
        sf probe 0
        sf erase 0 100000
        sf write 82000000 0 100000 
        reset   
    3)燒寫內核
        mw.b 82000000 ff 400000
        tftp 82000000 uImage
        sf probe 0
        sf erase 100000 400000
        sf write 82000000 100000 400000
    4)燒寫文件係統
        mw.b 82000000 ff b00000
        tftp 0x82000000 rootfs_256k.jffs2
        sf erase 500000 b00000
        sf write 82000000 500000 b00000
    5)設置啟動參數
        setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs)'
        setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
        sa

4、燒寫映像文件到NAND Flash
    以64M NAND Flash為例。
    1)地址空間說明
        |      1M       |     15M       |     32M       |         16M            |
        |---------------|---------------|---------------|------------------------|
        |     boot      |    kernel     |    rootfs     |        other           |

        以下的操作均基於圖示的地址空間分配,您也可以根據實際情況進行調整。
    2)燒寫u-boot
        mw.b 82000000 ff 100000
        tftp 82000000 u-boot-hi3531_930MHz.bin
        nand erase 0 100000
        nand write 82000000 0 100000
        reset
    3)燒寫內核
        mw.b 82000000 ff f00000
        tftp 82000000 uImage
        nand erase 100000 f00000
        nand write 82000000 100000 f00000
    4)燒寫文件係統
        mw.b 82000000 ff 2000000
        tftp 82000000 rootfs_2k_1bit.yaffs2
        nand erase 1000000 2000000
        nand write.yaffs 82000000 1000000 9435c0    #注意:9435c0為rootfs文件實際大小(16進製)
    5)設置啟動參數
 setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:1M(boot),15M(kernel),32M(rootfs),16M(test)'
        setenv bootcmd 'nand read 0x82000000 0x100000 0x500000;bootm 0x82000000'
        sa

   
5、啟動新係統
    reset # 重啟進入新係統。

第四章、開發前環境準備

1、管腳複用
    與媒體業務相關的管腳複用都在mpp/ko_hi3531目錄下的sh腳本中配置,如果與實際情況不符請直接修改,此腳本被load3531_asic調用,在加載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_hi3531目錄,加載KO
    cd mpp/ko_hi3531
    ./load3531_asic -i
   
    # 進入各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,447M:ddr1,0,0xC0000000,511M anony=1 || report_error
    表示mmz兩塊區域,區域一的名稱為anonymous,起始地址為0x84000000,大小為447M;區域二的名稱為ddr1,起始地址為0xC0000000,大小為511M。
    您可以通過修改mpp/ko_HI35XX目錄下load3531腳本中的mmz模塊參數,來修改其起始地址和總大小。
    4)請注意MMZ內存地址範圍不能與OS內存重疊。

2、DEMO板DDR內存管理示意
    1) 以容量為512MBytes的DDR0,為512MBytes的DDR1內存為例,以下為根據本文檔和SDK默認配置得到的內存管理示意圖:
   
    DDR0:                                                           DDR1:
   
    -----|-------|  0x80000000   # Memory managed by OS.            -----|-------|  0xC0000000   # Memory managed by MMZ.    
    64M  | OS    |                                                       |       |                                      
         |       |                                                       |       |                                      
    -----|-------|  0x84000000   # Memory managed by MMZ.                |       | 
    447M | MMZ   |                                                  511M | MMZ   |                                      
         |       |                                                       |       |                                      
    -----|-------|  0x9FF00000   # Not used.                        -----|-------|  0xDFF00000   # Not used.            
    1M   |       |                                                   1M  |       |                                      
         |       |                                                       |       |                                      
    -----|-------|  0xA0000000   # End of DDR.                      -----|-------|  0xE0000000   # End of DDR.          
   
    注意:
 (1)用戶在配置啟動參數時需要設置OS的管理內存為64M,“setenv bootargs 'mem=64M ...”。  
 (2)係統啟動後,配置load3531的腳本中mmz的管理內存為447M(DDR0)和511M(DDR1),“insmod mmz.ko mmz=anonymous,0,0x84000000,447M:ddr1,0,0xC0000000,511M anony=1 || report_error”。   
   
   2) 以容量為256MBytes的DDR內存為例,可以采用如下配置來節省內存使用。

    DDR0:                                                         DDR1: 
    -----|-------|  0x80000000   # Memory managed by OS.           -----|-------|  0xC0000000   # Memory managed by MMZ.
    48M  | OS    |                                                      |       |                                       
    -----|-------|  0x83000000   # Memory managed by MMZ.               |       |   
    208M | MMZ   |                                                 256M | MMZ   |                                       
         |       |                                                      |       |                                       
    -----|-------|               # End of DDR.                     -----|-------|               # End of DDR.           
   
    注意:
 (1)用戶在配置啟動參數時需要設置OS的管理內存為48M,“setenv bootargs 'mem=48M ...”。  
 (2)係統啟動後,配置load3531的腳本中mmz的管理內存為208M(DDR0)和256M(DDR1),“insmod mmz.ko mmz=anonymous,0,0x83000000,208M:ddr1,0,0xC0000000,256M anony=1 || report_error”。
   

最後更新:2017-04-03 16:48:59

  上一篇:go Oracle中常用係統表
  下一篇:go adb shell 無法啟動 (insufficient permissions for device)