适用对象
本文适用于使用 博创 UP-NETARM2410-S 实验箱(S3C2410 ARM920T) 的嵌入式课程实验,帮助零基础同学在 Windows 下通过虚拟机搭建 Linux 开发环境,完成交叉编译、串口通信、程序下载等操作。
实验箱硬件信息:
-
CPU:三星 S3C2410(ARM920T,200MHz)
-
交叉编译器:
armv4l-unknown-linux-gcc2.95.2 -
开发包:Linux V7.2(配套光盘)
-
安装路径:
/arm2410s/ -
实验代码:
/arm2410s/exp/basic/
环境搭建快速上手
虚拟机装好 Ubuntu 之后,按下面两步走:
1. 安装交叉编译环境
-
将配套光盘
Linux V7.2(用你老师给的)文件夹拷贝到 Ubuntu 中(放桌面即可) -
打开终端进入该目录:
cd ~/桌面/Linux\ V7.2
- 运行安装脚本:
sudo ./install.sh
- 脚本会将交叉编译器安装到
/opt/host/armv4l/bin/,实验代码安装到/arm2410s/
2. 安装并配置 minicom(串口工具)
- 安装:
sudo apt install minicom
- 配置:
sudo minicom -s
- 进入设置:Serial Device →
/dev/ttyUSB0,Bps/Par/Bits →115200 8N1,Hardware Flow Control → No
遇到具体问题看下面各章节的详细说明。
一、虚拟机相关
1. 虚拟机软件不会装 / 装完无法开机
-
推荐 VMware Workstation(虚拟机相当于一台没有装系统的虚拟电脑,还需安装操作系统才能使用)
-
从 Linux 官网下载系统镜像(推荐 Ubuntu 22.04 LTS)
-
创建虚拟机时客户机操作系统选 Ubuntu ,内存至少 8GB ,硬盘 40GB
-
Ubuntu 安装后无法上网:虚拟机网络设置为自定义 → VMnet8(NAT 模式),重启即可
-
如果提示「VT-x 未启用」:进 BIOS 开启 Intel VT-x / AMD-V 虚拟化技术
2. 不会在虚拟机里安装软件
- Ubuntu 软件安装方式:
sudo apt update
sudo apt install <包名>
-
apt 是 Ubuntu 自带的命令行软件包管理器
-
也可以直接用 Ubuntu 的图形化「软件中心」搜索安装
3. Windows 和 Ubuntu 之间传文件
-
方法一(推荐):VMware 菜单 → 虚拟机 → 安装 VMware Tools,之后可以直接拖拽文件
-
方法二:U 盘插到宿主机,VMware 菜单 → 虚拟机 → 可移动设备 → 连接 USB
-
方法三:在 Ubuntu 中安装 SSH 服务,Windows 用 WinSCP 上传下载
-
U 盘识别不到的话,也可以在 Linux 下登录网页版邮箱,把文件发到邮箱下载
4. 完全没用过 Linux,打开终端一片空白
-
Ctrl + Alt + T打开终端 -
常用命令速查:
| 操作 | 命令 |
|---|---|
| 查看当前目录 | pwd |
| 列出文件 | ls |
| 进入目录 | cd 目录名 |
| 回到主目录 | cd ~ 或直接 cd |
| 创建目录 | mkdir 目录名 |
| 编辑文件 | vi 文件名 或 vim 文件名 |
| 查看文件内容 | cat 文件名 |
| 复制文件/目录 | cp 源 目标 |
| 删除文件/目录 | rm -rf 文件或目录(谨慎使用,删除后不可恢复) |
| 获得 root 权限 | sudo 命令 |
| 切换到 root | sudo -i 或 su - |
- 编译后生成的可执行文件,用
./文件名来运行(./表示在当前目录下寻找该程序)
5. 不会用 vi / vim 编辑代码
-
打开文件:
vim hello.c -
按
i进入插入模式,此时可以正常输入 -
编辑完成后按
Esc退出插入模式 -
输入
:wq保存退出(w = 写入,q = 退出) -
输入
:q!不保存强制退出 -
不习惯 vim 的话可以安装 gedit(图形化文本编辑器):
sudo apt install gedit
6. 权限不够(Permission denied)
-
命令前加
sudo,如sudo ./install.sh -
文件没有执行权限:
chmod +x 文件名 -
永久切换 root:
sudo -i
二、交叉编译环境安装
7. install.sh 运行报错
-
先把 Linux V7.2 整个目录拷贝到 Ubuntu 里(放桌面即可)
-
如果提示「无法找到文件」,用
cd进入 Linux V7.2 目录,再运行sudo ./install.sh -
如果提示
armv4l-unknown-linux-gcc: command not found,说明 PATH 没配置好 -
手动在配置文件中添加交叉编译器路径(重启后仍然有效):
vim /root/.bashrc
在文件末尾添加一行:
export PATH=/opt/host/armv4l/bin:$PATH
然后执行 source /root/.bashrc 让配置立即生效
重启电脑或虚拟机后,如果又提示
command not found,需要重新执行一次source /root/.bashrc
验证是否安装成功:输入 armv4l-unknown-linux-gcc --version,回显版本号即表示成功
8. 64 位 Ubuntu 运行 32 位交叉编译器报错
如果 armv4l-unknown-linux-gcc 已安装(/opt/host/armv4l/bin/ 下存在该文件),但运行时总报错找不到,原因是 64 位系统不兼容 32 位程序,安装 32 位兼容库即可解决:
sudo apt update
sudo apt install lib32z1 lib32ncurses5 lib32stdc++6
如果还不行,安装 gcc-multilib:
sudo apt install gcc-multilib
9. 交叉编译时提示找不到头文件
-
检查 install.sh 是否成功执行,
/arm2410s/目录是否存在 -
如果 install.sh 有遗漏,手动从 Linux V7.2 目录拷贝到对应位置
三、串口通信(minicom)
10. minicom 无法打开串口
查看 USB 转串口设备是否被识别:
ls /dev/ttyUSB*
如果是 /dev/ttyUSB0,配置 minicom:
sudo minicom -s
进入设置:
-
Serial Device →
/dev/ttyUSB0(如果保存时报错,试试去掉开头的/,直接写dev/ttyUSB0) -
Bps/Par/Bits →
115200 8N1 -
Hardware Flow Control → No
如果在虚拟机中运行,需要将 USB 转串口线连接到虚拟机:VMware 菜单 → 虚拟机 → 可移动设备 → 找到 CH340/CP210x/PL2303 等 → 连接
11. 串口连上后屏幕全是乱码
-
波特率不对:必须设为 115200
-
流控不对:必须关闭 Hardware Flow Control
-
检查串口线是否接好:实验箱使用 UART0 接口(通常靠近网口)
12. 每次都要 sudo 才能用 minicom
将自己加入 dialout 组:
sudo usermod -a -G dialout $USER
注销重新登录后生效。或者直接切换为 root 用户:su
四、网络配置与 NFS(建议用 U 盘替代 NFS)
13. 实验箱 IP 配置
在 minicom 中登录开发板后输入:
ifconfig eth0 192.168.1.100
-
虚拟机 IP 设为同一网段,例如
192.168.1.10 -
Windows 宿主机的 VMware 虚拟网卡也设为同网段
-
三者互 ping 测试连通性
14. 虚拟机网络模式选择
-
使用 NAT 模式(VMnet8),虚拟机通过宿主机共享上网,配置最简单
-
实验箱通过串口(minicom)连接,不需要与虚拟机在同一网段
15. NFS 挂载失败
检查 Ubuntu 是否安装 NFS 服务:
sudo apt install nfs-kernel-server
编辑 /etc/exports,添加一行:
/arm2410s *(rw,sync,no_subtree_check,no_root_squash)
重启 NFS:
sudo systemctl restart nfs-kernel-server
关闭防火墙:
sudo ufw disable
在开发板上执行挂载:
mount -t nfs -o nolock 192.168.1.10:/arm2410s /mnt/nfs
必须加
-o nolock,否则会报错
16. 挂载成功但运行程序提示 No such file
-
检查共享路径是否正确
-
确认交叉编译生成的文件确实在
/arm2410s/exp/basic/01_hello/下 -
确认文件有执行权限:
chmod +x hello
五、Makefile 与编译
Makefile 是告诉编译器如何编译的配置文件,编写完成后直接执行 make 命令,编译器就会按照 Makefile 的规则自动构建。
17. 运行 make 报错 "missing separator"
-
Makefile 中命令的缩进必须使用 Tab,不能用空格
-
用
vim编辑时,确保缩进是硬 Tab(不要使用:set expandtab) -
检查方法:
cat -A Makefile,命令行的缩进应显示为^I(Tab)
18. make 成功后文件在 ARM 板上无法运行
-
确认使用的是
armv4l-unknown-linux-gcc而非系统自带的gcc -
如果误用
gcc,编译出的文件只能在 Ubuntu 上运行,无法在 ARM 开发板上执行 -
检查方法:
file hello,正确输出应包含ARM字样
19. 忘记加 -static 导致运行报错
开发板的文件系统仅提供有限的动态库,普通程序需要使用静态链接。在 Makefile LDFLAGS 中添加 -static:
LDFLAGS += -static
六、U 盘相关
20. U 盘插到开发板无法识别
先执行 cat /proc/partitions 查看设备节点,如果识别到类似 /dev/scsi/host0/bus0/target0/lun0/part1 的设备,执行:
mount -t vfat /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/nfs
然后 cd /mnt/nfs 进入 U 盘,ll 查看 U 盘中所有文件
七、通用经验与建议
21. 报错信息看不懂怎么办
-
将报错信息复制到搜索引擎或 AI 工具搜索,大部分常见问题都有解决方案
-
英文报错直接原样搜索,不要自行翻译
22. 操作搞乱了如何恢复
-
虚拟机可以拍摄快照(VMware 菜单 → 虚拟机 → 快照 → 拍摄快照),出问题后直接恢复
-
或者重装 Ubuntu,熟练后 20 分钟即可完成
23. 不想安装虚拟机的替代方案
-
安装双系统(过程较复杂,不推荐初学者尝试)
-
如果仅编写代码和撰写报告,不涉及开发板运行,可以使用 WSL(Windows Subsystem for Linux)体验 Linux 命令
总结
嵌入式开发环境搭建的常见问题主要集中在以下几类:
-
PATH 环境变量未配置 --- 交叉编译器找不到
-
权限不足 --- 忘记加
sudo或未加入 dialout 组 -
串口参数错误 --- 波特率或流控设置不对
-
Makefile 格式错误 --- Tab 缩进问题
遇到问题先仔细阅读报错信息,结合搜索引擎基本都能解决。本文基于 UP-NETARM2410-S(S3C2410)实验箱编写,其他 ARM 嵌入式实验箱的环境搭建流程也可参考。