龙芯2k0301 - 龙邱核心板开发环境搭建
最近,打算参加第21届全国智能汽车竞赛走马观碑组,在《第21届智能汽车竞赛走马观碑》我们介绍了竞赛规则、以及硬件、软件设计方案,在硬件设计方案中我们选用了龙邱科技2K0301核心板。
本节主要针对核心板硬件资源以及开发环境搭建进行详细介绍。
一、介绍
1.1 硬件特性
1.1.1 龙芯2K0301
龙芯2K0301这颗芯片,它是一颗专为工业控制和物联网设计的高能效低功耗处理器。
1.1.1.1 CPU
2个 龙芯LA264处理器核,主频1.0GHz;
1.1.1.2 Memory
16位DDR2/DDR3控制器,最高速率1333MHz,支持最大2GB DDR3内存。
1.1.1.3 AI支持
没有像瑞芯微RK3588那样内置独立的NPU,但它仍然具备一定的AI处理能力。
| 参数 | 规格 | 解读 |
|---|---|---|
| 向量加速 | 内置128位向量单元 | 这是它处理AI任务的关键。向量单元可以加速SIMD(单指令多数据流)运算,对于卷积神经网络中的矩阵乘法等操作,比纯CPU快很多。 |
| AI框架支持 | 支持 NCNN、Tengine、ONNX Runtime 等 | 官方和社区正在将主流的端侧推理引擎移植到LoongArch架构上。 这意味着你可以先在电脑上训练好模型(如NanoDet),然后通过NCNN等工具转换,部署到2K0301上,利用它的向量单元进行加速推理。 |
| 实际推理能力 | 预计能实时运行轻量级模型 | 参考类似规格的芯片(如Cortex-A53 1.0GHz),2K0301处理 320x320 输入的 NanoDet 模型,帧率预计可以达到 10-20 FPS 左右。对于车模控制来说,这个速度基本够用,但需要做好代码优化。 |
1.1.1.4 外设接口
| 接口类型 | 数量/规格 | 在“走马观碑”组中的可能用途 |
|---|---|---|
| USB 2.0 | 2路(1路HOST,1路OTG) | HOST 接USB摄像头; OTG 可配置为HOST接调试设备,或配置为Device用于烧录系统(Type-C口)。 |
| 以太网 MAC | 1个,支持10/100/1000Mbps | 千兆网口是调试利器。通过SSH连接,传输文件、远程调试比串口快得多。 |
| GPIO | 大量多功能引脚 | 用于连接编码器、舵机PWM控制信号、电机驱动方向信号等。 |
| PWM | 多路 | 用于控制舵机角度和电机转速。需要在Linux下通过设备树配置并操作/sys/class/pwm接口。 |
| I2C | 至少2路 | 连接MPU6050陀螺仪、VL53测距模块(如果用I2C版本)、ST7789屏幕(如果用I2C控制,但它是SPI屏)。 |
| SPI | 至少2路 | 连接ST7789屏幕(SPI模式)、VL53测距模块(如果用SPI版本)、可能的SD卡槽等。 |
| UART | 至少2路 | 一路用于控制台调试(接USB转TTL),一路可接蓝牙模块用于无线调试。 |
| ADC | 8通道,10位 | 可用于检测电池电压,或连接简单的模拟量传感器(如灰度传感器)。 |
| CAN | 2路 | 比赛中可能用不上,但这是工业控制常用接口。 |
| SDIO | 1路 | 可用于连接SD卡扩展存储,用于存放模型文件或录制调试数据。 |
1.1.1.5 指令集
LoongArch:龙芯自主指令集架构,这意味着它不是ARM,也不是x86。
1.1.2 板载外设
RAM: 512MB;
Flash: 8或16M SPI Flash和8G eMMc;
WiFi:板载WiFi模块;
USB-A: 一个USB 2.0 Type-A接口;
USB-C: 一个USB 2.0 Type‑C接口;
供电电源: DC 5A;
以及大量引脚。
1.2 接口布局
下面是我购买的2K0301核心板的正面外形,从PCB上我们可以看到这个板子上的电气元件的密度是非常大的:
1.2.1 引脚定义
核心板将大量引脚印出来:
1.2.2 串口调试引脚定义
二、开发环境搭建
2.1 VMware安装
对于VMware安装可以参考《嵌入式Linux开发环境搭建》,该博客中提供的VMware 已经过期,新版本的下载地址:VMware Pro 17。
2.2 ubuntu安装以及配置
对于ubuntu安装可以参考《嵌入式Linux开发环境搭建》,这里可以安装Ubuntu 22.04.5 LTS,安装完成后进入虚拟机查看版本信息;
hengyang@ubuntu:~/桌面$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
2.2.1 网咯设置
WMware网络设置支持三种模式:
bridged(桥接模式):虚拟机能得到一个独立IP地址,网络能提供多个IP地址;虚拟机可以访问外部网络,外部网络也可以访问虚拟机;NAT(网络地址转换模式) : 如果网络中只提供一个IP地址,虚拟机和主机使用一个IP地址;虚拟机可以外部网络,但是外部网络访问不了虚拟机;- 主机模式 (主机没有联网):相当于把主机和虚拟机通过一根网线连接在一起;

之前我们在安装ubuntu的时候选择了桥接模式,需要确保如下配置正确:
- 打开
VMware→ 点击菜单栏编辑 → 虚拟网络编辑器; - 在弹出的窗口中,找到VMnet0,确保它设置为桥接模式;
- 在桥接到下拉框中,手动选择你正在使用的物理网卡(根据你之前的
ipconfig,应该选择有线网卡,如Realtek PCIe GbE Family Controller); - 如果
VMnet0不在列表中,可以点击右下角的 “更改设置”(需要管理员权限),然后点击“还原默认设置”来恢复。
我们需要设置ubuntu和主机在同一网段内,由于我的windows操作系统的IP为172.23.34.186:
C:\Users\zhengyang>ipconfig
Windows IP 配置
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::43b3:b450:a09b:8c8d%16
IPv4 地址 . . . . . . . . . . . . : 172.23.34.186
子网掩码 . . . . . . . . . . . . : 255.255.128.0
默认网关. . . . . . . . . . . . . : 172.23.0.1
查看ubuntu的网络配置:
zhengyang@ubuntu:~/桌面$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::eb89:d648:fbc9:91b0 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:79:69:69 txqueuelen 1000 (以太网)
RX packets 3460 bytes 563979 (563.9 KB)
RX errors 0 dropped 21 overruns 0 frame 0
TX packets 210 bytes 15145 (15.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19 base 0x2000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (本地环回)
RX packets 274 bytes 27156 (27.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 274 bytes 27156 (27.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可以看到,本例中的网卡为ens33,同时可以看到相应的IP信息等。
可以看到虚拟机和宿主机不在一个网段,这里我们直接进入ubuntu桌面,点击左下角设置,选中网络,修改IpV4信息确保在一个网段;
此时宿主机(172.23.34.186)和虚拟机(172.23.34.187)网络应该是可以互相ping:
如果网络宿主机和虚拟机网络不通,请检查防火墙是否关闭。
此时我们就可以通过MobaXterm工具远程登录ubuntu虚拟机;
2.2.2 安装依赖
首先更新软件源:
zhengyang@ubuntu:~$ sudo apt update
安装一些依赖库,编译内核时可能会用到:
zhengyang@ubuntu:~$ sudo apt install make gcc flex bison libssl-dev bc libncurses-dev
2.2.3 安装cmake
CMake是一个跨平台的构建工具,其支持程度要好于qmake。CMake的配置更加灵活、强大,也更容易维护。CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。
如果编译安装可以参考:《CMake安装》,但是这种方式一般比较复杂。这里直接使用apt命令安装;
zhengyang@ubuntu:~$ sudo apt install cmake
zhengyang@ubuntu:~$ cmake -version
cmake version 3.22.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
2.2.4 安装git
zhengyang@ubuntu:~$ sudo apt install git
2.2.5 安装VS Code
Visual Studio code,简称VS Code,是微软在2015年推出的一个轻量但功能强大的源代码编辑器,支持 windows、Linux和 mac os操作系统,扩展组件非常丰富,可以快速搭建成为项目开发的神兵利器。
我们从官方网站下载deb安装包,注意这里我下载的是X86架构,我们创建一个目录,将其拷贝到目录:
zhengyang@ubuntu:/opt$ sudo mkdir 2k0301
zhengyang@ubuntu:/opt$ sudo chmod -R 777 ./2k0301/
zhengyang@ubuntu:/opt$ ll ./2k0301/
-rw-rw-r-- 1 zhengyang zhengyang 121978886 3月 18 21:42 code_1.111.0-1772846623_amd64.deb
运行如下命令安装:
zhengyang@ubuntu:/opt$ cd ./2k0301/
zhengyang@ubuntu:/opt/2k0301$ sudo dpkg -i code_1.111.0-1772846623_amd64.deb
安装完成后我们可以通过左下角的菜单找到Visual Studio code,双击打开;
为了便于后续的开发与调试,我们安装一系列插件,无限扩展VS Code的功能。
C/C++ # 运行编译C/C++程序
C/C++ Snippets # C/C++重用代码块
C/C++ Advanced Lint # C/C++静态检测
Code Runner # 代码运行
Include AutoComplete # 自动头文件包含
Markdown All in One # 提供增强的Markdown支持
GitHub Copilot # 安装AI编程助手
CMake # 支持CMake语法,完整的构建、调试、项目管理;
Rainbow Brackets # 彩虹花括号,有助于阅读代码
GBKtoUTF8 # 将 GBK 转换为 UTF8#
C/C++ Project Generator # 工程相关
Chinese(Simplified) # 中文环境
vscode-icons # Vscode图标插件,主要是资源管理器下各个文件夹的图标
compareit # 比较插件,可以用于比较两个文件的差异
DeviceTree # 设备树语法插件
2.3 安装交叉编译环境
由于x86和LoongArch架构最底层的指令集不同,所以两个平台的程序不能通用,需要分开编译,编译的工具链是不一样。
由于我们日常的开发习惯,LoongArch架构的计算机资源等等因素,我们通常会在x86架构的平台上编写代码并编译然后放到ARM上运行。 所以就需要搭建交叉编译环境。
什么是交叉编译环境呢?简单点说就是在一个架构的处理器上能编译在另一个架构上运行的程序的环境。 再简单点来说,就是在x86架构下安装LoongArch的编译工具。
交叉编译工具下载地址:《https://www.loongnix.cn/zh/toolchain/GNU/》,这里我们下载1.3-1版本,将下载的编译工具拷贝到/opt/2k0301目录;
zhengyang@ubuntu:/opt/2k0301$ ls -l
-rw-rw-r-- 1 zhengyang zhengyang 121978886 3月 18 21:42 code_1.111.0-1772846623_amd64.deb
-rw-rw-r-- 1 zhengyang zhengyang 31880964 3月 18 21:53 loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1.tar.xz
2.3.1 解压
解压交叉编译工具链,放置到/opt目录下,也可自己指定解压目录;
zhengyang@ubuntu:/opt/2k0301$ sudo tar -xvf loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1.tar.xz -C /opt
zhengyang@ubuntu:/opt/2k0301$ ll /opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1/
drwxr-xr-x 2 root root 4096 4月 25 2024 bin/
drwxr-xr-x 3 root root 4096 4月 25 2024 include/
drwxr-xr-x 3 root root 4096 4月 25 2024 lib/
drwxr-xr-x 3 root root 4096 4月 25 2024 libexec/
drwxr-xr-x 6 root root 4096 4月 25 2024 loongarch64-linux-gnu/
drwxr-xr-x 5 root root 4096 4月 25 2024 share/
-rw-r--r-- 1 root root 332 4月 25 2024 versions
2.3.2 配置环境变量
配置环境变量:
zhengyang@ubuntu:/opt/2k0301$ sudo vim /etc/profile
打开prifile文件后,在最后添加:
#设置交叉编译工具链
export PATH=$PATH:/opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1/bin/
#设置系统架构
export ARCH=loongarch64
#设置交叉编译工具前缀
export CROSS_COMPILE=loongarch64-linux-gnu-
执行如下命令使配置生效:
zhengyang@ubuntu:/opt/2k0301$ source /etc/profile
测试:
zhengyang@ubuntu:/opt/2k0301$ echo $ARCH
loongarch64
zhengyang@ubuntu:/opt/2k0301$ echo $CROSS_COMPILE
loongarch64-linux-gnu-
zhengyang@ubuntu:/opt/2k0301$ loongarch64-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=loongarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1/bin/../libexec/gcc/loongarch64-linux-gnu/8.3.0/lto-wrapper
Target: loongarch64-linux-gnu
Configured with: /dev/shm/build-loongarch64-linux-gnu-x86_64-gcc8-rc1.3-1-20240425/src/gcc/configure CC='/dev/shm/build-loongarch64-linux-gnu-x86_64-gcc8-rc1.3-1-20240425/build-cross-host/root/usr/bin/x86_64-linux-gnu-gcc -I/dev/shm/build-loongarch64-linux-gnu-x86_64-gcc8-rc1.3-1-20240425/build-lib-host/root/usr/include' CXX='/dev/shm/build-loongarch64-linux-gnu-x86_64-gcc8-rc1.3-1-20240425/build-cross-host/root/usr/bin/x86_64-linux-gnu-g++ -I/dev/shm/build-loongarch64-linux-gnu-x86_64-gcc8-rc1.3-1-20240425/build-lib-host/root/usr/include' LDFLAGS=' -static-libstdc++ -static-libgcc -L/dev/shm/build-loongarch64-linux-gnu-x86_64-gcc8-rc1.3-1-20240425/build-lib-host/root/usr/lib/../lib' CC_FOR_TARGET=: --build=x86_64-pc-linux-gnu --host=x86_64-linux-gnu --target=loongarch64-linux-gnu --prefix=/dev/shm/build-loongarch64-linux-gnu-x86_64-gcc8-rc1.3-1-20240425/build-canadian/root/usr --with-sysroot=/dev/shm/build-loongarch64-linux-gnu-x86_64-gcc8-rc1.3-1-20240425/build-canadian/root/usr/loongarch64-linux-gnu/sysroot --with-native-system-header-dir=/usr/include --with-gxx-include-dir=/dev/shm/build-loongarch64-linux-gnu-x86_64-gcc8-rc1.3-1-20240425/build-canadian/root/usr/loongarch64-linux-gnu/sysroot/usr/include/c++/8.3.0 --enable-languages=c,c++,fortran --with-build-sysroot= --disable-libstdcxx --disable-libgfortran --disable-libphobos --disable-libgomp --enable-libcc1 --enable-threads=posix --enable-__cxa_atexit --enable-initfini-array --disable-nls --disable-libmpx --disable-bootstrap --with-arch=loongarch64 --with-abi=lp64d --with-multilib-list=lp64d,lp64s --enable-checking=release --with-pkgversion='LoongArch GNU toolchain rc1.3-1 (20240425)'
Thread model: posix
gcc version 8.3.0 (LoongArch GNU toolchain rc1.3-1 (20240425))
2.4 编译内核
2.4.1 源码下载
2.4.2 编译内核
2.5 编译移植OpenCV
参考《opencv安装及配置》安装opencv 4.9版本。
参考文章
[1] Rockchip RK3399 - NanoPC-T4开发板介绍

浙公网安备 33010602011771号