上篇文章,进行了EASY EAI Nano的开箱测评与开机运行测试,本篇,进行软件开发环境的搭建。
官网文档教程(https://www.easy-eai.com/document_details/3/135)使用的是VMware虚拟机,并提供了已经配置好开发环境的Ubuntu镜像系统,理论上,只要安装了VMware,再将Ubuntu镜像导入,即可在配置好的Ubuntu中进行EASY EAI Nano的软件编译。
Ubuntu镜像默认搭建好初级的开发环境如下:
工具 | 描述 |
---|---|
/opt/rv1126_rv1109_sdk | 交叉编译工具 |
qtcreator | qt编译环境 |
.bashrc | 编译环境配置文件 |
由于我之前已经安装过VirtualBox虚拟机了,并安装了Ubuntu18系统,如果要使用官方的VMware类型Ubuntu镜像,还需要再安装一个VMware,或是将VMware类型Ubuntu镜像先转为VirtualBox类型的,再导入到VirtualBox中。
为了能更多的了解rv1126的编译环境,我就继续使用我自己的开发环境进行rv1126编译环境的配置。arm-linux-gnueabihf-gcc这个编译工具链之前也安装过,Qt编译环境之前也安装过,不知道是否和EASY EAI Nano使用的是否一样,先继续使用我的之前已配置好的开发环境,遇到问题再想办法解决。
官方的开发环境中,rv1126_rv1109_sdk的配置我之前是没有的,我需要自己配置一下。
先下载rv1126_rv1109_sdk(网盘资料路径为“03.编译器/rv1126_rv1109_compiler_xxxxxxxx.tar.gz”,网盘资料:https://pan.baidu.com/s/1AjOIu77mzFM4cDA0MMVr2A#list/path=%2F,提取码:5ttf)
然后在Ubuntu中解压,解压出来是一个名为opt的文件夹,里面包含rv1126_rv1109_sdk文件夹:
官方教程的将此文件放到根目录下的opt目录下,我也把这个文件夹复制到根目录下的opt目录下(注意下图我的操作有点绕弯),应该直接一句就好了:
sudo mv opt/ /
复制完成之后,还要添加环境变量,由于我之前已添加过旧版本的arm-linux-gnueabihf-gcc的环境变量,而rv1126_rv1109_sdk里有新版本的arm-linux-gnueabihf-gcc,为了不影响两个编译器的使用,我先不添加rv1126_rv1109_sdk的环境变量,可以在需要进行rv1126编译的时候,在shell中临时添加环境变量,方法为在编译前,输入几条指令:
export PATH=/opt/rv1126_rv1109_sdk/buildroot/output/rockchip_face_board/host/bin:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
下载官方提供的例程(下载地址:https://github.com/EASY-EAI/EASY-EAI-Toolkit-C-Solution)进行编译测试。
官方提供了很多例程,这里随便打开一个例程的目录,调用build.sh进行编译。
如果直接编译,会出现报错,如下图左图,查看gcc的版本,是我之前配置的2017版的编译器。
编译前在shell中进行环境变量的设置,再查看gcc的版本,就是2019的版本了,再进行编译就可以编译成功了,如下图右图:
官方例程源码,我是先下载到了Windows系统中后,再拷贝到Ubuntu中进行编译测试的,在编译前还遇到了其它问题,这里记录一下:
首先的build.sh没有执行权限的问题,这个比较简单,加个可执行权限即可:
chmod +x build.sh
另一个问题是,不知道是不是先下载到了Windows中的原因,build.sh文件都是window文件的换行符(\r\n),而build.sh要想运行,需要是linux系统格式的换行符(\n),否则运行build.sh也会报错:
# bash: ./build.sh: /bin/sh^M: bad interpreter: No such file or directory
解决这个问题,只需要把换行符改为linux系统格式的换行符即可,可以使用sed指令来帮我们替换:
sed -i "s/\r//" build.sh
上面的指令的意思是将\r替换为空,即实现了(\r\n)变为(\n)。
EASY EAI Nano的OTG信号与ADB信号引脚复用,拨码开关拨到图片方向的左端即使用ADB接口,右端则表示使用OTG接口。
由于板子的拨码开关默认就是在ADB这端,所以不用修改(另外,上篇文章,已经在Windows系统上使用过ADB功能了)。
用USB线连接板子与电脑,Ubuntu虚拟机右下角的USB选项中,将识别到的rockchipxxx勾选上,然后在Ubuntu的终端中输入命令“adb shell”就可以开始调试开发板了,如下图:
不过,在某些时候,Ubuntu无法连接到ADB,会有如下提示,不知道是什么情况
SSH登录,需要板子连网,并需要知道板子的ip,这里主要介绍下如何进行wifi配网。
先使用ADB接口登录进开发板,进行wifi配网,可以和上篇一样,使用如下指令进行wifi配网:
wifi_start.sh ssid password #ssid和password修改为自己的wifi名称和密码
查看ip后,即可使用ssh登录。用户名和密码都是root。
我用的MobaXterm软件进行SSH登录。
上面那种方法配置wifi,板子重启后需要再次配置,比较麻烦,参考这篇帖子:https://www.dandelioncloud.cn/article/details/1503928604282155010,可配置为将wifi信息写入板子,并在开机启动时自动连接wifi,需要添加一个脚本:
我在/etc/init.d中建立了一个S99auto_wifi_link脚本文件,里面写入这几条命令:
#!/bin/sh
wpa_supplicant -B -i wlan0 -c /userdata/cfg/wpa_supplicant.conf
wpa_cli reconfigure
wpa_cli reconnect
另外,/userdata/cfg/wpa_supplicant.conf文件中要修改为自己的wifi名和密码:
修改之后,重启开机,wiif就可以自动连接了,可以使用ifconfig查看ip。
板子上留了插针形式的串口接口,需要单独再接一个USB转串口模块才能通过串口进行调试,
需要单独接线,还需要有一个USB转串口模块,比较麻烦,先不使用串口调试。
由于我的Ubuntu经常连不上板子的ADB,而Windows可以快捷的连接ADB,所以我在Ubuntu中通过SSH的方式将编译出的程序拷贝到板子中,用Windows连接板子的ADB来操作板子,并运行程序。
SSH发送文件的基本使用方式如下,可以从远端拉取文件到本地,也可以将本地文件发送到远端计算机
# 从远端拉取文件到本地
# scp 远端的用户名@远端计算机IP::/远端文件存放路径 拉取文件保存的本地路径
scp server_user_name@192.168.1.101:server_file_path local_path
# 将本地文件发送到远端计算机
# scp 本地文件的路径 远端的用户名@远端计算机IP::/远端文件存放路径
scp local_file_path server_user_name@192.168.1.101:server_path
我在Ubuntu中进行操作,即是将本地的可执行文件发送到远端的板子中。
注意,这里有2个源文件,所以生成了2个可执行文件,下图左图是SSH拷贝文件的流程,先拷贝了第一个程序(test-display)和测试图片(720x1200.rgb),右图是查看板子中的拷贝结果,然后运行测试程序。
测试效果如下,屏幕上显示了图片,其中左图是test-display的执行结果,右图是test-display-pro的执行结果
屏幕的分辨率还是比较高的,图片显示的很清晰。
本篇进行了EASY EAI Nano软件开发环境的搭建,在VirtualBox虚拟机中的Ubuntu18系统中,配置rv1126的交叉编译环境,并编译官方的测试代码,验证了编译环境可以正常使用,最后将编译结果通过SSH的方式复制到板子中进行运行测试。
更多回帖