记录一下最近的小突破。
思路记录:
起因是因为我想偷鸡,我的pc上有一个调用摄像头做目标检测的python程序,然后我看这个程序整个文件夹的大小对于rp-rv1126的内存完全够用。
所以我就想能不能直接在板子上用这个python程序,一开始我的思路是用pyinstaller,理论上是可以的,我看输出的可执行程序的格式和官方给的rknn的demo一样,但奇怪的是就是无法运行,一直报/bin/sh: xxx not found的错误。后来我听一个人说他直接用python跑的程序,说他安装了python。当时我完全不懂什么意思,然后我就找了个linux下通过安装包安装python的教程,但是依旧因为/bin/sh的错误以及一个关于编译器的错误无法安装。
后面我就理解了,这个板子原来自带的buildroot我听说过一个说法:buildroot没有完整系统的概念,所以要交叉编译(在PC上编译,在板子上运行),也就是说它没有编译器,更别说安装python了。
然后我又找了个资料:
Firefly Debian 使用手册 — Firefly Wiki (t-firefly.com)
我看中这个系统可以apt-get install,那就意味着安装python的可能性。
但是我按教程安装了debian后发现板子用不了了,后来我才发现。
这个资料是:core-1126/1109-JD4而我用的是rp-rv1126,看起来板子示意图不一样,估计不能通用。寄了!!!!!
但是我又在想,这里我学会了板子烧录系统,也大概理解了,那我干脆烧录一个ubuntu系统算了。
然后再搞定python。
板子烧录
先安装烧写驱动,然后打开RKDevTool。
板子连线图的话我上一篇讲数据交流的里面有,就是连OTG口和PC,然后上电。
然后按住recovery,按住的同时再按一次RST,直到RKDevTool上显示识别到一个LOADER设备。
然后按rp-rv1126-1109使用指导文档操作。
我烧录的是:
05-镜像文件\ubuntu\pro-rv1126-ubuntu\gc2093x2-ubuntu\update-pro-rv1126-ubuntu20.04-5.5inch_720x1280-20210712.img"
意思大概是双目摄像头gc2093+5.5英寸显示屏。
Ubuntu系统与PC通信
我在前面烧录debian系统的时候就发现了一个问题:adb不能用了。
ubuntu系统也是,adb不能用了,带来了一系列麻烦,但好在我解决了。
这里强烈推荐MobaXterm这个软件。
只要点session就能选SSH和Serial,可以同时使用,比用SDK里的工具包一堆软件方便多了。
具体来说,先得按我上一篇讲数据交流弄了那个silicon才能串口通讯。
然后session里选个serial,设置一下设备管理器显示的那个silicon的端口号,然后改一下波特率为官方给定的115200即可。
然后板子上按一下RST即可,等一下就会让你输入用户和密码。
Ubuntu系统用户与密码:
用户: root, 密码: rpdzkj
之前buildroot的是root和rockchip,这个可以在深圳荣品电子科技的售后群里找到。
然后串口连上以后,就相当于有了个rp-rv1126的终端。这个时候用下面这个链接的方法连上wifi:
(18条消息) Ubuntu 命令行连接wifi_希望原野的博客-CSDN博客_ubuntu命令行连接wifi
这里注意一点,为了后面用SSH,电脑和板子要连同一个WiFi,然后我笔记本插不了网线,所以我直接手机开热点给两个连。连上以后终端输入ifconfig可以查到ip地址。然后我上一篇讲了用MobaXterm去进行SSH连接的教程,这里只提一下优点:那就是可以在左边直观看到文件夹,而不是只能用终端天天费力的ls和cd。然后可以直接双击文件进行修改(可以通过这点更换板子的下载源)
_____________________________________________________________________________
这里注意一点:好像当你设置了wifi以后再用串口的时候会自动连接,反而会影响串口的使用,就是输入不了账号及密码。但是不用担心,这个时候先打开原来的热点(电脑也得连),RST一下,它串口的终端会显示连接的信息,然后双击SSH的session就行。因为它自动连接了,所以SSH所需的环境已经搭好了,可以直接用,如果要恢复串口的使用,那就用SSH的终端关掉wifi。
安装python(目前暂未完全成功)
首先这部分的最终目标是安装好python和opencv-python。
建议直接使用自带的python3.8
然后安装opencv的话,直接:
sudo apt update
sudo apt install libopencv-dev python3-opencv
#接下来验证安装
python3 -c "import cv2;print(cv2.__version__)"
然后难点其实是opencv调用板子摄像头的问题,但是目前还没解决。
————————————————————————————————————————
之前安装了一个python3.6去安装opencv最终失败,然后我还发现ubuntu里多个python版本会产生很多麻烦(无论是python还是pip)。但是板子空间不够,不太好用anaconda管理环境,然后的话应该还是有别的办法管理环境,但是对目前的我来说不划算。
然后我想到板子部署的是ubuntu20.04,自带了一个python3.8。
于是我产生一个想法,不如把板子当一个ubuntu20.04的PC系统?
我就直接搜在ubuntu20.04下安装opencv的教程:
(9条消息) ubuntu20.04安装opencv(系统默认Python3.8)_songjiangem的博客-CSDN博客_ubuntu20.04安装opencv
这里记录一下上面这篇教程我在实践过程中因为板子产生的错误及解决方法。
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
首先这三步就有大问题,会发现有个关键网站failed to fetch,然后我就查那个网站,发现确实404 not found。
经过我一顿找最后发现:
首先你要去输入:
dpkg --print-architecture
这个可以查看系统架构,我发现rp-rv1126的ubuntu系统架构是armhf,简单来说就是32位的amd,而目前阿里源那些国内源大多只有arm64的包,所以就需要增加含有armhf的国内源。
(18条消息) Ubuntu支持armhf 的国内源_ywueoei的博客-CSDN博客
添加源我之前发过,也可以自己上网查查,不难。
之后教程里的sudo apt install就都可以实现了。
然后在用cmake配置命令部分也需要根据自己的路径去修改:
#先把CMakeLists.txt从opencv文件夹内复制到刚创建的build目录下,然后输入以下内容到终端。
sudo apt-get install doxygen
pip install beautifulsoup4
cmake -DWITH_CUDA=OFF \
-DWITH_VTK=OFF \
-DWITH_MATLAB=OFF \
-DBUILD_DOCS=ON \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_PYTHON3_VERSION=3.8 \
-DPYTHON3_INCLUDE_PATH=/usr/include/python3.8 \
-DPYTHON3_LIBRARIES=/usr/lib/python3.8/ config-3.8-arm-linux-gnueabihf/libpython3.8.so \
-DPYTHON3_EXECUTABLE=/usr/bin/python3.8 \
-DOPENCV_EXTRA_MODULES_PATH=/root/opencv_build/opencv_contrib/modules \
-DPYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \
-DOPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local \
..
前两个安装指令是运行后面这一大段cmake报错中找出的信息然后安装的。
后面cmake这一大段和原教程相比我改动了三点:
1、-D后面的空格去掉。2、我的是config-3.8-arm-linux-gnueabihf。3、我的是/root/opencv_build
编译到一半中途退出再输入make依旧可以追溯到上次的进度,但目前我编译到90%进行不下去了,疑似RAM不够用了,暂无解决方法,可能要尝试直接安装而不是源码安装了。