20届极速光电龙芯组别学习过程
这里是20届极速光电龙芯组别,记录分享自己学习龙芯的过程。
已完结。
这边贴一下我参考到的文章与视频:
- 龙芯2K0300开发笔记(新手向:到点灯和视频图像颜色识别处理)
- 龙芯2K0300久久派使用培训(自用)
- i佬的GitHub
- 久久派论坛
- 零炻佬的【新手向】久久派串口及网线连接
- 嵌入式linux学习之opencv交叉编译/移植并使用CmakeList编译demo
- 基于虚拟机的Ubuntu网络连接解决方案
- 司败的man佬的【20届智能车】龙芯组别个人分享(面向新手环境搭建)(jomi强烈推荐)
如果我写的不清楚或者有误的,大家可以去看看这些文章和视频。欢迎大家在评论区指正我的错误!
所有内容都是自己写的,审核员别再不给通过了
前期安装与搭建环境部分
一、安装Vmware虚拟机
VMware安装教程 建议下载最新版本。
二、安装Ubuntu系统
安装ubuntu系统需要镜像文件:
通过网盘分享的文件:ubuntu-20.04.6-desktop-amd64.iso
链接: https://pan.baidu.com/s/10GDK_vUaVACS9hVurUH5ww?pwd=vp9g 提取码: vp9g
–来自百度网盘超级会员v2的分享
打开刚刚安装好的vmware,点击新建虚拟机,接下来跟着我的步骤:
这里还是建议最大磁盘大小比20G大一点,后期血的教训,,,
点击自定义硬件,修改一下配置:
点击关闭,再点击完成,小小的等待一下,就安装好Ubuntu系统啦!
注意:如果WiFi连不上(wifi图表):
1.sudo service network-manager stop
2.sudo rm /var/lib/NetworkManager/NetworkManager.state
3.sudo service network-manager start
4.再将网络适配器改成桥接模式或者NAT模式
5.sudo service network-manager start
这样就能连上网络啦!
三、安装Vmware tools、gcc和vim
1.安装VMware tools
安装VMware tools是为了让虚拟机和物理主机之间可以共享剪贴板,支持复制和粘贴文本、文件等。
在虚拟机中打开终端,输入以下命令:
sudo apt-get update #用于更新ubuntu上的软件源,每次安装其他东西之前最好都先执行以下此命令
sudo apt-get install open-vm-tools-desktop
小提示:如果在你输入密码的时候屏幕上不显示,是正常现象!输入完按Enter键即可。
2.安装vim和小小使用一下vim
vim是命令行的文本编辑器的工具。
在桌面打开终端输入以下命令安装vim:
sudo apt-get install vim
小提示:中间遇到[Y/n]的 输入Y或者按Enter键。
如何使用vim呢?
输入以下命令:
mkdir code #创建code文件夹用于存放一些自己写的小小代码
cd code #进入code文件夹
vim main.c #创建并编辑main.c
这时候你会进入main.c的编辑界面,按下A键,就可以开始编辑了!
输入以下示例内容:
输入完后,先按esc键,接着shift+: ,输入wq,即可退出编辑界面;
输入cat main.c命令即可查看文件内容。
3.安装gcc
gcc编译器是在Linux操作系统里将一个C语言代码编译成一个可执行文件的工具。
输入以下命令安装gcc:
sudo apt-get install gcc
gcc最常用命令:
-o FILE #生成指定输出文件FILE
让我们来使用一下:
gcc main.c -o main
这样就编译好我们刚刚写的main.c文件了。(-o后面的文件名为了好区分,最好和前面的文件名一致并把.c删除,例如刚刚的示例,最好命名成main,但不能命名为main.c,即不能重复)
如何运行main.c文件?
chmod 777 main #赋予其可执行权限
./main
成功运行!
我们输入以下命令查看main文件的属性:
file main
可以看见这是一个x86-64的文件属性;
四、龙芯交叉编译环境安装及运行
刚刚我们使用gcc对main.c文件进行了本地编译,当程序写的越来越复杂时,需要通过交叉编译好的代码放到开发板里去用。
现在我们要做的是在虚拟机里面也就是x86的平台上去编写程序并编译成能运行在龙芯架构的程序,而编译得到的程序在x86平台上是不能运行的,必须放到龙芯平台上才能运行。
通过网盘分享的文件:loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.4 (1).tar.xz
链接: https://pan.baidu.com/s/1srZ7ri9UhLNvQgQ5HMMnuw 提取码: q9nm
首先,将下载好的压缩包复制粘贴到虚拟机桌面上,输入**tar -xvf loongson…(压缩包名字)**进行解压;
尽量把解压完的文件放在opt(存放软件工具)目录下面:
sudo mv loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.4 /opt/
接着指定路径,并复制粘贴到bashrc中,完成交叉编译环境配置。跟着步骤来:
- cd /opt/
- cd loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.4/
- cd bin/
- pwd
复制/opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.4/bin
进入资源配置界面:
vim ~/.bashrc
在最下面添加刚才复制的:
export PATH=/opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.4/bin:$PATH
保存退出后,再输入以下命令保证生效:
source ~/.bashrc
这样,交叉编译工具链就搭建完成了!
用交叉编译工具链把main.c文件编译一下(在code文件夹中打开终端):
loongarch64-linux-gnu-gcc main.c -o main
查看文件属性,发现Ubuntu系统不认识龙芯架构(loongarch),这个不影响,不过这也间接说明我们交叉编译成功啦!
五、MobalXterm软件的使用
接着,我们将交叉编译好的main文件传到久久派去使用。
先将编译好的main文件复制粘贴到Windows桌面上;
接下来,我们要用到MobalXterm这个软件来连接我们的久久派开发板。
我选用的是网线直连电脑方案让久久派串口及网线连接(如果是交换机连接方案,去看开头我贴的零炻佬的视频)。首先,我们需要准备一根网线,一个USB转TTL,杜邦线若干。如果你的电脑不能直接插网线,你还需要准备一个USB网线转接口。
这是久久派IO口定义表,我给你们贴出来了,其实久久派开发板的背面也有丝印。
准备四根杜邦线,USB转TTL上的TXD接久久派上的RXD,也就是四号引脚;RXD接TXD(6号引脚);GND接GND(1/19/20/29);5V接5V(30号引脚);(也可以3.3V接3.3V,然后板子上预留的type-c口接5V)反正给久久派供上电后久久派只有两颗灯亮就是正确的。
像这样:
下面,我们来进行网路连接。
打开控制面板,跟着我的步骤来:
- 进入网络和Internet
- 进入网络和共享中心
- 点击本电脑连接的网络
- 点击属性
- 点击共享
- 勾选允许其他网络用户通过此计算机的Internet连接来连接(若已经勾选,取消勾选,点击确定,再重新勾选一下)
- 点击详细信息,看到IPv4地址为192.168开头
- 退出,点击以太网,点击详细信息,看到IPv4地址也为192.168开头,并且下图的已接收不是0说明共享完成
如果是交换机连接,还是去看零炻佬的视频。
下载MobalXterm:
通过网盘分享的文件:MobaXterm_Portable_v24.3.zip
链接: https://pan.baidu.com/s/10RYsNzUZFbJQ0vPV4-aahA?pwd=yeh7 提取码: yeh7
–来自百度网盘超级会员v2的分享
现在,打开MobalXterm:
- 点击左上角的Session
- 点击Sreial
- 按照下图所示来新建串口
- 点击OK即可(如果进入的界面不是下图所示,重新来一遍上述步骤)
- 输入root,就可以登录到开发板里面了。
- 输入ifconfig,就可以看到板子现在的ip地址。
- 再点击Session,点击 SSH
- 按照下图所示来配置:
- 点击OK即可。
- 将之前粘贴到桌面上的main文件拖到文件树里
- 输入以下命令:
chmod 777 main
./main
我们完成了将一个C语言文件交叉编译后放到久久派开发板里去运行!
六、内核编译
pmon非特殊情况不要修改它。
这里给i佬的内核源码:
通过网盘分享的文件:LS2K0300-linux-4.19-main.zip
链接: https://pan.baidu.com/s/1eW-6aD2B3qUNsFg2QJIrPg?pwd=ywx9 提取码: ywx9
–来自百度网盘超级会员v2的分享
小提示:zip后缀的压缩包解压命令:unzip (某压缩包)
还是将文件复制粘贴到虚拟机桌面上;
输入以下命令进行编译内核的依赖库安装:
sudo apt-get update
sudo apt-get install libncurses5-dev #用于配置界面
sudo apt-get install libssl-dev
sudo apt-get install build-essential #包含编译工具集
sudo apt-get install flex #用于处理 lex 的语法分析
sudo apt-get install bison #用于处理 yacc 的语法分析
sudo apt-get install openssl
接着打开内核源码的文件夹,打开终端,输入以下命令:
- cp arch/loongarch/configs/loongson_2k300_defconfig .config #采用2k300的配置文件
- sudo apt-get install make
- make menuconfig ARCH=loongarch
- 进入界面后按照下图打开一下USB摄像头:(按y键或空格键变“ * ”号,按上下键移动光标,左右键移动最下面的选项)
- 别急着退出,在Device Drivers目录下打开Pulse-Width Modulation(PWM)Support,把最后两个选上
- sudo make vmlinuz ARCH=loongarch CROSS_COMPILE=/opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.4/bin/loongarch64-linux-gnu- -j 4
- vim ./cmd.sh 把路径换成自己的交叉编译工具链路径
- ./cmd.sh
注意:如果大家想要加上adc的功能,也需要在内核里添加文件,这里贴上龙邱的视频教程:20届智能车竞赛|龙芯久久派学习教程九( ADC功能)
内核编译完成!
记得把编译好的vmlinuz文件拖mobalxterm里!
然后输入以下指令确保新的内核生效:
- sync #确保所有数据都已安全写入磁盘
- reboot #重启系统以使新的配置或软件生效
我遇到的几个问题记录:
- loongarch64-linux-gnu- -j 4命令找不到,是因为交叉编译工具链的路径没设置对
- 找不到vmlinuz,是因为没有在内核源码文件夹里打开终端
- 报错:
把 #include </dt-bindings/pinctrl/ls2k300-pinfunc.h>路径改完整:#include </home/jomii/Desktop/LS2K0300-linux-4.19-main/include//dt-bindings/pinctrl/ls2k300-pinfunc.h>
七、为久久派交叉编译opencv并安装
首先还是将最新版的源代码下载下来并复制粘贴到虚拟机上,大家自行去opencv官网上下载。
进入解压完成的文件夹内,创建一个新的文件夹,把它命名为loongson;进入此文件夹,安装需要用的工具以及安装环境依赖:
mkdir loongson
cd loongson
sudo apt-get install cmake
sudo apt-get install cmake-qt-gui
sudo apt-get install cmake-curses-gui
sudo apt-get install build-essential
sudo apt-get install libopenblas-dev
sudo apt-get install git
sudo apt-get install pkg-config
sudo apt-get install libavcodec-dev
sudo apt-get install libavformat-dev
sudo apt-get install libswscale-dev
sudo apt-get install python-dev
sudo apt-get install python-numpy
sudo apt-get install libtbb2
sudo apt-get install libtbb-dev
sudo apt-get install libjpeg-dev
sudo apt-get install libpng-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libdc1394-22-dev
sudo apt-get install libv4l-dev
sudo apt-get install liblapacke-dev
sudo apt-get install libopencv-dev
如果大家还需要安装其他的,可以自行去浏览这篇文章:嵌入式linux学习之opencv交叉编译/移植并使用CmakeList编译demo
输入 cmake-gui . . 命令进入cmake界面:
- 点击左下角configure
- 勾选最后一个,点击next
- 根据下图进行填充:(小提示:第二个框里的C和C++文件的路径在你存放交叉编译工具链的文件里)
上图中右上角的路径别忘了
4. 点击finish,接着右上角的Advanced勾选上,再点击旁边的Add Entry添加一个配置文件:
手动输入OPENCV_ENABLE_PKG_CONFIG
5. 再次点击configure
6. 找到PKG_CONFIG_EXECUTABLE,把后面的路径改成这样:/usr/share/pkg-config
7. 配置完成,输入make -jn就可以进行编译了(n取决于你有几个核心,我的是make -j2)
8. 执行make install命令,接着打开loongson文件夹,里面的install文件夹就是要复制粘贴到mobalxterm里的
9. 打开mobalxterm,创建opencv文件夹,把install里面的四个文件夹复制粘贴过去。
10. 接着跟着我的步骤输入以下命令:
- cd /etc/
- mkdir ld.so.conf.d
- cd ld.so.conf.d
- touch opencv.conf
- vi opencv.conf
- 输入/home/root/opencv/lib
- ldconfig
没有报错就说明编译成功!
小提示:如果第8步install文件夹复制粘贴不了,可以先将其压缩一下,命令:
tar -czvf install.tar.gz /home/jomii/Desktop/opencv/opencv-4.11.0/loongson
至此,前期安装与搭建环境部分就完成啦!
硬件部分
大家可以去龙邱或者逐飞微信公众号看看必须要买的模块,如USB摄像头、编码器等等。
双驱、拓展板等需要自制,纯小白的话大家可以去b站上看看嘉立创或者ad的使用教程,学习画电路板。
结构部分需要学一学solidworks。
软件部分
一、安装VSCcode
通过网盘分享的文件:code_1.90.2-1718751586_amd64.deb
链接: https://pan.baidu.com/s/1z5qgeg8M45RjEWyv7ulJyQ?pwd=icwm 提取码: icwm
–来自百度网盘超级会员v2的分享
复制粘贴到虚拟机桌面上后打开终端输入以下命令进行安装:
sudo dpkg -i code_1.90.2-1718751586_amd64.deb
从终端启用vscode,输入code命令即可。
如何使用中文输入法?
跟着以下步骤来:
- 打开左下角的应用程序菜单,找到setting(设置),点击Region&Language,点击Manage Installed Languages
- 如果弹出下面这个窗口,单击窗口中的 Install,然后等待安装完毕
- 点击Install/Remove Languages… ,勾选Chinese(simplified),点击Apply,稍等安装完成
- 点击close,重启虚拟机,接着点击“+”,找到Chinese并点击
- 点击第一个选项,点击右上角的ADD
- 中文输入法就添加完成啦,切换中英文:Win+Space(空格)
二、如何把自己写的多个文件一起交叉编译
那么之前说的loongarch64-linux-gnu-gcc main.c -o main这个指令,只适用于编译一个文件,那么要编译多个文件,就需要其他指令了。
那么这里拿我的给大家举例子:
在写完所有代码之后,在build(一般用于存放项目构建过程中生成的各种文件的目录)目录下打开终端,输入以下指令:
- rm -rf * # 删除上一次执行完后产生的指令
- cmake -DCMAKE_TOOLCHAIN_FILE=…/cross.cmake … #配置编译环境,并生成相应的构建文件(都是两个点!不知道为什么变成三个点了)
- make #生成可执行文件
执行完上述指令后,会生成一个交叉编译好的文件,将其复制粘贴到Windows桌面上,并拖到mobalxterm里;接着和之前一样,
chmod 0777 FILE
./FILE
就可以运行程序啦!
那么前面给大家的说的是有线连接久久派,但是在调试小车的时候,会非常的不方便。所以大家要配置一下无线WiFi,这样车车就可以自己跑了,而不是拖着电脑一起跑。
龙邱科技非常贴心的出了教程,比我之前摸索出来的简单多了,这里贴上视频链接:
20届智能车竞赛|龙芯久久派学习教程十七(开机自启动WIFI以及连接ssh)
最后
个人认为今年的极速光电龙芯组别,在前期配置完环境后,与前几届的镜头组其实很相似,网上图像处理开源的代码有很多,视频教程也很多,大佬们讲的都很好很详细,我在这里就不班门弄斧了。
预祝各位车友都能取得好成绩!
不过看了我的文章,佬们在赛场上就不能薄纱我了呦~