embedded-linux嵌入式Linux入门


备注

本节概述了embedded-linux是什么,以及开发人员为什么要使用它。

它还应该提到embedded-linux中的任何大型主题,并链接到相关主题。由于embedded-linux的文档是新的,您可能需要创建这些相关主题的初始版本。

安装或设置

有关设置或安装embedded-linux的详细说明。

Qemu上的ARM多功能快速仿真

环境介绍:

主持人ubuntu: - 12.04

Linux内核版本:linux-4.4

busybox版本:1.24.0

交叉编译工具链:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux gnu.tar.bz2

qemu版本:qemu-2.5

下载和安装QEMU:

$ mkdir Source_Code
$ cd Source_Code
$ git clone git://git.qemu-project.org/qemu.git
$ cd qemu
$ git checkout remotes/origin/stable-2.5 -b stable-2.5
$ cd ../../
$ mkdir -p Binary_images/Qemu_Bin
$ cd Qemu_src/qemu
$ cd Source_Code/qemu
$ ./configure --target-list=arm-softmmu --prefix=/Path/to/your/Binary_images/Qemu_Bin
$ make
$ make install
 

ARM Cross_Compiler工具链安装:

下载源代码: http//sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/

下载 - > arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

$ mkdir -p Binary_images/ARM_Cross_Tools
$ cd Binary_images/ARM_Cross_Tools
$ tar xvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
 

下载Linux内核源代码:

$ cd Source_Code
$ git clone https://github.com/torvalds/linux
$ cd linux
# Switch to version v4.4
$ git checkout v4.4
 

准备编译:加载目标板的默认配置,即vexpress_defconfig。

$ make ARCH=arm CROSS_COMPILE=/path/to/your/Binary_images/ARM_Cross_Tools/arm-2014.05/bin/arm-none-linux-gnueabi- vexpress_defconfig
 

调整或启用现在不需要的某些设置。

$ make ARCH=arm CROSS_COMPILE=path to your/Binary_images/ARM_Cross_Tools/arm-2014.05/bin/arm-none-linux-gnueabi- menuconfig
 

编译内核

$ make ARCH=arm CROSS_COMPILE=/path/to/your/Binary_images/ARM_Cross_Tools/arm-2014.05/bin/arm-none-linux-gnueabi- all
 

验证qemu和内核是否可以成功运行:

~/Binary_images/Qemu_Bin/qemu-system-arm -M vexpress-a9 -m 512M -dtb ./arch/arm/boot/dts/vexpress-v2p-ca9.dtb -kernel ./arch/arm/boot/zImage -append “console=ttyAMA0” -serial stdio
 

在QEMU上为ARM编译Busybox:

https://busybox.net/downloads/下载Busybox

$ cd busybox
$ make ARCH=arm CROSS_COMPILE=/path/to/your/Binary_images/ARM_Cross_Tools/arm-2014.05/bin/arm-none-linux-gnueabi- defconfig
 

启用或禁用某些设置,如下所述

$make ARCH=arm CROSS_COMPILE=/path/to/your/Binary_images/ARM_Cross_Tools/arm-2014.05/bin/arm-none-linux-gnueabi- menuconfig
 

Busybox设置 - >构建选项 - >

[*]将BusyBox构建为静态二进制文件(无共享库)

$ make ARCH=arm CROSS_COMPILE=/path/to/your/Binary_images/ARM_Cross_Tools/arm-2014.05/bin/arm-none-linux-gnueabi- install
 

上面的命令构建Busybox并创建一个名为_install的目录,其中包含根文件系统树。接下来,您需要创建用于挂载虚拟文件系统的文件夹,如proc,sys和init脚本。

$ mkdir -p _install/proc/
$ mkdir -p _install/sys/
$ mkdir -p _install/tmp/
$ mkdir -p _install/root/
$ mkdir -p _install/var/
$ mkdir -p _install/mnt/
$ mkdir -p _install/etc/init.d/
 

在文件夹_install / etc / init.d /中创建文件名rcS,并使用以下内容编辑rcS文件

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
mount -a
echo /sbin/mdev /proc/sys/kernel/hotplug
mdev -s
 

在_install / etc /中创建一个文件名inittab,并使用以下内容对其进行编辑。

# /etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::restart:/sbin/init
 

下载fstab文件并将其复制到/ etc /。 rootfs中的文件夹

$ wget clone https://github.com/mahadevvinay/Embedded_Stuff/tree/master/Embedded_Linux_Virtual_Setup/fstab
 

创建ext3映像文件并将我们的_install文件夹中的所有文件复制到映像:

$ dd if=/dev/zero of=RootFS.ext3 bs=1M count=$((32))
$ sudo mkfs.ext3 RootFS.ext3
$ mkdir tmpfs
$ sudo mount -t ext3 RootFS.ext3 tmpfs/ -o loop
$ sudo cp -r _install/* tmpfs/.
$ sudo umount tmpfs
 

完整的命令是模拟:

~/Qemu_/Binary_images/Qemu_Bin/bin/qemu-system-arm -M vexpress-a9 -dtb path to your linux folder/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -kernel path to your linux folder/arch/arm/boot/zImage -append root=/dev/mmcblk0 console=ttyAMA0 -sd path to your busybox-1.24.0/RootFS.ext3 -serial stdio
 

以上设置适用于Qemu,可以使用相同的步骤设置任何嵌入式目标。