海思3531D环境搭建
前面工作中,有一段时间,再做海思相关的项目,hisi3531D是一款广泛应用在音视频领域的芯片,其解码的速度和效率,被业内称赞。本文主要是讲解海思3531D在linux系统环境搭建,包括u-boot、linux内核、根文件系统以及少写,以及如何实现网络环境开发。
1.内核编译
内核源代码中除了系统运行所必须的核心代码之外,还包含了各种各样的外部设备驱动、文件系统,以及一些跟某种特性相关的代码。而这些代码,在我们的业务环境中,并不都是必须的。我们将这些不必要的内容,通过配置选项进行筛选。进入内核源代码目录,运行如下命令,打开内核配置菜单,并对菜单上的选项进行配置:
cp arch/arm/configs/hi35xx_xxx_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-hisiXXX-linux- menuconfig
编译内核时需要在 make 后添加两个参数:ARCH=arm CROSS_COMPILE=arm-hisiXXXlinux-,其中 CROSS_COMPILE 表示工具链。文档中统一以 CROSS_COMPILE=arm-hisiXXXlinux-来表示两种情况。
Hi35xx_V100R001C01SPCxxx 对应 uclibc,使用 uclibc 工具链时,CROSS_COMPILE= armhisiv5x0-linux-。
Hi35xx_V100R001C02SPCxxx 对应 glibc,使用 glibc 工具链时,CROSS_COMPILE=armhisiv6x0-linux-。
2.首次安装Hi3531D的SDK
在"Hi3531DV100_V100R001***/01.software/board"目录下,找到一个Hi3531DV100_SDK_Vx.x.x.x.tgz 的文件,该文件就是Hi3531DV100的软件开发包。使用命令:tar -zxf Hi3531D_SDK_Vx.x.x.x.tgz ,解压缩该文件,可以得到一个Hi3531D_SDK_Vx.x.x.x目录。
3.展开SDK包内容
返回Hi3531D_SDK_Vx.x.x.x目录,运行./sdk.unpack (请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
4.在linux服务器上安装交叉编译器
安装glibc交叉编译器(注意,需要有sudo权限或者root权限):获取arm-hisiv600-linux.tgz文件,使用命令:tar -zxf arm-hisiv600-linux.tgz 解压文件,进入arm-hisiv600-linux 目录,运行chmod +x arm-hisiv600-linux.install,然后运行./arm-hisiv600-linux.install 即可。执行source /etc/profile , 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆。
4.编译整个osdrv目录
下载linux-3.18.20.tar.gz (或者linux-3.18.20.tar.xz)到osdrv/opensource/kernel目录下
make OSDRV_CROSS=arm-hisiv500-linux PCI_MODE=XXX FLASH_TYPE=XXX all
清除整个osdrv目录的编译文件:make OSDRV_CROSS=arm-hisiv500-linux clean
彻底清除整个osdrv目录的编译文件,除清除编译文件外,还删除已编译好的镜像:make OSDRV_CROSS=arm-hisiv500-linux distclean
单独编译kernel:
注意:单独编译内核之前请先阅读osdrv/opensource/kernel下的readme_cn.txt说明。也可以参考步骤1
待进入内核源代码目录后,执行以下操作
cp arch/arm/configs/hi3531d_xxx_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- uImage
如果编译过程中出现错误,按顺序执行以下命令:
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- clean
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- uImage
6.编译uboot
待进入boot源代码目录后,执行以下操作
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- hi3531d_xxx_config
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux-
将生成的 u-boot.bin 复制到 osdrv/tools/pc/uboot_tools/ 目录./mkboot.sh reg_info_hi3531d.bin u-boot_hi3531d.bin。将生成可用的 u-boot_hi3531d.bin 镜像文件。
7.制作文件系统镜像
在osdrv/pub/中有已经编译好的文件系统,因此无需再重复编译文件系统,只需要根据单板上flash的规格型号制作文件系统镜像即可。SPI Nor Flash使用jffs2格式的镜像,制作jffs2镜像时,需要用到SPI NorFlash的块大小。这些信息会在uboot启动时会打印出来。建议使用时先直接运行mkfs.jffs2工具,根据打印信息填写相关参数。下面以块大小为64KB为例:
osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 -o osdrv/pub/rootfs_uclibc_64k.jffs2
Nand Flash和SPI Nand Flash使用yaffs2格式的镜像,制作yaffs2镜像时,需要用到Nand Flash的pagesize和ecc。这些信息会在uboot启动时会打印出来。建议使用时先直接运行mkyaffs2image工具,根据打印信息填写相关参数。示例:
2KB pagesize、4bit ecc命令格式为:如果制作Nand的镜像,则使用mkyaffs2image610工具:
osdrv/pub/bin/pc/mkyaffs2image610 osdrv/pub/rootfs_uclibc osdrv/pub/rootfs_uclibc_2k_4bit.yaffs2 1 2
如果制作SPI Nand的镜像,则使用mkyaffs2image100工具:
osdrv/pub/bin/pc/mkyaffs2image100 osdrv/pub/rootfs_uclibc osdrv/pub/rootfs_uclibc_2k_4bit.yaffs2 1 2
或者
osdrv/pub/bin/pc/mkyaffs2image100 osdrv/pub/rootfs_gclibc osdrv/pub/rootfs_uclibc_2k_4bit.yaffs2 1 2
说明:
当FLASH_TYPE=spi时,生成的mkyaffs2image工具是mkyaffs2image100;
当FLASH_TYPE=nand时,生成的mkyaffs2image工具是mkyaffs2image610;
Nand Flash使用UBI文件系统,在osdrv/tools/pc/ubi_sh下提供mkubiimg.sh工具用于制作UBI文件系统,需要用到Nand
Flash的pagesize、blocksize和UBIFS分区的大小。
以2KB pagesize, 128KB blocksize和UBI文件系统分区大小32MB为例:
mkubiimg.sh hi3531d 2k 128k osdrv/pub/rootfs 32M osdrv/pub/bin/pc
osdrv/pub/rootfs是根文件系统文件夹目录
osdrv/pub/bin/pc是制作UBI文件系统镜像的工具目录
生成的rootfs_hi3531d_2k_128k_32M.ubifs,就是最终用于烧写的UBI文件系统镜像。
5.安装、升级DEMO板开发环境
Hi3531DV100的DEMO板,可以按照以下操作烧写uboot、内核以及文件系统,以下操作均使用网络来更新:
1、如果您拿到的单板没有uboot的话,就需要使用01.software/pc/HiTool进行烧写。更详细的烧写操作步骤及说明,请参见01.software\pc\HiTool目录下的《HiBurn 工具使用指南》。
2、如果您拿到的单板中已经有uboot,可以按照以下步骤使用网口烧写uboot、kernel及rootfs到Flash中。DEMO板默认为从SPI Flash启动。
6.配置tftp服务器
可以使用任意的tftp服务器,将package/image_glibc下的相关文件拷贝到tftp服务器目录下。
7.参数配置
# 单板上电后,敲任意键进入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,确保网络畅通。
8.烧写镜像文件到SPI Nor Flash
以16M SPI Nor Flash为例。
1)地址空间说明
| 1M | 4M | 11M |
|---------------|---------------|---------------|
| boot | kernel | rootfs |
2)烧写u-boot
sf probe 0
mw.b 42000000 ff 100000
tftp 42000000 u-boot-hi3531d.bin
sf probe 0
sf erase 0 100000
sf write 42000000 0 100000
reset
3)烧写内核
mw.b 42000000 ff 400000
tftp 42000000 uImage_hi3531d
sf probe 0
sf erase 100000 400000
sf write 42000000 100000 400000
4)烧写文件系统
mw.b 42000000 ff b00000
tftp 42000000 rootfs_hi3531d_64k.jffs2
sf probe 0
sf erase 500000 b00000
sf write 42000000 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 0x42000000 0x100000 0x400000;bootm 0x42000000'
sa
9.如果是NAND Flash则使用如下方法
以64M NAND Flash为例。
1)地址空间说明
| 1M | 4M | 32M | 27M |
|---------------|---------------|---------------|------------------------|
| boot | kernel | rootfs | other |
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
2)烧写u-boot
mw.b 42000000 ff 100000
tftp 42000000 u-boot-hi3531d.bin
nand erase 0 100000
nand write 42000000 0 100000
reset
3)烧写内核
mw.b 42000000 ff 400000
tftp 42000000 uImage_hi3531d
nand erase 100000 400000
nand write 42000000 100000 400000
4)烧写文件系统
mw.b 42000000 ff 2000000
tftp 42000000 rootfs_hi3531d_2k_4bit.yaffs2
nand erase 500000 2000000
nand write.yaffs 42000000 500000 96d200 #注意:96d200为rootfs文件实际大小(16进制)
5)设置启动参数
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:1M(boot),4M(kernel),32M(rootfs),27M(test)'
setenv bootcmd 'nand read 0x42000000 0x100000 0x400000;bootm 0x42000000'
sa
10.启动新系统
reset
11.开启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一下其他机器,如无意外,网络将能正常工作。
12.使用NFS文件系统进行开发
# 在开发阶段,推荐使用NFS作为开发环境,可以省去重新制作和烧写根文件系统的工作。挂载NFS文件系统的操作命令:
mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 192.168.129.70:/home/qin/nfs /mnt
备注:
关于nfs配置参考博客https://blog.csdn.net/s030702614/article/details/4662718
13.进入解码目录测试
sample_vdec测试
支持H264、H265、VDH MP4、JPEG PIP
具有暂停、播放、单帧播放、”a”表示增加码率、d表示”减小”码率;“q”表示具有查询功能、查询解码的帧数等;
H264和H265,MP4表示都是支持1920X1080。JPEG deconding表示有3通道,解码三路图片,参数如下:
显示视频也需要有3路输入,3通道,3路输出。解码也支持PIP,表示画中画,hisi提供的是一共三个图层,一张大图,一张缩放图,缩放图里再叠加一张小图。编码通道需要开启输入才能去编码;否则会有如下的打印信息;
Region可以支持如下的这些功能:
支持画线和图形叠加;
海思芯片不止手机芯片 涉及多个领域
【海思芯片不止手机芯片】根据微博博主,长安数码君,进行整理。海思除了手机外还有许多芯片供各类产品使用,下面是安防和显示领域中目前可供透露的名单。
华为海思半导体(Hisilicon) 监控设备 Hi3559AV100 高端行业IP摄像头Soc华为海思半导体(Hisilicon) 监控设备 Hi3519AV100 先进的智能IP摄像头Soc华为海思半导体(Hisilicon) 监控设备 Hi3516CV500 主流2M智能IP摄像头SoC华为海思半导体(Hisilicon) 监控设备 Hi3516DV300 专业4M智能IP摄像SoC华为海思半导体(Hisilicon) 监控设备 Hi3519V101 先进的工业IP摄像头Soc华为海思半导体(Hisilicon) 监控设备 Hi3516AV200 主流行业IP摄像头Soc华为海思半导体(Hisilicon) 监控设备 Hi3516AV100 主流行业IP摄像头Soc华为海思半导体(Hisilicon) 监控设备 Hi3516DV100 先进的全高清IP摄像头Soc华为海思半导体(Hisilicon) 监控设备 Hi3516CV300 主流全高清IP摄像头Soc华为海思半导体(Hisilicon) 监控设备 Hi3516CV100/200 主流全高清IP摄像头SoC华为海思半导体(Hisilicon) 监控设备 Hi3516EV100 主流全高清IP摄像头SoC华为海思半导体(Hisilicon) 监控设备 Hi3518EV200/201 主流的超大高清IP相机SoC华为海思半导体(Hisilicon) 监控设备 Hi3536V100 多功能16通道全高清NVR SoC华为海思半导体(Hisilicon) 监控设备 Hi3536CV100 多功能8/16通道全高清NVR SoC华为海思半导体(Hisilicon) 监控设备 Hi3536DV100 入门级4通道全高清NVR SoC华为海思半导体(Hisilicon) 监控设备 Hi3535V100 主流4通道全高清NVR SoC华为海思半导体(Hisilicon) 监控设备 Hi3531DV100 主流8通道全高清H.265 DVR SoC华为海思半导体(Hisilicon) 监控设备 Hi3521DV100 主流4频道全高清H.265 DVR SoC华为海思半导体(Hisilicon) 监控设备 Hi3520DV400 主流4频道超大高清H.265 DVR SoC华为海思半导体(Hisilicon) 监控设备 Hi3531AV100 主流8通道全高清DVR SoC华为海思半导体(Hisilicon) 监控设备 Hi3521AV100 主流4通道全高清DVR SoC华为海思半导体(Hisilicon) 监控设备 Hi3520DV300 主流4频道超大高清DVR SoC华为海思半导体(Hisilicon) 监控设备 Hi3520DV200 入门级4通道超大高清DVR SoC华为海思半导体(Hisilicon) MobileCam Hi3559AV100 4KP60/4KP120或8KP30高端移动相机解决方案华为海思半导体(Hisilicon) MobileCam Hi3559CV100 高端4K120/8K30移动摄像头解决方案华为海思半导体(Hisilicon) MobileCam Hi3559V100 2KP60/4KP30主流移动相机解决方案华为海思半导体(Hisilicon) MobileCam Hi3556V100 1080P60/2KP30入门级移动相机解决方案华为海思半导体(Hisilicon) MobileCam Hi3516EV100 1080P30入门级移动摄像头解决方案Hi3798CV200 高端混合超高清芯片组华为海思半导体(Hisilicon) 机顶盒 Hi3796MV200 条目/中层UHD芯片组[hide]华为海思半导体(Hisilicon) 机顶盒 Hi3798MV200 条目/中层UHD芯片组华为海思半导体(Hisilicon) 机顶盒 Hi3796MV100 入门级4 kp30芯片组华为海思半导体(Hisilicon) 机顶盒 Hi3798MV100 入门级4 kp30芯片组华为海思半导体(Hisilicon) 机顶盒 Hi3716MV420 HEVC FHD PVR芯片组华为海思半导体(Hisilicon) 机顶盒 Hi3716MV410 HEVC Zapper FHD芯片组华为海思半导体(Hisilicon) 机顶盒 Hi3716MV310 入门级FHD连接芯片组华为海思半导体(Hisilicon) 机顶盒 Hi3716MV330 性价比最高的FHD芯片组华为海思半导体(Hisilicon) 机顶盒 Hi3130V100 DVB-C解调器芯片华为海思半导体(Hisilicon) 机顶盒 Hi3137V100 DVB-T2/DVB-T调解器芯片华为海思半导体(Hisilicon) 机顶盒 Hi3136V100 DVB-S2 - DVB-S调解器芯片华为海思半导体(Hisilicon) 机顶盒 Hi3798MV300 条目/中层UHD芯片组华为海思半导体(Hisilicon) 显示器 Hi3751V811 8K智能电视解决方案华为海思半导体(Hisilicon) 显示器 HI3751V810 4K高端智能电视解决方案华为海思半导体(Hisilicon) 显示器 Hi3751V551 4K入门级智能电视解决方案华为海思半导体(Hisilicon) 显示器 Hi3751V730 全球领先的4K高端智能电视解决方案(支持ATSC、ISDB-T、DVB-C/T)华为海思半导体(Hisilicon) 显示器 Hi3751V620 支持杜比视觉的4K高端智能电视解决方案华为海思半导体(Hisilicon) 显示器 Hi3751V510 4K入门级智能电视解决方案华为海思半导体(Hisilicon) 显示器 Hi3751V310 FHD中档4K智能电视解决方案华为海思半导体(Hisilicon) 显示器 Hi3751V320 FHD中档4K智能电视解决方案华为海思半导体(Hisilicon) 显示器 Hi3751V600 支持杜比视觉的4K中档智能电视解决方案华为海思半导体(Hisilicon) 显示器 Hi3251V600 4K2K 120Hz MEMC协处理器华为海思半导体(Hisilicon) 显示器 Hi3231V510 4K TCON+4K2K 60HZ MEMC华为海思半导体(Hisilicon) 家庭网络 Hi5630HV110 iconG.hn SoC华为海思半导体(Hisilicon) 家庭网络 Hi5630SV110 iconG.hn SoC华为海思半导体(Hisilicon) 物联网 Hi2110 Cat-NB1解决方案,低功耗,易物联网设备应用开发华为海思半导体(Hisilicon) 物联网 Hi2115 catb - nb2解决方案,低功耗,易物联网设备应用开发华为海思半导体(Hisilicon) 物联网 Hi3911 宽带电力线通信芯片华为海思半导体(Hisilicon) Ascend Ascend 310(昇腾310) 全球首款全栈全场景AI芯片华为海思半导体(Hisilicon) Ascend Ascend 910(昇腾910) 全球首款全栈全场景AI芯片华为海思半导体(Hisilicon) 鲲鹏(Kunpeng) Huawei 鲲鹏920 台式电脑CPU领域…………
相关问答
hi3531 d芯片参数?智能视频分析:集成智能分析加速引擎,支持智能运动侦测、周界防范、视频诊断等多种智能分析应用,支持多种视频接口和集成丰富的外围接口,SDK:提供基于Linu...