第一章 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. 20165326 java第一周学习笔记

    第一周学习笔记 一.理论视频学习 1.Java的特点:简单.面向对象.平台无关 2.Java的开发步骤&简单的应用程序: 文本编辑器写入代码 命名类名.java,文件类型所有文件,编码ANSI ...

  2. nginx——优化 Nginx worker 进程数

    Nginx 有 Master 和 worker 两种进程,Master 进程用于管理 worker 进程,worker 进程用于 Nginx 服务 worker 进程数应该设置为等于 CPU 的核数, ...

  3. shell日常实战防dos攻击

    根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟.防火墙命令为:iptables -I INPUT -s 10.0 ...

  4. 解决Cannot resolve reference to bean 'txPointcut' while setting bean property 'pointcut'

    忘记导入了 这三个jar包...

  5. Example of Abstract Class

    The Vehicle class has abstract members that must be implemented by the Car class or any other class ...

  6. Python 静态方法

    class Person: @staticmethod # 静态方法 def yue(): print("fsadf") # 静态方法可以使用对象访问. 也可以使用类名访问. 但是 ...

  7. 正则表达式的lastIndex属性

    js中正则表达式的使用方式有两种,一种是正则表达式对象的方法,一种是字符串对象的方法,前者有exec(str).test(str)两个方法,后者有match(regexp).replace(regex ...

  8. Quartz 原理

    Quartz API :http://www.quartz-scheduler.org/api/2.2.0/ http://www.boyunjian.com/javadoc/org.apache.s ...

  9. java的异常抛出和String类常用方法

    一.异常抛出 异常是程序的异种非错误的意外情况,分为运行期异常(RuntimeException)和编译期异常(CheckedExcption) 处理异常可以用try——catch或自定义 impor ...

  10. lvm创建和快照

    查看磁盘 创建分区 新建1G的1分区 新建1G的2分区 新建1G的3分区 查看新建的分区 因标准分区是83交换分区是82做lv是8e所以要改变类型 查看: 保存退出: 创建物理卷pv 将物理卷pv创建 ...