Lichee Nano 荔枝派实战——从零构建一体化开发环境
1. 环境准备打造稳定的开发基石第一次接触Lichee Nano时我最头疼的就是环境配置。官方文档虽然提供了基础指引但就像拼图少了关键几块总让人在操作时卡壳。经过多次实践我总结出一套稳定可靠的配置方案特别适合刚入门的朋友。虚拟机选择上实测VMWare Player确实对USB设备支持最友好。记得有次尝试用VirtualBox结果烧录时总是识别不到设备白白浪费半天时间。Ubuntu版本建议用18.04 LTS比官方推荐的16.04对新硬件兼容性更好。安装时记得勾选OpenSSH server选项后续远程操作会方便很多。系统装好后先别急着操作这几个基础依赖必须装全sudo apt update sudo apt install -y git make gcc bison flex libssl-dev libncurses5-dev有次我偷懒没装libncurses5-dev结果编译内核时menuconfig界面直接报错退出排查了半天才发现是这个包没装。建议把这些基础包装齐后做个虚拟机快照后续出问题可以快速回滚。2. 工具链配置交叉编译的关键交叉编译工具链就像翻译官把我们在x86电脑上写的代码转换成ARM芯片能理解的指令。官方推荐的Linaro 7.2.1版本确实稳定但下载速度可能很慢。这里分享个小技巧先用迅雷等工具下载到Windows再拖进虚拟机。配置环境变量时容易踩的坑是权限问题。有次我按教程修改了/etc/bash.bashrc结果普通用户下死活不生效。后来发现需要先source ~/.bashrc或者直接新开终端窗口。验证是否成功有个更直观的方法arm-linux-gnueabi-gcc --version如果看到类似gcc version 7.2.1的输出就说明配置正确。遇到问题时可以试试用sudo su切换到root账户再验证这能快速判断是否是权限问题。3. 烧录工具安装与硬件对话的桥梁sunxi-tools是连接电脑和开发板的重要工具但编译时经常会遇到libusb报错。除了安装libusb-1.0-0-dev还需要注意sudo apt install pkg-config zlib1g-dev有一次编译失败就是因为漏装了zlib1g-dev错误信息却只提示libusb问题让我走了不少弯路。开发板进入FEL模式有诀窍先按住板上的FEL按钮靠近USB口的小按钮再插入USB线保持按住约3秒。用以下命令检测是否成功sudo sunxi-fel ver看到Allwinner SOC信息就说明进入烧录模式了。如果没反应试试换个USB口或者检查虚拟机USB设备是否正确分配给Ubuntu。4. 源码编译实战从u-boot到内核获取u-boot源码时记得切换nano分支git checkout nano-v2018.01编译配置有个易错点spiflash版和非spiflash版的defconfig文件不同。我第一次编译用的默认配置结果烧录后完全没反应。正确的配置命令是make ARCHarm CROSS_COMPILEarm-linux-gnueabi- licheepi_nano_spiflash_defconfig内核编译更考验耐心建议先修改make的-j参数为CPU线程数。我用的脚本自动处理依赖关系sudo apt install -y libssl-dev bc make ARCHarm CROSS_COMPILEarm-linux-gnueabi- -j4 zImage dtbs modules编译内核模块时out目录要提前创建并设置好权限否则可能报错。整个过程可能需要30分钟到1小时建议在性能较好的机器上操作。5. 文件系统与镜像打包Buildroot制作根文件系统时下载速度慢是常见问题。我找到的解决方案是修改dl镜像源sed -i s/https:\/\/downloads.buildroot.net/http:\/\/mirrors.ustc.edu.cn\/buildroot/g .config打包脚本需要特别注意路径问题。我改良过的脚本会自动检测各组件路径#!/bin/bash check_file() { [ ! -f $1 ] echo 错误: 文件 $1 不存在 exit 1 } check_file u-boot/u-boot-sunxi-with-spl.bin check_file linux/arch/arm/boot/zImage [ ! -d linux/out/lib/modules ] echo 警告: 内核模块目录不存在6. 常见问题排查指南遇到编译错误时首先要看错误信息的最后几行。比如出现fatal error: openssl/xxx.h时需要安装sudo apt install libssl-dev烧录后没反应的情况我总结出三步排查法检查电源指示灯是否亮起用串口查看uboot输出需要USB转TTL工具重新进入FEL模式尝试烧录最让我抓狂的一次经历是spi-flash接触不良症状是时而能烧录时而不能。后来用热风枪轻轻加热芯片才解决。建议新手准备个放大镜经常检查焊点情况。7. 开发效率提升技巧配置git加速能节省大量时间git config --global url.https://ghproxy.com/https://github.com.insteadOf https://github.com我习惯用tmux管理多个会话一个窗口编译内核另一个编辑代码。基础配置如下sudo apt install tmux tmux new -s lichee # Ctrlb % 分割窗口Ctrlb o切换窗口对于频繁使用的长命令可以做成alias放在~/.bashrc里alias lichee-makemake ARCHarm CROSS_COMPILEarm-linux-gnueabi- -j48. 进阶开发环境搭建当基本环境跑通后可以尝试更高效的开发方式。我推荐使用VSCode远程开发配置步骤如下sudo apt install code code --install-extension ms-vscode-remote.vscode-remote-extensionpack调试内核时printk输出不够直观我改用netconsolesetenv ncip 192.168.1.100 setenv serverip 192.168.1.101 setenv bootargs consolettyS0,115200 consoletty0 root/dev/mtdblock2 rootfstypejffs2 rw rootwait init/sbin/init mtdpartsspi32766.0:1M(uboot)ro,64k(dtb)ro,4M(kernel)ro,-(rootfs) loglevel8记得在主机端启动监听nc -lukp 6666