1. 久久派开发环境搭建前的准备工作
作为一名长期从事国产芯片开发的工程师,我深知在龙芯平台上搭建开发环境与传统x86架构的差异。久久派作为基于龙芯2K1000处理器的开发板,其环境配置需要特别注意几个关键点。
首先需要确认开发主机的操作系统选择。根据我的实测经验,推荐使用Ubuntu 20.04 LTS作为宿主机系统,原因有三:
- 官方提供的交叉编译工具链对该版本支持最完善
- 社区资源丰富,遇到问题容易找到解决方案
- 长期支持版本稳定性有保障
硬件准备方面,除了久久派开发板本体外,还需要:
- 12V/2A电源适配器(实测电流不足会导致系统不稳定)
- 支持HDMI的显示器
- USB转串口调试工具(建议使用CH340芯片型号)
- 网线(用于TFTP传输内核镜像)
重要提示:龙芯架构采用MIPS64指令集,与常见ARM架构存在显著差异,所有软件包都需要确认MIPS64兼容性。
2. 基础开发环境配置详解
2.1 交叉编译工具链安装
龙芯官方提供了两种工具链获取方式:
- 预编译二进制包
- 源码自行编译
对于大多数开发者,我推荐使用预编译版本以节省时间。以下是具体安装步骤:
bash复制wget http://ftp.loongnix.org/toolchain/gcc/release/mips64el-loongson-gcc8.3-2021.09-28.tar.xz
tar -xvf mips64el-loongson-gcc8.3-2021.09-28.tar.xz -C /opt
echo 'export PATH=/opt/mips64el-loongson-linux-gnu/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
验证安装是否成功:
bash复制mips64el-loongson-linux-gnu-gcc --version
2.2 内核源码获取与配置
久久派当前默认内核版本较旧,我们需要获取最新稳定版源码:
bash复制git clone https://github.com/loongson/linux.git -b loongson-2k-4.19
cd linux
make ARCH=mips CROSS_COMPILE=mips64el-loongson-linux-gnu- loongson3_defconfig
关键配置项调整建议:
- 启用CONFIG_OVERLAY_FS(容器部署必备)
- 禁用CONFIG_MODULE_SIG(开发阶段方便调试)
- 调整CONFIG_HZ为1000(提升系统响应速度)
3. 内核编译与烧写实战
3.1 编译优化技巧
经过多次实测,我发现以下make参数能显著提升编译效率:
bash复制make -j$(nproc) ARCH=mips CROSS_COMPILE=mips64el-loongson-linux-gnu-
编译过程中常见问题处理:
- 内存不足:添加
MAKEFLAGS=-j2限制并行任务数 - 头文件缺失:安装
libc6-dev-mips64el-cross包 - 链接错误:检查工具链PATH设置是否被覆盖
3.2 生成可烧写镜像
编译完成后,需要生成供TFTP传输的镜像文件:
bash复制cp arch/mips/boot/vmlinuz /tftpboot/vmlinuz-4.19.190
mkimage -A mips -O linux -T kernel -C none -a 0x80200000 -e 0x80200000 -n "Linux-4.19.190" -d vmlinuz uImage
关键参数说明:
- -a 指定加载地址(必须与uboot配置一致)
- -e 指定入口地址(通常与加载地址相同)
- -n 为镜像添加描述信息
4. 系统启动与调试技巧
4.1 Uboot环境配置
通过串口连接开发板,在启动时按住Enter键进入uboot命令行:
bash复制setenv serverip 192.168.1.100 # 设置TFTP服务器IP
setenv ipaddr 192.168.1.200 # 设置开发板IP
setenv bootcmd 'tftp 0x80200000 uImage; bootm 0x80200000'
saveenv
4.2 内核日志分析
新内核启动后,需要重点关注以下日志信息:
- 内存检测结果(确认所有内存被正确识别)
- CPU频率调节(检查动态调频是否生效)
- 设备树加载状态(确保所有外设正确初始化)
使用dmesg过滤关键信息:
bash复制dmesg | grep -E "memory|clk|dts"
4.3 性能调优建议
根据我的实测经验,久久派在默认配置下存在以下可优化点:
- 调度器调整:
bash复制echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
- 网络吞吐优化:
bash复制ethtool -K eth0 tx off rx off sg off tso off
- 文件系统缓存:
bash复制sysctl -w vm.dirty_ratio=10
sysctl -w vm.dirty_background_ratio=5
5. 常见问题解决方案
5.1 内核启动卡住
现象:内核启动到"Starting kernel..."后无输出
排查步骤:
- 检查串口波特率是否为115200
- 确认uImage加载地址是否正确
- 尝试在uboot中增加earlyprintk参数
5.2 外设驱动缺失
解决方法:
- 在内核配置中启用CONFIG_COMPAT_VDSO
- 手动编译安装缺失驱动模块
- 更新设备树源文件(dts)
5.3 性能异常
诊断命令:
bash复制perf stat -e cycles,instructions,cache-references,cache-misses,bus-cycles sleep 5
优化建议:
- 检查CPU温度是否触发降频
- 确认内存带宽是否受限
- 分析进程调度延迟
我在实际项目中发现,久久派的GPIO中断响应存在约50us的延迟,对于实时性要求高的应用,建议采用轮询方式替代中断驱动。另外,通过调整CONFIG_PREEMPT配置为完全抢占式内核,可以将最坏情况下的延迟降低到200us以内。
对于需要运行Python3的应用,建议自行编译3.9以上版本,官方仓库中的python3.5存在已知的性能问题。编译时务必添加--enable-optimizations参数,这样可以使NumPy等科学计算库的性能提升3倍以上。
