4、开发环境搭建:Linux开发环境安装(Ubuntu)、交叉编译工具链配置、SSH与串口终端使用、版本控制(Git)基础
说实话,做嵌入式开发这么多年,我见过太多新手卡在环境搭建这一步。明明代码逻辑没问题,编译却报一堆错——十有八九是环境没配好。这一章,我就带你把这几个基础工具一次性搞定。
4.1 为什么非要用Linux?
你可能想问:Windows用得好好的,干嘛非得折腾Linux?
原因很简单:嵌入式开发的工具链,绝大多数都是基于Linux的。比如我们后面要用的交叉编译器、各种开源库,在Windows上配置起来能让你怀疑人生。而在Ubuntu上,往往一条命令就搞定。
我个人习惯用Ubuntu 20.04 LTS,稳定,社区支持好。你装18.04或22.04也行,差别不大。
4.2 Ubuntu安装——双系统还是虚拟机?
这里给你两个选择:
- 虚拟机(推荐新手):用VMware或VirtualBox,在Windows里跑Linux。好处是不影响原有系统,坏了重装就行。我刚开始学的时候就用虚拟机,摔了无数次,重启一下就好。
- 双系统:性能更好,但分区有风险。如果你打算长期做嵌入式,建议后面还是切到双系统。
安装步骤其实很简单:
- 去Ubuntu官网下载iso镜像
- 用Rufus或balenaEtcher制作启动U盘
- 重启电脑,从U盘启动,跟着向导走
4.3 交叉编译工具链——为什么需要它?
你想想看,你的电脑是x86架构,而智能相机用的是ARM芯片。x86的编译器编译出来的程序,ARM芯片跑不了。怎么办?
答案就是交叉编译工具链。它运行在你的电脑上,但生成的目标代码是ARM架构的。
我项目中常用的工具链是gcc-arm-none-eabi,针对裸机或RTOS系统。安装很简单:
sudo apt update
sudo apt install gcc-arm-none-eabi
装完后验证一下:
arm-none-eabi-gcc --version
看到版本号就说明成功了。
gcc-arm-linux-gnueabihf。别搞混了,我刚开始就吃过这个亏——编译了半天,烧进去跑不起来,才发现工具链选错了。
4.4 SSH与串口终端——怎么跟开发板通信?
开发板通常没有显示器键盘,你怎么操作它?两种方式:
4.4.1 SSH(网络连接)
只要开发板和电脑在同一个局域网,就能用SSH远程登录。Ubuntu自带SSH客户端,直接敲命令:
ssh username@192.168.1.100
第一次连接会提示确认指纹,输入yes就行。然后输入密码,你就进入开发板的终端了。
我个人习惯用MobaXterm(Windows)或Terminator(Linux),支持多标签,方便同时开好几个SSH窗口。
4.4.2 串口终端(物理连接)
有时候网络没配好,或者要调试uboot、内核启动,就得用串口。你需要一根USB转串口线,插到开发板的UART口上。
在Ubuntu下,用screen或minicom:
sudo apt install screen
sudo screen /dev/ttyUSB0 115200
这里/dev/ttyUSB0是串口设备名,115200是波特率。退出时按Ctrl+A,再按K,确认退出。
4.5 版本控制(Git)基础——代码的后悔药
写代码没有版本控制,就像开车没有刹车。你改了一堆代码,结果跑不起来,想回退?Git就是你的时光机。
4.5.1 安装与配置
sudo apt install git
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
这两行配置很重要,每次提交代码都会记录你是谁。
4.5.2 基本操作
我带你走一遍最常用的流程:
# 初始化仓库
git init
# 添加文件到暂存区
git add main.c
# 提交到本地仓库
git commit -m "第一次提交:添加主程序"
# 查看状态
git status
# 查看提交历史
git log --oneline
你想想看,每次commit就像拍了一张快照。万一改坏了,用git checkout就能回到之前的快照。
4.5.3 分支管理
做项目时,我习惯开一个dev分支来开发新功能,稳定后再合并到main分支:
git checkout -b dev
# ... 开发代码 ...
git add .
git commit -m "完成了相机驱动"
git checkout main
git merge dev
git diff看看改了哪些内容。这样能避免把调试用的临时代码也提交上去。嗯,这个习惯帮我省了不少麻烦。
4.6 本章小结
这一章的内容,说白了就是给你搭好工作台:
- Ubuntu系统——你的主战场
- 交叉编译工具链——让代码能在ARM上跑
- SSH和串口——跟开发板对话的桥梁
- Git——你的代码保险箱
这些工具配好了,后面写代码、调试、烧录才能顺风顺水。别嫌麻烦,环境搭得好,开发效率翻倍。下一章,我们就开始真正写代码了。