嵌入式工业一体机系统怎么组成呢?嵌入式系统如何使用?

嵌入式工业一体机系统怎么组成呢?嵌入式系统如何使用?

1 嵌入式系统组成 BootLoader、内核、根目录文件系统

2 BootLoader uboot是嵌入式启动程序BootLoader的业界老大,所以一般都用uboot。

操作之前先make distclean以前的配置项。

2.1 配置uboot

Uboot编译后要告诉映像运行在什么系统体系上。配置要在Makefile文件上进行,vim Makefile打开Makefile,如果是210开发板直接搜索 “/210”,然后通过next查询其他有用信息。查询跟开发板匹配的配置项,比如“tq210”;

2.2 编译uboot

make ARCH=arm CROSS_COMPILE=arm-linux-

编译完成后会生成一个uboot.bin 文件,是要烧写到开发板运行的;是一个二进制映像。

2.3 下载并运行

3 内核

3.1 内核配置(X86为例)

为啥配置内核:通过软件需求和硬件需求,选出需要的、去掉不用的。硬件方面:比如是arm体系,x86就没用就不选;软件方面:比如是ipv4,选ipv6就没用。

配置内核的方法:

make config:基于文本模式的交互式配置

make menuconfig:基于文本模式的菜单型配置(用这种方法方便、快捷)

选项菜单:

三种选择方式:<>、<*>、<M>

内核映像文件最终运行在内存中,系统启动,BootLoader会将zIMage解压到内存里,在内存里面运行。

配置完成后用:ls –a查看 (a就是all)可以看到隐藏的文件,其中.config就是保存的配置文件。

查看内容:vim .config

CONFIG:固定的标准格式;LOCALVERSION:配置项的名字;y=yes相当于<*>;没有配置的加'#',加'is not set';

如何加载一个已有的配置文件,然后在其上面做修改?

(Linux本身的配置文件在/boot/config-4.15.0-45-generic),找到一个配置文件config-4.15.0-45-generic复制到当前目录下,然后make menuconfig -> load -> '文件路径文件名'(例如当前w文件下的路径就是"./config-4.15.0-45-generic") -> ok;

3.2 编译内核

3.2.1 编译内核生成镜像文件

make zImage:主要用于小于512K

make bzImage:

make bzImage V=1 :查看编译的详细信息

编译好的内核位于arch/<cpu>/boot/目录下

3.2.2 编译内核模块(<M>产生内核模块)

make modules:内核模块散落在各个文件中,.ko文件就是内核模块,查看方式ls *.ko;

make modules_install:要把内核模块放到/lib/modules目录下面。使用操作:make modules_install会把散落的文件移动到/lib/modules目录下。

3.3 制作init ramdisk(即将所有内核模块打包为一个文件)

命令:mkinitrd initrd-$version $version

例子:mkinitrd initrd-2.6.32 2.6.32

initrd-2.6.32 打包成文件的名字

$version 为通过make modules_install移动到一个文件夹的内核模块文件的文件名,可以通过查询/lib/modules下的目录得到。

3.4 安装内核

将映像文件和打包好的modules文件复制到boot目录下,Linux启动的时候BootLoader会到boot目录下找文件。

3.4.1 复制zImage镜像文件到boot中

cp arch/x86/boot/bzImage /boot/vmlinuz-$version 取得名字

3.4.2 复制moduls文件到boot文件中

cp initrd-$version /boot/

3.4.3 修改/etc/grub.conf /*这是启动的配置文件*/

保存后重新启动Linux系统。启动时有一个倒计时的地方,然后立即按下F12(戴尔),可以选择系统要启动内核。

启动完成后:

用 uname –r 命令:查看正在运行的内核版本。

 

内核运行在内存

文件系统存放在硬盘或者开发板的flash

3.5 清理内核

要清楚编译内核的时候产生了什么。配置时产生了.config文件;编译的时候产生了.o文件,汇总成了bzImage;还产生一些.ko文件

make clean:清理.o文件,没有清除掉.config文件,

ls /drivers/net 可以看到有很多.ko文件

make distclean 可以清除掉配置文件也可以清除掉.o文件

4 嵌入式Linux内核制作

制作嵌入式平台使用的Linux内核,方法和制作PC平台的Linux内核基本一致;

4.1 复制解压一个Linux内核代码

4.2 make distclean 清除以前的配置项

4.3 配置内核:make menuconfig ARCH=arm

4.4 编译内核:make uImage ARCH=arm CROSS_COMPILE=arm-linux-

 

如果报错:将tools中的mkimage文件复制到bin文件夹,然后在重新编译;

然后将uImage.bin文件复制到根目录下的tftpboot文件夹下。然后通过serial com下载到目标板

编译完成后生成的uImage文件在/arch/arm/boot/中可看到

5 根文件系统的制作

5.1 建立根文件系统目录与文件

5.1.1 创建目录

先创建一个目录然后进入

mkdir rootfs

cd rootfs

然后批量的创建开发板需要的以下目录:

mkdir bin devetc lib proc sbin sys usr mnt tmp var

mkdir usr/bin usr/lib usr/sbin lib/modules

5.1.2 创建设备文件(只能在root模式下创建)

cd rootfs/dev

mknod -m 666 console c 5 1

mknod -m 666 null c 1 3

5.1.3 加入配置文件

将etc.tar.gz中的文件解压后都复制到etc文件中。

5.1.4 添加内核模块

cd …/mini2440 /*进入可以编译内核的文件夹*/ (即mini240的内核制作的文件夹)

make modules ARCH=arm CROSS_COMPILE=arm-linux-

make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs

粉色处为路径:home/dongry/rootfs

5.1.5 解压后进入busybox文件并配置、编译、安装busybox:

make menuconfig:进入配置界面

进入Busybox Settings àbuild Options->选中“Build busybox as astatic binary”,静态链接

进入Cross Compiler prefix改为(arm-linux-)

进入Installation Options->选中“Don‘t use /usr”,选中该项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统

进入Busybox Installation Prefix改路径(/xxx/rootfs),该选项表明编译后的busybox的安装位置

 

编译busybox:make

安装busybox:make install

5.2 挂载根文件系统

根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM和FLASH,常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等

5.2.1 initramfs方式

软连接

ln –s ./bin/busybox init /*-s:软链接; init:软连接名字*/

进入内核文件

make menuconfig ARCH=arm

general setup-><*>Initial RAM filesystem and RAM disk (initramfs/initrd) support

然后在Initramfs source file(s)处添加rootfs的路径

 

配置完成后重新编译内核:make uImage ARCH=arm CROSS_COMPILE=arm-linux-

因为文件系统是挂载到内核上的,所以需要重新编译内核

5.2.2 NFS方式

此种方式的特点:当文件系统需要重新添加一个文件的时候,initarmfs还得需要重新编译内核,而NFS方式是直接通过网络连接的会直接反馈到系统上,不需要重新编译内核。

内核配置:make menuconfig ARCH=arm

取消掉上边方式的配置项,并退出;

进入file system->networking file systems->保证root file system on nfs被选中,退出保存

然后进行内核编译:make uImage ARCH=arm CROSS_COMPILE=arm-linux-

因为文件系统是挂载到内核上的,所以需要重新编译内核。

嵌入式工业一体机系统怎么组成呢?嵌入式系统如何使用?

 

朗歌斯
  • 本文由 发表于 2020年9月15日
嵌入式工业一体机的优点是什么呢? 新闻中心

嵌入式工业一体机的优点是什么呢?

嵌入式工业一体机的优点是什么呢? 工业一体机随着人类的发展与进步,在实现工业自动化起着决定性作用。在工厂中工业一体机可以实现智能制造,它是一人机一体化智能系统,它在制造过程中能进行智能活动。嵌入式工控...