1. Linux驱动开发环境搭建实战
作为一名在嵌入式领域摸爬滚打多年的老手,我深知驱动开发环境搭建这个"入门关"卡住了多少开发者。今天我就把实验室里验证过无数次的完整方案拆解给大家,从工具链配置到内核编译,手把手带你避开那些教科书上不会写的坑。
1.1 开发主机环境准备
我的工作机常年跑Ubuntu 20.04 LTS,这个版本对嵌入式开发支持最为成熟。先执行这几个关键命令:
bash复制sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git flex bison libssl-dev libncurses5-dev
这里有个细节要注意:libncurses5-dev必须明确指定版本,某些新系统默认安装的ncurses6会导致内核menuconfig界面异常。去年我们团队就因为这个兼容性问题浪费了两天排查时间。
交叉编译工具链我推荐Linaro GCC,下载后解压到/opt目录并设置PATH:
bash复制tar xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz -C /opt
echo 'export PATH=/opt/gcc-linaro-7.5.0/bin:$PATH' >> ~/.bashrc
选择7.5版本是因为它在ARMv7架构上表现最稳定,实测比更新的版本编译出的内核体积小5%左右。
1.2 内核源码获取与配置
开发板厂商一般会提供定制内核源码,但建议先尝试主线内核。以Raspberry Pi为例:
bash复制git clone --depth=1 -b rpi-5.15.y https://github.com/raspberrypi/linux
--depth=1能大幅减少下载时间,做驱动开发不需要完整git历史。进入源码目录后,关键配置步骤:
bash复制make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- me
