学习嵌入式Linux的笔记和体会(二)

来源:本站
导读:目前正在解读《学习嵌入式Linux的笔记和体会(二)》的相关信息,《学习嵌入式Linux的笔记和体会(二)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《学习嵌入式Linux的笔记和体会(二)》的详细说明。
简介:简介:一个典型的桌面Linux系统包括3个主要的软件层---linux内核、C库和应用程序代码。
内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把POSIX API转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的任务。

入门试验,制作一个简单的应用

我们使用一张软盘启动一台假象的只有一个串口,键盘输入,显示输出的x86架构的linux系统,执行的特定应用就是运行minicom,通过串口拨号。需要软件: minicom-xx.src.tar.gz 和 syslinux-xx.tar.gz,xx代表版本号,开始之前,在主目录建立一个目录,来释放这两个软件包:

cd

mkdir -p project/minilinux

cd project/minilinux

tar zxvf minicom-xx.src.tar.gz

tar zxvf syslinux-xx.tar.gz

1、裁减linux内核(需要系统安装内核文件包)

配置内核的时候,我们需要选择这些:摸块编入内核,386处理器、物理内存off、支持ELF、标准PC软盘、支持RAM盘(4096)、支持 initial RAM disk (initrd)、虚你终端、虚拟终端控制台、标准串口、ext2文件系统、控制台驱动,VGA text console、DOS FAT、MSDOS文件系统,其他的都可以不要,这样内核编出来较小。

步骤:

cd /usr/src/linux

make mrproper

make xconfig

make dep && make bzImage

得到 /usr/src/linux/arch/i386/boot/目录的内核文件bzIamge。

2、编译一个静态的minicom ,把它作为将来的linuxrc

cd minicom-xx/src

vi Makefile

修改下面这行

minicom: $(minicom_OBJECTS) $(minicom_DEPENDENCIES)

rm -f minicom 下面的行加上 -static,连接为静态程序

(LINK) -static $(minicom_LDFLAGS) $(minicom_OBJECTS) $(minicom_LDADD) $(LIBS)

vi minicom.c

找到 if (real_uid==0 && dosetup==0 ) 删除这个判断条件语句,主要是用于权限判断的,因为这个嵌入应用不关注权限问题,否则会出错。

make

得到可执行程序,用ldd 检查一下是不是静态程序。

3、准备initrd压缩文件image.gz

dd if=/dev/zero of=image bs=1k count=4096

losetup /dev/loop0 image

mke2fs -m 0 /dev/loop0

mounmt -t ext2 /dev/loop0 /mnt/

mkdir -p /mnt/dev

mkdir -p /mnt/usr/share/terminfo/l/

cd /dev

cp -a consle null tty tty0 zero mem /mnt/dev

cp -P /usr/share/terminfo/l/linux /mnt/usr/share/terminfo/l/linux

cp ~/project/minilinux/mincom/src/minicom /mnt/linuxrc

umount /mnt

losetup -d /dev/loop0

sync

gzip -9 image

4、制作软盘引导,并拷贝文件 bzimage image.gz 到软盘

A.使用grub

fdformat /dev/fd0

mke2fs /dev/fd0

mount /mnt/fd0 /mnt/floppy

mkdir -p /mnt/floppy/boot/grub

cp /boot/grub/stage1 /boot/grub/stage2 /mnt/floppy/boot/grub

执行 grub,在软盘上创建引导

grub > root (fd0)

grub > setup (fd0)

grub > quit

cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy

cp ~/porject/minilinux/image.gz /mnt/floppy

编辑 /mnt/floppy/boot/grub/grub.conf

default =0

timeout-=10

title minilinux

root (fd0)

kernel /bzImage

initrd /image.gz

卸下软盘

umount /mnt/floppy

B. 使用syslinux

fdformat /dev/fd0

mkfs.msdos /dev/fd0

mount -t msdos /dev/fd0 /mnt/floppy

cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy

cp ~/porject/minilinux/image.gz /mnt/floppy

cp syslinux-xx/ldlinxu.sys /mnt/floppy

cat > /mnt/floppy/syslinux.cfg

LABEL linux

KERNEL bzimage

APPEND initrd=image.gz

umont /mnt/floppy

syslinux-xx/syslinux /dev/fd0

sync

5、用软盘启动计算机,如果幸运,minicom的运行画面出现在屏幕上。

到此,我们的单应用嵌入式linux做好了,但它还很简陋,没有什么实际用途,但通过这个实验,可以了解嵌入式系统的大致结构和开发过程。在进行实际的嵌入式开发时,通常要在PC机上借助嵌入式linux开发工具包,如:uclinux,bluecat等,对相应的硬件平台(目标机)进行软件编写编译,调试成功后,将内核及应用程序写入到目标机的存储器中,从而完成整个应用。

提醒:《学习嵌入式Linux的笔记和体会(二)》最后刷新时间 2024-03-14 01:05:15,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《学习嵌入式Linux的笔记和体会(二)》该内容的真实性请自行鉴别。