【正点原子Linux连载】第二章 高效开发环境配置:从零搭建RK3568嵌入式Linux双系统工作流
1. Ubuntu系统基础优化配置
刚装好的Ubuntu系统就像刚交房的新家,虽然基础设施都有,但想要住得舒服还得做些个性化调整。我在实际开发中发现,这些基础设置看似简单,却能极大提升后续的开发效率,特别是对于RK3568这样的嵌入式平台开发来说。
1.1 设置root用户权限
很多新手会忽略root用户的重要性,其实在嵌入式开发中,root权限是必不可少的。刚安装的Ubuntu默认禁用了root账户,我们需要手动激活。打开终端(Ctrl+Alt+T),输入以下命令:
sudo passwd root
系统会先让你输入当前用户密码进行验证,然后设置root用户的新密码。这里有个小技巧:不要设置过于简单的密码,但也要确保自己能记住。我一般会使用"嵌入式开发板型号+特殊字符"的组合,比如"RK3568@2024"这样的格式。
设置完成后,你可以使用su -命令切换到root用户环境。不过在日常使用中,我建议还是尽量使用sudo来执行特权命令,这样更安全。只有在进行系统级配置时才切换到root用户。
1.2 更换国内软件源
Ubuntu默认的软件源在国外,下载速度慢得像蜗牛爬。我在最初接触嵌入式开发时,就因为没换源,安装一个软件包等了半个多小时。更换国内源后,下载速度能提升10倍以上。
具体操作步骤:打开"软件和更新"设置,在"下载自"下拉菜单中选择"其他",然后选择国内的镜像源。阿里云、清华大学、中科大的源都很稳定。我个人偏好阿里云源,因为它的同步频率高,软件版本比较新。
换源后别忘了更新软件列表:
sudo apt-get update
sudo apt-get upgrade
这个步骤很重要,能确保你安装的软件都是最新版本。特别是在安装开发工具链时,新版工具往往修复了很多bug,能避免很多莫名其妙的问题。
1.3 关闭自动更新
嵌入式开发环境最需要的是稳定性,而不是最新性。系统自动更新可能会带来不兼容的库文件,导致开发环境出现问题。我就在这上面栽过跟头:一次系统自动更新后,交叉编译工具链突然无法正常工作,排查了半天才发现是某个系统库版本不兼容。
关闭自动更新很简单:在"软件和更新"设置的"更新"标签页中,将"当有更新时"设置为"从不"。不过完全不管更新也不行,我建议每隔一两个月手动检查一次安全更新,只安装那些标记为安全性的更新包。
2. 双系统文件传输方案
在Windows和Ubuntu双系统环境下,文件传输是个高频需求。我尝试过多种方案,最终发现FTP是最稳定高效的。下面分享我的实战经验。
2.1 搭建FTP服务器
在Ubuntu端安装vsftpd服务:
sudo apt-get install vsftpd
安装完成后需要修改配置文件/etc/vsftpd.conf,有几个关键配置项必须设置正确:
# 启用写入权限
write_enable=YES
# 允许本地用户登录
local_enable=YES
# 限制用户只能访问自家目录
chroot_local_user=YES
# 设置被动模式端口范围
pasv_min_port=40000
pasv_max_port=50000
修改配置后重启服务:sudo systemctl restart vsftpd。这里有个坑要注意:如果遇到连接问题,检查一下Ubuntu防火墙是否放行了FTP端口:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
2.2 Windows客户端配置
FileZilla是我用过最顺手的FTP客户端,它的站点管理器功能很实用。新建站点时,主机填Ubuntu的IP地址(可以用ip addr show命令查看),协议选FTP,加密选"只使用普通FTP"。
连接时常见的问题是中文乱码,这在FileZilla中很容易解决:编辑站点时,在"字符集"选项卡中选择"强制UTF-8"。如果还是乱码,可以尝试"使用自定义字符集",输入"GBK"或"GB2312"。
2.3 文件传输实战技巧
传输大文件时,建议使用二进制模式,这样可以避免文件损坏。在FileZilla中,可以设置默认传输类型为二进制:编辑→设置→传输→文件类型→二进制。
我还发现一个实用技巧:使用队列功能批量传输文件。特别是在编译整个工程时,可以先把所有生成的文件添加到传输队列,然后一次性传输,比单个文件传输效率高很多。
3. 关键开发服务部署
嵌入式开发离不开各种网络服务,配置好这些服务能让开发流程更加顺畅。我根据自己的经验,总结了一套稳定的服务配置方案。
3.1 TFTP服务器搭建
TFTP虽然简单,但在嵌入式开发中极其重要,主要用于uboot阶段的文件传输。安装配置步骤如下:
sudo apt-get install tftpd-hpa
配置文件/etc/default/tftpd-hpa需要做如下修改:
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create"
创建TFTP目录并设置权限:
sudo mkdir -p /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot
sudo chown -R nobody:nogroup /var/lib/tftpboot
重启服务后,就可以通过uboot的tftp命令下载文件了。我在实际使用中发现,TFTP对网络环境比较敏感,建议使用有线连接,无线网络容易导致传输失败。
3.2 NFS服务器配置
NFS是嵌入式Linux开发的神器,可以实现根文件系统网络挂载,极大方便了调试工作。安装NFS服务:
sudo apt-get install nfs-kernel-server
编辑/etc/exports文件,添加共享目录:
/home/yourusername/rootfs *(rw,sync,no_root_squash,no_subtree_check)
这里有几个重要参数需要注意:no_root_squash让root用户保持权限,sync确保数据同步写入。配置完成后执行:
sudo exportfs -a
sudo systemctl restart nfs-kernel-server
在开发板端,可以通过mount -t nfs 192.168.1.100:/home/user/rootfs /mnt命令挂载NFS共享。我在调试驱动时经常使用NFS,修改代码后直接编译到NFS目录,开发板上立即就能测试,省去了反复烧写的时间。
3.3 SSH服务优化
OpenSSH是远程管理的必备工具,安装后默认配置已经可用,但为了安全和效率,我建议做以下优化:
修改/etc/ssh/sshd_config:
# 禁用root登录
PermitRootLogin no
# 使用密钥认证
PubkeyAuthentication yes
# 保持连接活跃
ClientAliveInterval 60
ClientAliveCountMax 3
生成SSH密钥对能提高安全性也更方便:
ssh-keygen -t rsa -b 4096
ssh-copy-id user@ubuntu_ip
这样以后登录就不需要输入密码了。我还喜欢用SSH隧道功能来转发X11界面,方便运行图形化调试工具。
4. 开发板驱动安装指南
驱动安装是很多新手容易卡住的地方,其实只要步骤正确,整个过程是很顺畅的。我以正点原子ATK-DLRK3568开发板为例,详细说明驱动安装过程。
4.1 CH340串口驱动
CH340是国产USB转串口芯片,稳定性不错但在Windows下需要手动安装驱动。安装前有个重要提示:先不要连接开发板,等驱动安装完成后再连接。
驱动安装包在开发板资料中的"04、软件"目录下,双击SETUP.EXE即可安装。安装过程中如果出现Windows安全提示,选择"始终安装此驱动程序软件"。
安装完成后,用USB线连接开发板的调试串口到电脑。在设备管理器中应该能看到"USB-SERIAL CH340"设备。如果看不到,尝试换个USB口,或者重新插拔一下。
我遇到过驱动安装失败的情况,一般都是因为系统中有残留的旧版驱动。解决方法是用驱动清理工具彻底删除旧驱动,然后重新安装。
4.2 Rockchip USB驱动
RK3568开发板还需要安装Rockchip的USB驱动,用于fastboot和adb连接。这个驱动在资料包的"04、软件"目录中,安装方法和CH340类似。
安装完成后,开发板进入loader模式时,设备管理器会显示"Rockusb Device"。这个驱动很重要,后续的固件烧写都要用到它。
4.3 ADB工具安装
ADB是Android调试桥,即使你做Linux开发也建议安装,因为很多调试工具和思路是相通的。安装ADB很简单:
sudo apt-get install android-tools-adb
Windows下可以直接下载Android SDK Platform-Tools包,解压后就能使用。配置环境变量后,可以在任何位置使用adb命令。
我经常用adb来推送文件到开发板,比scp更方便。特别是调试Android系统时,adb logcat是查看系统日志的利器。
5. 开发工具链配置
工欲善其事,必先利其器。好的开发工具能极大提升效率,下面介绍我精心挑选的工具组合。
5.1 MobaXterm终极终端
MobaXterm是我用过最强大的终端软件,集成了所有需要的功能。安装过程很简单,但有几个配置技巧值得分享。
首先是会话管理:建议为每个开发板创建独立的会话配置,包括串口连接、SSH连接等。这样每次打开就能快速连接,不用重新配置。
其次是标签页功能:可以同时打开多个连接,比如一个标签页用串口监控内核日志,另一个标签页用SSH执行命令。我习惯把常用的会话都保存起来,形成自己的工作环境。
文件传输功能也很强大,支持拖拽操作和同步浏览。特别是在Windows和Ubuntu之间传输文件时,比FTP还要方便。
5.2 串口调试技巧
串口是嵌入式开发最基础的调试接口,但用好它需要一些技巧。首先要注意波特率设置,RK3568的调试串口默认使用1500000波特率,这个值比较高,需要确保串口终端正确设置。
其次建议启用日志记录功能,MobaXterm可以将会话输出保存到文件。我在调试启动问题时,经常需要分析完整的启动日志,这个功能很实用。
还可以使用串口终端的高级功能,比如自定义按键宏。我把常用的调试命令都设置了快捷键,按一个键就能发送一长串命令。
5.3 交叉编译环境
RK3568使用ARM架构处理器,需要在x86电脑上搭建交叉编译环境。正点原子提供了编译好的工具链,安装很简单:
tar -xvf gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz
sudo mv gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf /opt/
然后设置环境变量:
export PATH=/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin:$PATH
export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm
测试交叉编译器是否正常工作:
arm-linux-gnueabihf-gcc --version
我建议把环境变量设置写到.bashrc文件中,这样每次打开终端都会自动配置好。编译内核和应用程序时,就能直接使用交叉编译器了。
6. 常见问题排查
即使按照教程一步步操作,也可能会遇到各种问题。这里分享一些我踩过的坑和解决方法。
6.1 网络连接问题
双系统环境下的网络问题最常见。首先确保Windows和Ubuntu在同一个网段,最好都设置成静态IP。我一般这样配置:
Ubuntu端:
sudo nano /etc/netplan/01-network-manager-all.yaml
添加以下配置:
network:
version: 2
ethernets:
eth0:
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
Windows端在网络适配器设置中配置静态IP:192.168.1.101,子网掩码255.255.255.0。
如果还是无法互通,检查防火墙设置。Ubuntu的ufw和Windows的防火墙都可能阻止连接。
6.2 服务启动失败
服务启动失败通常是因为配置错误或端口冲突。查看服务状态能获取详细错误信息:
sudo systemctl status vsftpd
sudo journalctl -xe
常见的vsftpd问题包括:目录权限不足、配置文件语法错误、端口被占用等。NFS服务出问题时,检查/etc/exports文件格式是否正确。
6.3 驱动安装问题
驱动安装失败时,首先检查数字签名问题。在Windows中可以通过高级启动选项禁用驱动签名强制。
如果设备管理器中出现黄色叹号,右键选择"更新驱动程序",手动指定驱动目录。有时候需要先卸载设备,重新插拔后再安装驱动。
Linux下的驱动问题一般是因为内核模块没有正确加载。使用lsmod查看已加载模块,modprobe手动加载需要的模块。
记得第一次成功配置好整个环境时,那种成就感真的很棒。现在每次在新电脑上重装系统,我都能在半小时内搭建好完整的开发环境。关键是要理解每个步骤的作用,这样遇到问题时才能快速定位和解决。
嵌入式开发环境搭建确实是个细致活,但一旦配置妥当,后续的开发工作就会非常顺畅。建议把重要的配置文件备份到网盘,下次重装时就能快速恢复。
更多推荐


所有评论(0)