热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

海思ffmpeg_海思Camera|Hi3518EV300环境搭建(LiteOS)

点击蓝字关注我们Hi3518EV300作为新一代消费类CameraSOC,集成新一代ISP以及业界最新的H265视频压缩编码器,在低码率、高画质等方面领
6ca4eb3ffc0a374bf587202b5348ac5f.gif

击蓝字关注我们

Hi3518EV300 作为新一代消费类 Camera SOC,集成新一代 ISP 以及业界最新的 H265 视频压缩编码器,在低码率、高画质等方面领先业界。集成 POR、RTC、Audio Codec,为客户极大降低 ebom 成本。

本文主要是介绍在第一次拿到 Hi3518EV300 这颗 SOC 时需要做的准备活动,以及如何搭建环境,烧写镜像,配置虚拟网口等基本操作,由于 Hi3518EV300 支持 Linux 和 LiteOS 两个系统,本文介绍的是搭建 LiteOS 系统的基本操作,关于搭建 Linux 系统的会在后面做介绍。

一、环境搭建准备

环境搭建部分主要分为 4 步,主要是软件包安装、交叉编译工具链安装、组件安装和 ffmpeg 工具安装。

1.1 软件包安装

① 配置默认使用 bash

sudo dpkg-reconfigure dash

配置为 no , 选项如下:

a1143bfbe2cd7cd149a4b5fb58158f04.png

② 安装软件包

sudo apt-get install make libc6 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools texinfo texlive gawk curl upx pngquant

③ 创建 /etc/ld.so.preload 文件

执行 echo “” > /etc/ld.so.preload

解决 64bit linux server 上某些第三方库编译失败的问题

1.2 交叉编译工具链安装

① 解压工具链

tar -xzf arm-himix100-linux.tgz

② 安装工具链

sudo chmod +x arm-himix100-linux.installsudo ./arm-himix100-linux.installexport PATH=/opt/hisi-linux/x86-arm/arm-himix100-linux/target/bin:$PATH

1.3 安装 mtd-utils 工具依赖的组件

① 安装依赖库

sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config

② 设置 pkg-config 路径

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig

③ 安装 automake1.15.1

sudo apt-get autoremove automakewget ftp://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gztar -xzf automake-1.15.1.tar.gzcd automake-1.15.1/./configuremake & make install

1.4 安装 ffmpeg 工具

① 下载对应版本的 ffmpeg 工具,下载地址:

https://johnvansickle.com/ffmpeg/

② 解压压缩包

tar -xf ffmpeg-git-64bit-static.tar.xz

③ 将工具放入服务器用户目录

sudo cp ffmpeg-3.3.4-64bit-static/ffmpeg /usr/binsudo chmod +x /usr/bin/ffmpeg43f8a05d0a52fc556c9652540f14dedd.png

二、安装 SDK

2.1 解压 SDK

tar -xzf Hi3518EV300_MobileCam_SDK_V1.0.1.1.tgz

2.2 从第三方网络获取工具源码

①   mtd-utils 软件包准备,下载地址:

https://src.fedoraproject.org/repo/pkgs/mtd-utils/mtd-utils-2.0.2.tar.bz2/sha512/5e8e8159a0aef719193e4248b3ed22aa37bacc26e8fa0cceb7501b0bf05881f5fa1c87599a6fd78a677fe168df3fbae14fa6f3ccaae7c25dbe3c892db243d9a4/mtd-utils-2.0.2.tar.bz2

将下载下来的软件包存放在 osdrv/tools/pc/jffs2_tool/ 目录下。

② zlib 软件包准备,下载地址:

https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz/download

将下载下来的软件包存放在 osdrv/tools/pc/zlib/ 目录下。

③ gzip 软件包准备,下载地址:

http://ftp.gnu.org/gnu/gzip/gzip-1.8.tar.gz

将下载下来的软件包存放在 osdrv/tools/pc/hi_gzip/ 目录下。

④ lzo 软件包准备,下载地址:

http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz

将下载下来的软件包存放在 osdrv/tools/pc/jffs2_tool/ 目录下。

⑤ yaffs2utils 软件包准备,下载地址:

https://codeload.github.com/dorigom/yaffs2utils/tar.gz/0.2.9

将下载下来的软件包存放在 osdrv/tools/pc/mkyaffs2image/ 目录下。

⑥ ffmpeg 软件包准备,下载地址:

http://ffmpeg.org/releases/ffmpeg-3.4.1.tar.gz

将下载下来的软件包存放在 middleware/thirdparty/ffmpeg/ 目录下。

⑦ tiff 软件包准备,下载地址:

http://download.osgeo.org/libtiff/tiff-4.0.9.tar.gz

将下载下来的软件包存放在 middleware/thirdparty/tiff/ 目录下。

⑧ rapidjson 软件包准备,下载地址:

https://codeload.github.com/Tencent/rapidjson/tar.gz/v1.1.0

将下载下来的软件包存放在 middleware/thirdparty/rapidjson/ 目录下。

⑨ xmp-toolkit-sdk 软件包准备,下载地址:

http://download.macromedia.com/pub/developer/xmp/sdk/XMP-Toolkit-SDK-CC201607.zip

将下载下来的软件包存放在 middleware/thirdparty/xmp-toolkit-sdk/ 目录下。

⑩ expat 软件包准备,下载地址:

https://nchc.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz

将下载下来的软件包存放在 middleware/thirdparty/xmp-toolkit-sdk/ 目录下。

⑪ freetype 软件包准备,下载地址:

https://bigsearcher.com/mirrors/nongnu/freetype/freetype-2.9.1.tar.gz

将下载下来的软件包存放在 middleware/thirdparty/freetype/ 目录下。

⑫ thttpd 软件包准备,下载地址:

http://www.acme.com/software/thttpd/thttpd-2.29.tar.gz

将下载下来的软件包存放在 middleware/thirdparty/thttpd/ 目录下。

⑬ iniparser 软件包准备,下载地址:

http://download.macromedia.com/pub/developer/xmp/sdk/XMP-Toolkit-SDK-CC201607.zip

将下载下来的软件包存放在 middleware/thirdparty/iniparser/ 目录下。

2.3 编译 SDK

① 选择对应 config 文件:

cp configs/hi3518ev300_dashcam_demb_gc2053car_nonescreen_64M_config .config

② 编译整个 SDK

make all

③ 获取镜像文件

在 /reference/out/hi3518ev300_dashcam_nonescreen_demb_gc2053car/burn/spinor 目录下会生成可烧录的镜像文件

d522d7f60a10a2d736d74feff6295ace.png

三、SDK 镜像烧写

在海思 Hi3518EV300 的平台上,SDK 镜像烧写都是建立在 PC 端的 Hitool 工具上的,这里介绍烧写的三种方式:串口、USB、SD卡。

3.1 串口烧写 u-boot

① 在 Hitool 中导入生成镜像中的 usb-burn.xml 配置表

5a272f7090898b6b86e6df16a09377e5.pngf3d5fc42e6e427b3d39509f9f76b4c4c.png

② 烧写 u-boot

   选择与板端连接的串口,并且只选择 u-boot 进行烧录,传输方式选择串口,如下:

cd6fcf5b0e5f2cacb3c2a24b738b0f9a.png

点击烧写,在 Hitool 控制台出现下面 log 表示开始烧写。

185b82dd5f54c5386674979e8833893b.png

烧写完成会出现下面的提示窗口:

4cf8825cb33b6041b4339a6bae512d6c.png

如果进度条没有增加,可以根据控制台的提示重新上电便可以了。

③ 串口打印 log

在 Hitool 中可以打开串口终端显示,显示如下:

96a9482b44586e5a04472d297ae34253.png

可以正常进入 u-boot 控制台,证明 u-boot 烧写成功。

3.2 USB 烧写镜像

① 将所有选项全选,并将传输方式修改为 USB,如下:

a9f995bedd70de8fee3ab0ed02efa98c.png

② 上电前长按 UPDATE_MODE 按键,然后点击烧录,如果进度条没有变化,则按一下 PWR_BUTTON  按键即可。

bd80b1270a2f9f4cdf5b4a8ea20d2547.png

烧写完成之后会出现下面窗口:

3b50497456694d8d3dab7aecb436ab87.png

③ 设置 bootcmd 和 bootargs

烧写完成之后还是会进入 u-boot 控制台,这是因为没有配置 bootcmd,导致 u-boot 无法正常找到 Image 的镜像,具体配置可以参考服务器端生成的 config 文件中的配置

136cc016b0836d5c70e21b69a6eb4fe0.png

因而,在 u-boot 控制台中输入下面配置,可以实现对 bootcmd 和 bootargs 的配置:

setenv bootargs 'mem=0M quiet console=ttyAMA0,115200 clk_ignore_unused rw root=/dev/spinorblk0 rootfstype=jffs2 mtdparts=hi_sfc:512K(u-boot.bin),256K(reserved),64K(rawparam),64K(rawparambak),4608K(main_app_zip.bin),512K(resImage_zip),2176K(appfs.jffs2)'setenv bootcmd 'sf probe 0;sf read 0x43000000 0x560000 0x80000;ugzip 0x43000000 0x41f40000;sf read 0x40000000 0xC0000 0x10000;sf read 0x40100000 0xD0000 0x10000;cread 0x40000000 0x40100000 0x10000 0x41f00000;sf read 0x43000000 0xE0000 0x480000;ugzip 0x43000000 0x40000000;go 0x40000000'

具体配置如下:

52ff4f6a4d172e531694a7d6152992a3.png

最后通过 saveenv 保存配置,然后直接通过 boot 便可以将整个 LiteOS 系统正常跑起来。

d689b101b6f95046d86e11c5890788bf.png

3.3 SD 卡烧写镜像

SD 卡可以进行裸烧(单板上没有 u-boot)和非裸烧(单板上还未烧写 u-boot)两种方式,

首先,需要准备一张 FAT32 格式的 SD 卡,并且需要配置 u-boot 中的配置,使其支持 SD 卡升级和烧写。

在 osdrv/opensource/uboot/u-boot-2016.11/include/configs/hi3518ev300.h 中打开宏定义,如下:

e69af1ab5230bbfb72a5bc1d0f8094f3.png

① 将所需文件存放到 SD 卡中

592dc47eb3435c2839f96dc3616331d8.png

将上图圈出来的文件放到准备的 SD 卡中

(注意:使用裸烧方式烧录 u-boot 必须以 u-boot.bin 命名,而且 bootargs 里面的名称

必须对应相应的镜像文件)

② 插入 SD 卡,上电前长按 UPDATE_MODE 按键,上电后,如果没有反应的话按一下 PWR_BUTTON 即可。( 裸烧 )

2513e77782d3362003ab4e897c4b5e91.png

③ 在串口端查看 log

db1a3c1bad8f9e0943a555d4bef30518.png

不需要像 USB 烧录方式去配置 bootcmd 和 bootargs , SD 卡烧写会自动完成这个动作。

④ SD 卡非裸烧

SD 卡非裸烧和裸烧方式操作都是一样的,具体操作参考 SD 卡裸烧的流程便可。

四、配置虚拟网口

由于在 Hi3518EV300 的 DMEB 开发板上并没有网口,只存在一个 USB 接口,所以需要将其配置为虚拟网口以方便后面的使用。

4.1 USB Device 网口操作(WIN10)

① 在 u-boot 中键入 usb device

8fced1811435572c932d04d773fa0008.png

然后电脑端会识别到一个设备,但是不可用

4bb6dcf9ee20d8abb19247c708160f6f.png

② 右键选择更新设备驱动,将路径指向 SDK 包中提供的 01.software/pc/usb_tools/win10,如果出现无法安装的情况,可以参考下面的操作方式。

ba5a945357f81411e9fd8b5d9841f792.png

通过 zadig 工具(网上下载)安装 HiUSBBurn 所需的驱动,操作方式如下:

<1> 打开 zadig 工具

0708b1f4d9664426b253f07b2deed064.png

可以识别到 HiUSBBurn&#xff0c;而且 Driver 是 none。右边的 Driver 选项选择为 WinUSB。

<2> 点击 Install Driver

56408330191e57c66593716a949557ca.png

出现上面窗口代表着安装驱动完成。

③ 更新完成设备显示如下&#xff1a;

70c2754aff0fd2f2f2bddecf63d955ae.png

④ 进入 LIteOS 中键入 usb 4。

7a68eac94befe62cd36181ac6c31cc66.png66c959b0bf00d9a7ae235be1bfa24343.png

⑤ 在 Windows 端会新出现一个以太网节点

c0d450cd5cd831db39eaea106756d91f.png

⑥ 修改 Windows 端网络节点的 ip 和网关&#xff0c;与板端保持在同一个网段内。

bb807bad5c13f1ef535b57fa86ba11d0.png

⑦ 修改完成之后&#xff0c;PC 和板端都可以互相 ping 通。

板端&#xff1a;

c4136a4681673b2d816efa594a40d740.png

PC 端&#xff1a;

ccb182d9c3c72d5b135b3148455a0540.png

上面的操作需要关闭 PC 端防火墙&#xff0c;否则可能会出现 ping 不通的情况。

4.2 PC 桥接操作

① PC 端连接上 Intelnet&#xff0c;单板也开启网络。

1535caf36fdba9a2a03b1f82cee74129.png

② 建立桥接。

255a990fc10b0e393d3bd82b1ddbcf13.png

 桥接完成之后会生成一个网桥&#xff0c;查看网桥信息如下&#xff1a;

4b9d90778590b7ef39d0b6803ad2b1df.png

③ 配置单板 ip。

62c212642daba7d01b5b6fd559b99311.png

④ 尝试 ping 通网络

板端 ping Linux 端和 PC 端&#xff1a;

e689782d3b3669a78aebb5d7b523c0a5.png

Linux 端 ping 板端&#xff1a;

94b47dbb1d32e884d7a8891fc3c7ff6d.png

PC 端 ping 板端&#xff1a;

6d9915da8cd2a69933bdbbe74617ef24.png

那么&#xff0c;到这里&#xff0c;关于 Hi3518EV300 的环境搭建 (LiteOS) 部分已经完成了&#xff0c;后续我们也会持续为大家导入关于 Hi3518EV300 搭建 Linux 系统的基础操作部分。

参考资料

1.《WM_Hi3518EV300 消费类 Camera SoC 用户指南》

2.《WM_Hi3518EV300 消费类 Camera SoC产品简介》

3.《WM_HiMobileCam SDK 安装使用说明(Huawei LiteOS)》

4.《WM_HiBurn 工具使用指南》

5.《WM_裸烧及非裸烧升级使用手册》

往期推荐

● 海思 Camera | Hi3559AV100 环境搭建

● 算法系列 | MobileNet V2—SSD 的车道线检测方法剖析

● 算法系列 | 360 AVM 调试方法与步骤

93a5604657b331e04fcb9ca6a1339a6d.png

大联大旗下世平集团  ATU 部门可以提供相关设计方案和技术支持&#xff0c;需要请联系 atu.cn&#64;wpi-group.com

1fa973de695a5a63bd096d0178b01c10.png

6041330403046fa6ecd77165b15174f8.gif

发现“阅读原文了吗&#xff0c;戳我有惊喜哦&#xff01;




推荐阅读
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了win7系统休眠功能无法启动和关闭的解决方法,包括在控制面板中启用休眠功能、设置系统休眠的时间、通过命令行定时休眠、手动进入休眠状态等方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
author-avatar
aaa521125aaa
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有