Hi3511 VSSSDK 安装以及升级使用说明

首次安装SDK  (注意红帽子和Ubuntu的脚本不一样 ,我在这个上面吃了点苦头,要看清楚,不然编译会出错,红帽子:#!/bin/sh   Ubunt : #!/bin/bash)


1、Hi3511 SDK包位置
在"Hi3511 DMS V100R001C01B123/soft/Hi3511_VSSDK_V1.1.2.3"目录下,您可以看到
一个 Hi3511_VSSDK_V1.1.2.3.tgz 的文件,该文件就是SDK的Hi3511的软件开发包。


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


3、在linux服务器上安装交叉编译器
1) 进入tools/toolchains,运行chmod +x cross.install,然后运行./cross.install即可,注意,需要有sudo权限或者root权限
2)执行vim /etc/profile 
添加export PATH="/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin:$PATH"


3) 执行 source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。


4、展开SDK包的其他内容(注意!这一步不可以省略)
返回SDK目录,运行./sdk.unpack将会展开SDK包打包压缩存放的其他内容,请按照提示完成操作。这步操作可能需要几分钟。
如果您需要通过WINDOWS中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。


5、SDK目录介绍
Hi3511_VSSSDK_VX.X.X.X 目录结构如下:
|-- pub
|   |-- images # 可供FLASH烧写的映像文件,如内核、jffs2文件系统
|   |-- include # 应用程序需要的头文件
|   |-- kbuild # 内核头文件,内核模块使用该目录来进行编译
|   |-- lib # 应用程序需要的库文件
|   |-- resource # 构成rootfs的各种组件,一般不需要关心
|   |-- standee # 各模块的原始安装文件,如需要mmz.ko就可以在这里找到,同时也包含组件所需的调试信息
|   `-- tarball # SDK各模块的打包备份文件
|-- rootfs # 根文件系统,可以直接作为NFS
|-- scripts # 存放相关脚本的目录
|-- sdk.cleanup # SDK清理脚本
|-- sdk.unpack # SDK展开脚本
|-- source # 放置所有源代码的目录
|   |-- app # 应用程序类源代码
|   |-- drv # 驱动类源代码
|   |-- lib # Lib类源代码
|   `-- os # OS相关源代码,如内核
|-- tools # 工具类
|    |-- bin # 可执行程序,如mkfs.cramfs
|    `-- toolchains # 交叉工具链,展开SDK时已自动安装
|
        `---mpp                 # Hi3511的媒体处理平台发布的头文件、库以及内核模块
             |-- lib.rel        # 音频库,MPP发布的release版本库,音频库
             |-- lib.dbg        # MPP发布的debug版本库,音频库 
             |-- lib.lessrel    # MPP发布的less release版本库,音频库 
             |-- ko.rel         # MPP发布的发布的release内核模块,包括FB,TDE 
             |-- ko.dbg         # MPP发布的发布的debug内核模块,包括FB,TDE 
             |-- ko.lessrel     # MPP发布的发布的less release内核模块,包括FB,TDE 
             |-- include        # MPP发布的发布的对外头文件,包括FB,TDE
             `-- sample         # MPP的sample代码,进入各个子目录,可以直接编译运行。


第三章、安装、升级Hi3511DEMO板开发开发环境
如果您使用的Hi3511的DEMO板,可以按照一下步骤安装u-boot,内核以及文件系统,以下步骤均使用网络来更新。
通常,您拿到的单板中已经有u-boot,如果没有的话,就需要使用仿真器进行烧写。
具体操作步骤,请参见 DMS\software\Doc下的《Hi3511 Linux 开发环境用户指南》和 DMS\application notes\下的《Hi3511 U-boot移植应用 Application Notes》。
以下操作假设您的单板已经有了u-boot。


1、配置tftp服务器
可以使用任意的tftp服务器,将 pub/images下的文件拷贝到tftp服务器的目录下。

2、更新u-boot的环境变量
单板上电后,敲任意键,进入u-boot。先设置好serverip(即tftp服务器的ip)、ipaddr(单板ip)和ethaddr(单板的MAC地址)。
具体的使用方法请参见《Hi3511 Linux 开发环境用户指南》。

3、更新单板u-boot,
如果不需要更新u-boot,请直接到下节。
protect off 0x34000000 +0x20000
erase 0x34000000 +0x20000
tftp 0x34000000 u-boot-hi3511v100Dmeb_144MHZ.bin


注意:
新的boot波特率默认为115200,因此重启单板之前请设置串口波特率为115200。
新的boot在启动时对所有内存进行了清零操作,这在开发过程中有助于发现某些BUG,但导致单板复位后需要过几秒钟才出现打印信息,请稍微给点耐心等待一下。


6、更新内核
如果不需要更新内核,请直接到下节。
erase 0x34100000 +0x100000
tftp 0x34100000 kernel-hi3511v100dmeb_full_release.img


7、更新文件系统
erase 0x34100000 +0x100000
erase 0x34200000 +0x1000000
tftp 0x34100000 kernel-hi3511v100dmeb_full_debug.img 
tftp 0x34200000 rootfs-FULL_DBG-Flash.jffs2


8、启动新系统
在u-boot下设置启动参数:(为操作系统分配32MB的内存,并使用jffs2的文件系统,文件系统的大小为14MB)
setenv bootcmd 'bootm 0x34100000'
setenv bootargs 'mem=32M console=ttyAMA0,115200 root=1f01 rootfstype=jffs2 mtdparts=phys_mapped_flash:2M(boot),14M(rootfs)'
saveenv
然后重启单板即可,第一次进入系统时,挂载文件系统的速度可能比较慢,请耐心等待。


9、使用新系统
切记,不可随意在Linux下复位单板或断电,因为这样可能会损坏文件系统,导致文件丢失、损坏以致系统无法启动!
每次重启单板请使用reboot;同理,单板断电时请先运行halt,待到挂死后再断电,这样可以有效地保护FLASH文件系统,也可以避免不必要的麻烦。


第四章、使用SDK和DEMO板进行开发
1、分配和使用保留内存
DEMO板上的内存大小为256MB,对应物理地址从0xE0000000 到 0xEFFFFFFF。 通常,需要为操作系统留32MB的空间,例如在第三章第8步中配置。
SDK中提供了一个专门管理保留操作系统以外内存的内核模块mmz,可以指定该模块管理的内存地址空间。例如
modprobe mmz mmz=ddr,0,0xE2000000,64M
mmz管理的内存起始地址为 0xE2000000,大小为64MB。从0xE0000000到0xE2000000的32MB空间是留给操作系统的。


2、开启Linux下的网络
执行命令加载网络驱动:
modprobe libphy;
modprobe hiether rv_strat=2 rv_qcnt=512 hwq_recv=32 hwq_xmit=32 flimit=256;


# 设置网关
ifconfig eth0 hw ether 00:10:85:xx:xx:xx;ifconfig eth0 192.168.0.15 netmask 255.255.254.0;route add default gw 192.168.0.1
然后ping一下其他机器,如无意外,网络将能正常工作。
可以将以上命令写到脚本里面,每次启动时运行一下即可。

如果收包性能不足,目前确认通过增加协议栈缓存即可,可以按如下操作来调整收包缓存默认值和最大值
echo "512000" > /proc/sys/net/core/rmem_default  //500KB默认缓存
echo "1024000" > /proc/sys/net/core/rmem_max     //1000KB最大缓存

在内存紧张的情况下,如果再进行繁重的网络访问,有可能会报出缺页异常。此时通过限制系统将内存用于文件系统cache的数值,
可以提高网络突发情况下的处理能力。可以使用下面的命令将min_free_kbytes设置为2MB可用提高网络突发情况下的可用内存数量
    echo 2000 > /proc/sys/vm/min_free_kbytes
    
3、使用NFS
在开发阶段,推荐使用NFS作为开发环境。您开发的代码都可以放在NFS服务器上,通过NFS可以直接在DEMO板上访问到NFS服务器。
执行命令加载NFS驱动:
modprobe nfs
然后挂载NFS文件系统:
mount -t nfs -o nolock 10.85.xxx.xxx:/your-nfs-path /mnt
然后就可以在/mnt目录下看到你服务器上的文件了,当然,如果你挂载的NFS目录就是SDK下面的rootfs,那么你可以:
chroot /mnt
然后就可以在新的根目录下工作了。


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


5、使用硬盘FAT32
执行命令加载FAT驱动:
modprobe fat
modprobe vfat
modprobe nls_iso8859-1
modprobe nls_cp437
modprobe nls_utf8
modprobe as-iosched //增加IO调度算法,还有loop、cfq_iosched、deadline-iosched选择
echo "anticipatory" > /sys/block/<devicename>/queue/scheduler //使能as-iosched算法,<devicename>是在/dev/<devicename>,如hda


然后挂载FAT32文件系统:
mount -t vfat /dev/xx/../xx/hdaX /mnt
然后就可以在/mnt目录下看到文件了


当然,你也可以把以上操作都放到脚本里面,并让它在linux启动的时候自动执行。

你可能感兴趣的:(Hi3511 VSSSDK 安装以及升级使用说明)