登录/注册

基于linux嵌入式开发环境的搭建过程

更多

在Linux上搭建嵌入式开发环境,主要分为以下步骤:


1. 安装必备工具

sudo apt update
sudo apt install -y build-essential git make gcc g++ bison flex libssl-dev libncurses5-dev u-boot-tools

2. 安装交叉编译工具链

根据目标硬件架构(如ARM、MIPS、RISC-V等)选择工具链:

ARM架构(常用)

# ARMv7 (32位)
sudo apt install gcc-arm-linux-gnueabihf

# ARMv8 (64位)
sudo apt install gcc-aarch64-linux-gnu

验证安装

arm-linux-gnueabihf-gcc --version  # ARMv7
aarch64-linux-gnu-gcc --version    # ARMv8

3. 获取Linux内核源码

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
cd linux

4. 配置和编译内核

配置内核(以ARM为例)

# ARMv7
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- versatile_defconfig

# ARMv8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig

图形化配置(可选)

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

编译内核

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j$(nproc)

编译结果:


5. 安装QEMU模拟器(用于测试)

sudo apt install qemu-system-arm qemu-system-aarch64

测试内核(ARMv7)

qemu-system-arm -M versatilepb -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/versatile-pb.dtb -append "root=/dev/ram rdinit=/sbin/init" -nographic

6. 构建根文件系统(RootFS)

方法1:BusyBox静态编译

# 下载BusyBox
wget https://busybox.net/downloads/busybox-1.36.0.tar.bz2
tar xf busybox-1.36.0.tar.bz2
cd busybox-1.36.0

# 配置为静态编译
make menuconfig 
# 勾选 Settings → Build static executable

# 编译安装
make CROSS_COMPILE=arm-linux-gnueabihf- -j$(nproc)
make install

创建最小文件系统

mkdir rootfs && cd rootfs
cp -r ../busybox-1.36.0/_install/* .
mkdir -p proc sys dev etc
cat > init << EOF
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
/sbin/mdev -s
exec /bin/sh
EOF
chmod +x init

生成RAM磁盘镜像

find . | cpio -o -H newc | gzip > ../rootfs.cpio.gz

7. 在QEMU中启动完整系统

qemu-system-arm \
    -M versatilepb \
    -kernel linux/arch/arm/boot/zImage \
    -dtb linux/arch/arm/boot/dts/versatile-pb.dtb \
    -initrd rootfs.cpio.gz \
    -append "root=/dev/ram rdinit=/init" \
    -nographic

8. 安装调试工具

sudo apt install gdb-multiarch

调试内核

# 终端1:启动QEMU调试模式
qemu-system-arm -M versatilepb -kernel zImage -s -S

# 终端2:连接GDB
gdb-multiarch vmlinux  # vmlinux为未压缩的内核文件
(gdb) target remote :1234
(gdb) b start_kernel
(gdb) c

可选工具

  1. TFTP服务器:传输内核镜像到目标板
    sudo apt install tftpd-hpa
  2. NFS服务器:网络挂载根文件系统
    sudo apt install nfs-kernel-server

常见问题解决

  1. 编译错误:检查依赖库(如libssl-dev)和内核配置。
  2. QEMU启动失败:尝试更换机器类型(如-M virt)。
  3. 根文件系统崩溃:确保init脚本正确且可执行。

通过以上步骤,您已在Linux上完成了嵌入式开发环境的搭建,支持交叉编译内核、构建根文件系统、模拟运行和调试。实际硬件开发时,将镜像烧录到开发板(如SD卡或Flash),并连接JTAG调试器即可。

Linux系统的嵌入式开发是什么

嵌入式开发听起来很高大上,但其实它就在我们身边。   嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备中,如手机、平板电脑、智能家

2023-10-12 15:40:39

嵌入式开发环境搭建

前言前面经过开发板初步上手体验,对嵌入式开发的热情已经被点燃,下面进行开发板环境

2021-12-17 06:09:51

如何搭建嵌入式Linux开发环境

关于嵌入式Linux开发环境

2021-12-16 08:31:13

嵌入式Linux系统开发实验分享

本实验为验证性实验,其目的是了解嵌入式 Linux 开发的交叉开发模式;

资料下载 吐个泡泡er 2022-05-09 14:43:44

linux嵌入式开发

记录linux 下嵌入式开发,学习的点点滴滴!

资料下载 淡淡的爱 2021-11-03 10:21:02

嵌入式开发Linux入门

调试器嵌入式开发的流程步骤1:开发引导加载程序步骤2:内核实现步骤3:创建模块(设备驱动程序)步骤4:创建应用程序步骤5(最后一步):系统调整结束语导语近年来,“

资料下载 48674 2021-11-02 14:36:06

嵌入式系统移植-01嵌入式基本概念,嵌入式开发环境搭建,目标机搭建,TFTP服务搭建,NFS服务搭建

Android系统嵌入式开发环境搭建嵌入式

资料下载 佚名 2021-10-20 17:21:00

嵌入式开发(一):嵌入式开发新手入门

本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。嵌入式开发流程一般如下,一般是在PC

资料下载 佚名 2021-10-14 10:58:31

嵌入式开发学习方法步骤

板嵌入式技术学习如何入手,从何学起呢,以下内容简单介绍嵌入式开发的学习步骤及如何成为一位合格的嵌入式工程师,一、首先要掌握基础架构

2021-12-14 07:47:40

什么是裸机开发linux嵌入式开发

配置寄存器。(这个过程有点点像linux的内核驱动)3.应用程序2.linux嵌入式开

2021-11-08 06:47:06

如何使用QEMU搭建u-boot+Linux+NFS嵌入式开发环境

使用QEMU搭建u-boot+Linux+NFS嵌入式开发环境1、

2021-11-05 08:21:39

浅析基于linux嵌入式开发

序言:学习基于linux平台的嵌入式开发之前我已经经过了基于纯单片机开发》》》基于实时系统ucosIII、freeRTOS平台的

2021-11-05 06:49:49

嵌入式linux开发环境该如何去搭建

嵌入式linux开发环境

2021-11-04 08:09:42

嵌入式Linux开发环境搭建

嵌入式Linux开发环境

2021-11-04 07:43:51

Linux嵌入式开发环境有哪些?

做Linux嵌入式系统的对常见的几种嵌入式开发环境一定不会默生,由于主要

2019-10-29 08:05:47
7天热门专题 换一换
相关标签