第一章 Hi3536DV100_SDK_Vx.x.x.x版本升级操作说明

如果您是首次安装本SDK,请直接参看第2章。

第二章 首次安装SDK
1、Hi3536DV100 SDK包位置
在"Hi3536D V100R001C0xSPC0xx/01.software/board"目录下,您可以看到一个 Hi3536DV100_SDK_Vx.x.x.x.tgz 的文件,
该文件就是Hi3536DV100的软件开发包。

2、解压缩SDK包
在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3536DV100_SDK_Vx.x.x.x.tgz ,
解压缩该文件,可以得到一个Hi3536DV100_SDK_Vx.x.x.x目录。

3、展开SDK包内容
返回Hi3536DV100_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。
如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。

4、在linux服务器上安装交叉编译器
1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):
获取arm-hisiv510-linux.tgz文件,使用命令:tar -zxf arm-hisiv510-linux.tgz解压文件,进入arm-hisiv510-linux目录,
运行chmod +x arm-hisiv510-linux.install,然后运行./arm-hisiv510-linux.install即可。
2) 安装glibc交叉编译器(注意,需要有sudo权限或者root权限):
获取arm-hisiv610-linux.tgz文件,使用命令:tar -zxf arm-hisiv610-linux.tgz解压文件,进入arm-hisiv610-linux目录,
运行chmod +x arm-hisiv610-linux.install,然后运行./arm-hisiv610-linux.install即可。
3) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。

5、编译osdrv
参见osdrv目录下readme

6、目录结构介绍
|--Hi3536D V100R001C0xSPC0xx_SDK.rar
| |--01.software
| |--board
| |--Hi3536DV100_SDK_Vx.x.x.x
| |-- sdk.cleanup # SDK清理脚本
| |-- sdk.unpack # SDK展开脚本
| |-- osdrv # 存放操作系统及相关驱动的目录
| | |-- opensource # opensource源代码
| | | |-- busybox # busybox源代码
| | | |-- kernel # linux内核补丁文件
| | | |-- uboot # uboot源代码
| | |-- pub # 编译好的镜像、工具、drv驱动等
| | |-- tools # linux工具源代码
| | |-- readme_cn.txt # osdrv使用说明(中文版)
| | |-- readme_en.txt # osdrv使用说明(英文版)
| | |-- ...... #
| | `-- Makefile # osdrv Makefile
| |-- package # 存放SDK各种压缩包的目录
| | |-- osdrv.tgz # linux内核/uboot/rootfs/tools源码压缩包
| | |-- mpp.tgz # 媒体处理平台软件压缩包
| | |-- drv.tgz # drv压缩包
| | |-- osal.tgz # osal压缩包
| | |-- rootfs_*.tgz # rootfs压缩包
| | |-- image * # 可供FLASH烧写的映像文件,如内核、根文件系统
| |-- scripts # 存放shell脚本的目录
| |-- drv # drv目录
| |-- osal # osal目录
| | |-- include # 存放操作系统适配层的头文件的目录
| | |-- source # 存放操作系统适配层的源文件的目录
| |-- mpp # 存放媒体处理平台的目录
| |-- component # 组件源代码
| |-- extdrv # 板级外围驱动源代码
| |-- include # 对外头文件
| |-- ko # 内核模块
| |-- lib # release版本库以及音频库
| |-- linux.param # linux相关的全局编译选项
| |-- Makefile.param # mpp一些全局编译选项
| |-- tools # 媒体处理相关工具
| `-- sample # 样例源代码
|
|--arm-hisiv510-linux.tgz # uclibc交叉编译器压缩包
|--arm-hisiv610-linux.tgz # glibc交叉编译器压缩包

第三章、安装、升级Hi3536DV100DEMO板开发环境
如果您使用的Hi3536DV100的DEMO板,可以按照以下操作烧写uboot、内核以及文件系统,以下操作均使用网络来更新:
1、如果您拿到的单板没有uboot的话,就需要使用01.software/pc/HiTool进行烧写。更详细的烧写操作步骤及说明,请参见01.software\pc\HiTool目录下的《HiBurn 工具使用指南》。
2、如果您拿到的单板中已经有uboot,可以按照以下步骤使用网口烧写uboot、kernel及rootfs到Flash中。DEMO板默认为从SPI Flash启动。

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 Nor Flash
以16M SPI Nor Flash为例。
1)地址空间说明
| 1M | 4M | 11M |
|---------------|---------------|---------------|
| boot | kernel | rootfs |

以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
2)烧写u-boot
sf probe 0
mw.b 82000000 ff 100000
tftp 82000000 u-boot-hi3536dv100.bin
sf probe 0
sf erase 0 100000
sf write 82000000 0 100000
reset
3)烧写内核
mw.b 82000000 ff 400000
tftp 82000000 uImage_hi3536dv100
sf probe 0
sf erase 100000 400000
sf write 82000000 100000 400000
4)烧写文件系统
mw.b 82000000 ff b00000
tftp 82000000 rootfs_hi3536dv100_64k.jffs2
sf probe 0
sf erase 500000 b00000
sf write 82000000 500000 b00000
5)设置启动参数
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
sa

4、烧写映像文件到SPI NAND Flash
注意:以64M SPI NAND Flash为例。
1)地址空间说明
| 1M | 4M | 32M | 27M |
|---------------|---------------|---------------|------------------------|
| boot | kernel | rootfs | other |

以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
2)烧写u-boot
mw.b 82000000 ff 100000
tftp 82000000 u-boot-hi3536dv100.bin
nand erase 0 100000
nand write 82000000 0 100000
reset
3)烧写内核
mw.b 82000000 ff 400000
tftp 82000000 uImage_hi3536dv100
nand erase 100000 400000
nand write 82000000 100000 400000
4)烧写文件系统
(1) 使用yaffs2文件系统:
mw.b 82000000 ff 2000000
tftp 82000000 rootfs_hi3536dv100_2k_4bit.yaffs2
nand erase 500000 2000000
nand write.yaffs 82000000 500000 163E900 #注意:163E900 为rootfs文件实际大小(16进制)

(2) 使用ubi文件系统:
mw.b 82000000 ff 2000000
tftp 82000000 rootfs_hi3536dv100_2K_128K_32M.ubifs
nand erase 500000 2000000
nand write 82000000 500000 2000000

5)设置启动参数
(1) 使用yaffs2文件系统:
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 rw mtdparts=hinand:1M(boot),4M(kernel),32M(rootfs),27M(other)'
setenv bootcmd 'nand read 0x82000000 0x100000 0x400000;bootm 0x82000000'
sa

(2) 使用ubi文件系统:
setenv bootargs 'mem=64M console=ttyAMA0,115200 ubi.mtd=2 root=ubi0:ubifs rootfstype=ubifs rw mtdparts=hinand:1M(boot),4M(kernel),32M(ubi),27M(other)'
setenv bootcmd 'nand read 0x82000000 0x100000 0x400000;bootm 0x82000000'
sa

5、启动新系统
reset # 重启进入新系统。

第四章、开发前环境准备

1、管脚复用
与媒体业务相关的管脚复用、DDR优先级配置等在drv/sys_config开源驱动中配置(使用linux DTS进行管理),如果与实际情况不符可直接修改,sys_config.ko驱动被load3536dv100调用,在加载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 -o rsize=32768,wsize=32768 xx.xx.xx.xx:/your-nfs-path /mnt
# 然后就可以在/mnt目录下访问服务器上的文件,并进行开发工作。

3、开启telnet服务
# 网络正常后,运行命令 telnetd& 就可以启动单板telnet服务,然后才能使用telnet登录到单板。

4、运行MPP业务
# 在单板linux系统下,进入mpp/ko目录,加载ko
cd mpp/ko
./load3536dv100 -a -osmem 64

# 进入各sample目录下执行相应样例程序(sample需要先在服务器上成功编译过)
cd mpp/sample/vdec
./sample_vdec

第六章 地址空间分配与使用
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模块时,通过模块参数指定其起始地址及大小,load脚本中根据osmem大小来进行计算,例如:
./load3536dv100 -a -osmem 64

您也可以通过修改mpp/ko目录下load3536dv100脚本中的mmz模块参数,来修改其起始地址和总大小。
4)请注意MMZ内存地址范围不能与OS内存重叠。

2、DEMO板DDR内存管理示意
以容量为512MBytes的DDR内存为例,以下为根据本文档和SDK默认配置得到的内存管理示意图:

DDR:

-----|-------| 0x80000000 # Memory managed by OS.
64M | OS |
| |
-----|-------| 0x84000000 # Memory managed by MMZ block anonymous.
442M | MMZ |
| |
-----|-------| 0x9FA00000 # Memory managed by MMZ block jpeg.
6M | jpeg |
| |
-----|-------| 0xA0000000 # End of memory managed by MMZ.

注意:
(1)用户在配置启动参数时需要设置OS的管理内存为64M,“setenv bootargs 'mem=64M ...”。
(2)系统启动后,配置load3536dv100脚本中指定总内存为512(mem_total=512),加载时指定osmem为64(-osmem 64),则MMZ管理的内存为448M。
(3)如果有特殊应用,可以自行修改load3536dv100脚本,进行mmz区域划分,如“insmod hi_osal.ko mmz=anonymous,0,0x84000000,442M:jpeg,0,0x9FA00000,6M anony=1”。

Hi3536DV100 SDK 安装以及升级使用说明的更多相关文章

  1. Hi3531 SDK 安装以及升级使用说明

    Hi3531 SDK 安装以及升级使用说明 第一章 Hi3531_SDK_Vx.x.x.x版本升级操作说明    如果您是首次安装本SDK,请直接参看第2章.     第二章 首次安装SDK 1.Hi ...

  2. Hi3519v101 SDK安装及升级

    安装SDK 1.解压tgz压缩包 将 Hi3519V101_SDK_Vx.x.x.x.tgz 压缩包放入共享文件夹中,并解压到Linux内部如 /sdk 目录下,因为在共享目录中编译容易出现各种错误. ...

  3. 解决MyEclipse中安装或升级ADT之后SDK Target无法显示的问题

        故障现象,在MyEclipse里面安装完最新的android sdk和ADT之后,无法新建项目,Build Target为空,显示一直在loading.即如下面图里面显示的,Target Na ...

  4. hive的安装和升级

    目录 [toc] 安装 升级 安装 nohup hive –service hiveserver & 启动: sudo nohup ./hive --service metastore &am ...

  5. uiautomator 安装和升级

    1.打开uiautomator sdk安装路径 < tools < uiautomatorviewer.bat # 双击点开 2.升级uiautomator包 1.uiautomatorv ...

  6. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  7. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 3.安装Clus ...

  8. Database first with EntityFramework (Migration)安装和升级

    最近看了国外几个项目,发现用EntityFramework做Code First的项目现在很流行. 最让我有兴趣的一个功能则是,EntityFramework对于数据库的安装和升级的无缝完美支持,且很 ...

  9. Oracle10G无图形安装及升级

    Oracle10.2.0.1静默安装及升级到10.2.0.4 下载及解压好database和Disk1 环境配置: su - oracle vim ~/.bash_profile 保存. vim /d ...

随机推荐

  1. Windows下安装Tensorflow报错 “DLL load failed:找不到指定的模块"

    Windows下安装完tensorflow后,在cmd下运行python后import tensorflow出现如下错误: Traceback (most recent call last):  Fi ...

  2. socket-重叠模型(overlap)

    socket-重叠模型(overlap) 重叠模型的基本设计原理便是让应用程序使用一个重叠的数据结构,一次投递一个或多个Winsock I/O请求.针对那些提交的请求,在它们完成之后,应用程序可为它们 ...

  3. L308 New brain cells made throughout life

    People keep making new brain cells throughout their lives (well at least until the age of 97), accor ...

  4. ios初识UITableView及简单用法二(模型数据)

    // // ViewController.m // ZQRTableViewTest // // Created by zzqqrr on 17/8/24. // Copyright (c) 2017 ...

  5. 用MFC库函数AfxBeginThread()来创建线程

    在进行多线程程序设计的时候,我们经常用到AfxBeginThread函数来启动一条线程该函数使用起来非常的简单方便,其定义如下: 1.函数原型 CWinThread* AfxBeginThread( ...

  6. myql update from 语句

    (6)UPDATE 语句与 SELECT 语句中的 TOP 子句一起使用对来自表 authors 的前十个作者的 state 列进行更新 UPDATE authors SET state = 'ZZ' ...

  7. 利用Hackrf One进行GPS定位欺骗制作超级跑马机

    0×00 驾校的困惑 现行规定要求每个学员都必须在驾校练习够规定的学时,才能参加考试,在每台教练车上都安装有计时计程终端,学员刷卡刷指纹后开始累计里程.但是目前中国的很多驾校,存在车少人多的情况,假设 ...

  8. datatables 多一列报错Cannot read property 'sWidth' of undefined(…)/少一列报错Cannot read property 'style' of undefined(…)

    datatables 多一列报错Cannot read property 'sWidth' of undefined(…)/少一列报错Cannot read property 'style' of u ...

  9. [转]lua数据结构--闭包

    前面几篇文章已经说明了Lua里面很常用的几个数据结构,这次要分享的也是常用的数据结构之一 – 函数的结构.函数在Lua里也是一种变量,但是它却很特殊,能存储执行语句和被执行,本章主要描述Lua是怎么实 ...

  10. 有两艘船需要装运的n箱货物,第一艘船的载重量是c1,第二艘船的载重量是c2,wi是货箱i的重量,且w1+w2+……+wn<=c1+c2

    (1) 问题描述:        有两艘船和需要装运的n个货箱,第一艘船的载重量是c1,第二艘船的载重量是c2,wi是货箱的质量,且w1+w2+...+wn <= c1+c2. 希望确定是否有一 ...