1. 久久派开发板与Linux生态初探
第一次拿到久久派开发板时,我注意到包装盒上那个醒目的龙芯LOGO。作为国产处理器的代表作品,这块搭载龙芯2K1000LA处理器的开发板,与常见的ARM架构开发环境有着显著差异。它的MIPS64架构意味着我们需要重新审视许多在x86环境下习以为常的操作方式。
开发板启动后,我习惯性地输入uname -a查看系统信息,输出中的mips64字样提醒我这将是一次特别的Linux之旅。久久派预装了基于Debian的定制系统,这个选择很明智——Debian庞大的软件仓库能大大降低后续软件安装的难度。不过当我尝试用apt安装一些常用工具时,发现部分软件包确实没有预编译的MIPS版本,这预示着我们后续可能需要频繁接触交叉编译。
经验分享:在龙芯设备上,建议优先使用
apt search命令查找软件包,很多常用工具其实都有MIPS架构的预编译版本,比如vim、git等基础工具都可以直接安装。
2. 开发环境搭建实战
2.1 本地开发环境配置
在久久派本机上开发是最直接的方式。我首先通过apt update && apt upgrade更新系统,然后安装基础开发工具链:
bash复制sudo apt install build-essential git make cmake
一个有趣的发现是,龙芯的GCC编译器默认使用loongarch64作为目标架构标识,而不是常见的mips64。这在使用-march=native编译选项时需要特别注意。编译简单的Hello World程序测试时:
c复制// test.c
#include <stdio.h>
int main() {
printf("LoongArch says hello!\n");
return 0;
}
使用以下命令编译:
bash复制gcc test.c -o test -march=native
通过file test查看可执行文件,会发现显示为ELF 64-bit LSB executable, LoongArch,这与其他架构的Linux系统有明显区别。
2.2 交叉编译环境搭建
当需要在x86主机上为久久派开发程序时,交叉编译就成为必备技能。龙芯官方提供了完整的交叉编译工具链,安装步骤如下:
- 下载工具链(以ubuntu-host为例):
bash复制wget https://mirrors.loongnix.cn/toolchain/gcc/release/loongarch64-clfs-7.3-cross-tools-gcc-glibc.tar.xz
- 解压到/opt目录:
bash复制sudo tar -xvf loongarch64-clfs-7.3-cross-tools-gcc-glibc.tar.xz -C /opt
- 设置环境变量:
bash复制export PATH=/opt/cross-tools/bin:$PATH
export CC=loongarch64-unknown-linux-gnu-gcc
验证交叉编译是否正常工作:
bash复制loongarch64-unknown-linux-gnu-gcc --version
避坑指南:交叉编译时常见的segmentation fault错误往往是因为动态链接库路径不正确。可以通过
-static选项静态编译,或者使用-Wl,-rpath=指定运行时库路径。
3. Linux内核深度探索
3.1 获取与配置内核源码
久久派使用的Linux内核源码可以从龙芯官方Git仓库获取:
bash复制git clone https://github.com/loongson/linux.git
cd linux
git checkout loongarch-next
配置内核时,我发现龙芯架构有自己特有的配置选项。推荐使用以下命令生成基础配置:
bash复制make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- defconfig
对于需要GUI界面调整配置的情况,可以使用:
bash复制make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- menuconfig
在菜单配置界面中,需要特别关注以下选项:
- CPU类型选择(Loongson-2K1000)
- 浮点运算单元支持
- 特定外设驱动(如板载网卡、USB控制器等)
3.2 内核编译与安装
编译命令与常规Linux内核类似,但需要指定ARCH参数:
bash复制make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- -j$(nproc)
编译完成后,关键文件位于:
arch/loongarch/boot/目录下的vmlinuz(压缩内核映像)- 各模块文件分散在各目录的.ko文件
安装内核模块到指定目录:
bash复制make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- INSTALL_MOD_PATH=/path/to/rootfs modules_install
技术细节:龙芯内核使用与x86不同的引导方式。需要将vmlinuz与initrd组合使用,并通过U-Boot的bootm命令加载,而不是x86常见的grub引导。
4. 系统级应用开发实践
4.1 基础服务部署
在久久派上部署Docker遇到了些挑战,因为官方Docker引擎没有提供MIPS架构的二进制包。替代方案是使用podman:
bash复制sudo apt install podman
podman run --rm hello-world
对于数据库服务,MySQL有官方MIPS版本,但MariaDB的兼容性更好:
bash复制sudo apt install mariadb-server
sudo systemctl start mariadb
4.2 多媒体应用开发
测试视频播放功能时,我编译了针对龙芯优化的mplayer:
bash复制sudo apt install mplayer
mplayer -vo fbdev2 -fs /path/to/video.mp4
对于更现代的解决方案,可以尝试编译mpv播放器:
bash复制sudo apt build-dep mpv
git clone https://github.com/mpv-player/mpv.git
cd mpv
./bootstrap.py
./waf configure --prefix=/usr/local
./waf build -j4
sudo ./waf install
4.3 图形界面应用
在龙芯架构上运行Qt应用需要重新编译Qt库。以Qt5为例:
bash复制git clone https://github.com/qt/qt5.git
cd qt5
./init-repository --module-subset=qtbase
./configure -platform linux-g++ -xplatform linux-loongarch64-g++ \
-device-option CROSS_COMPILE=loongarch64-unknown-linux-gnu- \
-sysroot /path/to/sysroot
make -j$(nproc)
sudo make install
编译应用时需要使用qmake指定目标平台:
bash复制/path/to/qt5/qtbase/bin/qmake -makefile
make
5. 性能调优与问题排查
5.1 系统监控工具
龙芯平台上有一些特殊的性能监控工具。除了常规的top、htop外,还可以使用:
bash复制sudo apt install loongson-tools
lscpu -e # 查看CPU详细信息
lstopo # 显示系统拓扑结构
5.2 常见问题解决
串口通信数据丢失是嵌入式Linux常见问题。解决方法包括:
- 调整串口波特率:
bash复制stty -F /dev/ttyS0 115200
- 修改内核驱动缓冲区大小:
c复制// 在内核源码中修改
#define UART_XMIT_SIZE 4096
- 使用DMA传输模式(如果硬件支持)
5.3 性能优化技巧
针对龙芯架构的GCC编译优化选项:
bash复制gcc -O2 -march=loongarch64 -mtune=loongarch64 -pipe -fomit-frame-pointer
对于计算密集型应用,可以启用LSX向量指令集:
bash复制gcc -O3 -march=loongarch64 -mlsx -funroll-loops
内存对齐方面,龙芯架构对非对齐访问的性能影响较大,建议在结构体定义时使用:
c复制struct __attribute__((aligned(16))) my_struct {
// 成员变量
};
在久久派上开发这一段时间,最大的体会是国产平台与主流x86/ARM生态的差异需要开发者保持开放和学习的心态。每次解决一个兼容性问题,都能发现龙芯平台的独特设计哲学。建议初学者从简单的应用移植开始,逐步深入到底层系统开发,这样能更好地理解整个技术栈的运作机制。
