HI3518EV300简介
Hi3518EV300 作为新一代消费类 Camera SOC,集成新一代 ISP 以及业界最新的 H265 视频压缩编码器,在低码率、高画质等方面领先业界,同时人形检测,支持人脸和异常声音检测等智能应用;采用先进低功耗工艺和低功耗架构设计,使得 Hi3518EV300 在低功耗上引领行业水平。集成 POR、RTC、Audio Codec,为客户极大的降低了 ebom 成本。
1.1主要特点
-ARM Cortex A7@ 900MHz,32KB I-Cache,32KB D-Cache /128KB L2 cache
-支持 Neon 加速,集成 FPU 处理单元
-带 性能强大的视频编码、音频编解码、智能视频分析、ISP、音视频接口
-集成 2通道LSADC、3个UART接口、支持I2C、SPI、GPIO接口、4个PWM接口、1个SDIO2.0接口+1个SD 卡2.0 接口、1个USB 2.0 HOST/Device 接口
-支持的外部存储接口——SDRAM、SPI NOR Flash、SPI NAND Flash、eMMC4.5
And so on...
1.2 功能框架图
开发板整体预览
我们hi3518ev300开发板有两个版本,这两本版本除了整体布局有一些差距之外,还有一个IO口的区别,但是他不会影响大家正常的体验和开发的。
2.1 Hi3518EV300 板一整体预览
Hi3518EV300 板一
如上图所示,开发板左上角是一个 DC-005 (5.2*2.1)规格的电源座子,输入电源要求 (5V-12V)/2A。左下角是一个自锁按键,用来做 CPU上电开关,右上角是一个RS232 DB9公头,作为我们开发板和上位机或者其他设备的串口通信接口,串口下方是USB下载接口。其中USB和串口都可用来进行代码下载,只是串口下载速度相对慢很多,一般推荐用USB口下载。
开发板中间部分是我们HI3518EV300主芯片,其周围总共有6组排针,这6组排针的功能如下:
Hi3518EV300 板一排针
如上图所示,GND处为4针2.54mm脚距的GND排针,3V3处为4针2.54mm脚距的3.3V排针。其余排针也皆为2.54mm脚距,其标号如2、3等序号为HI3518EV300的引脚号,GND同样表示地脚,此外还有两组IIC接口——I2C2与I2C0,其中I2C2为3.3V上拉,I2C0为1.8V上拉。
2.2 Hi3518EV300 板二整体预览
Hi3518EV300 板二
如上图所示,开发板左上角是一个 DC-005 (5.2*2.1)规格的电源座子,输入电源要求 (5V-12V)/2A。左中部分有一个自锁按键,用来做 CPU上电开关,右上角是一个RS232 DB9公头,作为我们开发板和上位机或者其他设备的串口通信接口(串口电平为3.3V),串口下方是USB下载接口。其中USB和串口都可用来进行代码下载,只是串口下载速度相对慢很多,一般推荐用USB口下载。
开发板中间部分是我们HI3518EV300主芯片,其周围总共有6组排针,这6组排针的功能如下:
Hi3518EV300 板一排针
如上图所示,GND处为4针2.54mm脚距的GND排针,3V3处为4针2.54mm脚距的3.3V排针。其余排针也皆为2.54mm脚距,其标号如2、3等序号为HI3518EV300的引脚号。对比板一我们会发现板二多引出了一个IO口,此外还有两组IIC接口——I2C2与I2C0,其中I2C2为3.3V上拉,I2C0为1.8V上拉。
2.3 配套开发工具介绍
我们开发板的会配套有开发必须的电源适配器、串口线、USB线,下面我们来一一认识一下这几个工具。
2.3.1 电源适配器
电源适配器要求输出为5V/12V 2A,并且接口要适配我们板子上的DC电源座子。
2.3.2 串口线
我们配套的串口线为 DB9母头—USB 串口线,自带有串口转USB的功能(PL2303RA),大家只需要安装对应的驱动即可。另外有些人可能会使用PC机的串口,需要自己去买对应的串口线即可(注意要买交叉线而非直连线)。
2.3.3 USB线
如上图所示,USB线为USB3.0 双公头的线即可。
开发环境搭建
3.1 VMware 安装
关于VMware的安装包大家可百度下载,我自己用的是15.5.0版本的,vmware安装过程也比较简单,大家可自行百度,此处不做过多说明。
3.2 VMware 新建一个虚拟机
打开VMware,参考下面截图流程新建一个虚拟机。
到此,我们就已经工程创建了一个新的虚拟机,他其实就是一个新的电脑,只是这个电脑是在我们自己的电脑上用软件虚拟出来的。
3.3 虚拟机安装Ubuntu-18.04
上一节我们说到我们已经创建了一个“新的电脑”,但是这个电脑目前里面什么也没有,我们需要利用ubuntu的镜像文件给他安装一个linux操作系统。
打开VMware,参考下面截图流程给我们刚才创建的虚拟机安装操作系统。
注意:上图中步骤四中提到的Ubuntu镜像在我们提供的资料下有,大家自行解压到电脑上(一般放在刚才创建的虚拟机存放的路径下)
接着等待一会,然后来到以下的界面。
接下来等待系统安装完成即可。
安装完成后需要重启虚拟机,接着登录就可以了。
3.4 安装VMware Tools
VMware Tools 中包含一系列服务和模块,可在 VMware 产品中实现多种功能,从而使用户能够更好地管理客户机操作系统,以及与客户机操作系统进行无缝交互。简单来说,VMware Tools 可以让我们更好的使用虚拟机!
首先线打开我们需要安装vmware tools的虚拟机(进到系统里面去),接着按下面图示步骤安装即可。
如果跳出以下窗口,请选择确认。
接着我们会发现linux系统桌面上出现一个 VMware Tools 的文件,双击打开它,其内容如下:
在此窗口空白处,右键选择”在终端打开”
接着会进入终端模式:
然后给我们的root用户设置一下密码(root用户代表着拥有系统最高权限的用户,后面很多安装步骤需要切换root用户或者临时授权root权限,都需要用到root用户密码):
在终端中输入 sudo passwd root,接着系统会提示你输入当前用户的密码,比如我的就是test用户,输入正确以后回车,再输入两次root密码即可。(如果提示当前用户密码失败很有可能是小键盘被锁,没办法输入数字哦)
此时在终端输入 su root 切换root用户,输入root密码成功切换root用户:
Ps:root用户会在你当前用户的机器名前面添加 ”root@” 字符串
接下来我们需要把vmware tools的压缩包移动到系统中来(现在这个DVD文件只读,无法进行解压操作):
此时我们在我们当前用户的主目录下创建了一个vmwaretool的文件夹,并且将vmwaretools的压缩包复制到里面去了。
接着我们进入上面这个文件夹,执行图示解压命令:
解压完毕以后,查看当前目录下的文件/文件夹:
我们发现解压出来了一个新的文件夹,进到里面去查看里面的内容:
执行当前目录下的安装文件:
出现这个情况时,输入y回车,接下来遇到选项时一直回车即可!
安装完成后虚拟机会自动适应我们当前的窗口,以后我们可以直接在windows和linux之间进行文件复制粘贴操作,超级方便的!
3.5 关于sudo命令(此小节可以跳过)
上面一小节我们有提到了通过 sudo passwd root 命令来修改我们root用户的密码,比较皮的朋友也许会重复几次这样的操作,并且发现每一次都能通过这个命令修改root用户的密码。那么这个时候他可能会想不通,既然普通用户一直可以通过这个命令来修改root用户的密码,那么设置root用户密码还有什么意义呢?系统所有安全相关的操作全部暴露在普通用户下,系统的安全性又怎么得到保证呢?
Linux系统有一个配置文件,位于 /etc/sudoers, 他是sudo的配置文件,我们先来查看一下我们新建的系统该文件的内容:
配置内容格式为: 用户 登录的主机=(可以变换的身份) 可以执行的命令
我们来解释一下跟我们上述问题相关的内容: %sudo ALL=(ALL:ALL) ALL
%sudo表示sudo分组下的所有用户
第一个ALL:表示上述用户可以登陆的主机,ALL表示所有主机
(ALL:ALL):可以变换成所有用户和用户组
最后一个ALL:可以执行的命令
简单来说,上面这个配置内容可以解释为:允许sudo分组下的所有用户在任何地方以任何身份使用任何命令。
我们再来查看一下我们当前用户的分组,在终端输入 cat /etc/group,接着终端会打印出当前系统所有分组以及组下的用户,我们找到:
这也就是说,我们当前用户(test)是处于sudo分组下面的,这也就解释了我们上面test用户为什么可以无限修改root用户的密码的原因。
假如我们把配置文件中%sudo ALL=(ALL:ALL) ALL注释掉(在前面添加#号),我们再去执行 sudo passwd root的时候系统就会提示我们test是没有权限去执行sodu命令的。
另外,test用户是我们安装系统的时候创建的用户,该用户是会默认被添加到sudo分组的,因此才有了执行sudo命令的权限。并非所有创建的用户,都是有sudo的权限的。
3.6 鸿蒙OS编译环境
3.6.1 设置shell
鸿蒙OS编译的过程中会使用到我们bash shell脚本,因此我们要把系统默认的shell设置为bash。但是一般我们系统安装完成以后默认的shell都是dash,我们可以在终端输入命令
ls -l /bin/sh,如果终端显示”/bin/sh -> bash”则说明当前系统默认shell就是bash了。如果不是,则需要通过以下两种方法调整:
在终端执行sudo dpkg-reconfigure dash,然后在弹出来的界面选择NO
在终端执行 sudo rm -rf /bin/sh 删除掉目前系统下shell的软链接文件
然后在执行 sudo ln -s /bin/bash /bin/sh 重新将软链接指向bash
3.6.2 安装python环境
鸿蒙OS源码根目录下的编译脚本是用python写的,因此编译系的系统需要装有python环境。我们给大家提供的ubuntu镜像安装完以后默认是安装了python3.6.8的,但是鸿蒙OS编译要求系统安装3.7以上版本的python。
在终端执行 python3 --version查看当前系统python版本:
可见我们系统现在python确实是3.6.8版本的,接下来我们要给系统安装3.7以上版本的python。
注:如果你的ubuntu是16版本的,请通过我们提供的Python-3.8.5.tgz文件手动安装。
对于18版本的ubuntu,请在终端执行sudo apt-get install python3.8 安装python3.8。
(友情提示:如果提示报错则需要先执行 sudo apt-get update命令)
接着输入y回车并等待安装完成。
安装完成以后我们在终端输入命令 python3 --version查看python3版本:
一般我们安装完成以后,查看python3版本是终端仍然打印python 3.6.8,这是因为目前系统python3软链接依然指向3.6.8版本的python,我们需要对该软链接做修改:
1.在终端输入命令 which python3 查看当前python3的存储位置
2.接着进入终端提示的位置: cd /usr/bin
3.在终端输入命令 ls -l python* 查看当前目录下”python”开头的文件与文件夹:
这时候我们可以看到python3是指向系统中python3.6的软链接文件
4.在终端输入命令 sudo rm python3
5.重新创建软链接: sudo ln -s /usr/bin/python3.8 /usr/bin/python3
这个时候我们再去查看python3的时候发现他变成了指向系统python3.8的一个软链接:
6.接着在终端输入命令 sudo apt-get install python3-setuptools python3-pip -y 安装包管理工具
7.在终端输入命令 sudo pip3 install --upgrade pip 升级pip3
8.在终端输入命令 pip3 install setuptools 安装python模块(setuptools)
9.在终端输入命令 sudo pip3 install kconfiglib 安装GUI menuconfig工具
到此我们python3的环境已经搭建完毕!
3.6.3 安装打包工具
1.在终端中运行 mkfs.vfat:
如果终端无法正确显示该打包工具的版本,则在终端输入sudo apt-get install dosfstools安装他。
3.在终端中运行 mcopy:
如果终端无法正确显示该打包工具的版本,则在终端输入sudo apt-get install mtools安装他
3.6.4 安装编译工具
此处的编译工具一共有四个:gn、ninja、LLVM、hc-gen
我们在疯壳官网提供了这四个工具的压缩包,我们将其复制到我们的linux系统中:
1.在我们用户主目录下创建一个临时文件夹用于存放编译工具的压缩包:
2.进到tmp文件夹,从windows下复制编译工具的压缩包到此处:
3.然后在该文件夹空白处,右键选择在终端中打开,我们将在终端中解压这四个压缩包:
在终端中依次输入命令:
tar -xvf ninja.1.9.0.tar -C ~/
tar -xvf gn.1523.tar -C ~/
tar -xvf llvm-linux-9.0.0-34042.tar -C ~/
tar -xvf hc-gen-0.65-linux.tar -C ~/
4.打开当前用户环境变量配置文件 vi ~/.bashrc,并在文件末尾添加以下内容:
export PATH=~/ninjaPATH
export PATH=~/gnPATH
export PATH=~/llvm/binPATH
export PATH=~/hc-genPATH
如下:
保存文件并退出。
5在终端输入 source ~/.bashrc 生效环境变量的修改
到此,编译工具安装完毕!
源码编译与烧录
4.1 编译源码
1.我们提供的源码是一个压缩包: code-1.0.tar.gz,同样我们将其复制到linux系统下面(在当前用户主目录下新建一个名为hmos的文件夹,将其复制到里面)
2.解压源码(tar -xzvf code-1.0.tar.gz):
3.编译源码:
如上图所示,解压出来的源码的根目录下有一个名为 “build.py” 的脚本,在终端输入”python build.py ipcamera_hi3518ev300 -b debug” 开始编译源码,全编译的过程有点久,请大家耐心等待。
提示:如果编译报错提示:No module named apt_pkg (切换系统python3软链接可能出现的问题)的话请在终端执行:
sudo apt-get install python-apt
sudo apt-get remove --purge python-apt
安装该模块以后再编译!
编译最后提示:
则表示编译成功。
*编译过程中报错解决不了的话请联系我们哦。
4.2 烧录文件提取
我们需要烧录到Hi3518ev300 的文件总有四个:
1.Hi3518ev300 uboot文件,uboot是源码包自带的,该文件位于源码路径:
vendor/hisi/hi35xx/hi3518ev300/uboot/out/boot/u-boot-hi3518ev300.bin
如下图:
2..OHOS_Image.bin、rootfs.img、userfs.img,这三个文件是我们成功编译完源码生成的,位于源码路径:
out/ipcamera_hi3518ev300 下
如下图:
我们将上述四个文件拷贝到windows下面。
4.3 文件烧录
Hi3518ev300 有专门配套的文件烧录工具——hitool,该工具在疯壳官网可以下载,双击其exe文件即可打开,打开后整体界面预览如下:
接着我们需要切换到复合我们板子的芯片型号:
正常情况下,板子发货时已经烧录了上述四个文件了。大家拿到手以后可以直接上电体验。
首先我们先给板子接好线:
串口线的USB公头接到我们电脑的USB口上,USB3.0 线另一端也接到我们电脑的USB口上,电源适配器接到220V家用电接插座上。接线完毕后打开板子电源开关,正常情况下板子上红色电源指示灯会亮起。
在电脑设备管理器中找到我们串口线的端口号,比如我电脑现在是COM6。
接着在hitool中连接板子的串口:
紧接着终端界面上有两个地方提示我们串口已经正常连接:
如果我们不需要更改终端的设置,可直接进行下面的操作连接我们板子的串口:
连接终端以后,重新给板子上电,这个时候终端将会打印板子启动过程中的log:
然后在终端中运行命令:
接下来我们先把板子的uboot擦除,再从头开始演示一遍完整的烧录过程:
1.(如果终端没有关闭则先关闭终端,不然会提示串口占用)选择串口
2.添加文件分区
保存分区配置:
3.擦除uboot
擦除完成以后提示:
注意:擦除完uboot以后,如果板子连接着USB,这个时候电脑设备管理器出现不断刷新的情况,这个是正常状况。
USB烧录
接下来我们将通过USB接口下载四个文件(当然串口也是一样可以的,只是速度很慢):
点击烧写以后等待2分钟左右即可.(USB烧写失败有可能是VMware 虚拟机占用了USB,选择USB连接到主机即可)
烧写完成以后,重新打开终端,这个时候系统还处于hisi的终端界面,如下:
这个时候我们需要在终端输入、保存芯片的启动参数,打开我们提供的bootcmd.txt文件,从中复制:
粘贴到终端界面并按键盘回车键,然后等待系统重启,系统启动完毕以后又进入鸿蒙OS的终端界面中。(如果这个时候系统一直重启,则重新给板子上电即可)
上述烧写过程是USB(也可以用串口)一键烧写的过程,一键烧写需要注意:
一键烧写之前必须先通过串口擦除uboot,没有uboot的时候才能够实现一键烧写
一键烧写是必须勾选所有(四个)分区,一次性下载所有分区文件
可以通过终端连接板子的串口,查看板子上电的时候是否有uboot的信息输出来判断是否已经烧写了uboot,如果板子没有烧写uboot,通过hitool进行擦除uboot操作时会导致hitool卡住并报错
由于事先擦除了uboot,因此每次烧写完毕以后都需要重新设置bootcmd等参数
除此之外,我们可以通过串口对每个文件进行单独下载(USB没法通过配置分区单独下载文件),串口单独下载时需要将传输方式变更为串口,只勾选需要下载的文件。
点击烧写以后,根据系统提示对板子重新上电即可。同时在此配置下我们也可以通过串口对单独的分区进行擦除。
但是最快的烧写方式是先通过串口擦除uboot,然后通过USB一键下载方式下载代码。