| | 网站首页 | 考研信息中心 | 考研资料下载 | 考研论坛 | 考研专业试题 | 2008考研招生简章 | 考研图书 | 留言板 | 考研图片中心 | | ||||||||
![]() |
|
|||||||
|
|
您现在的位置: 考研信息网 >> 考研信息中心 >> 计算机类考试首页 >> 微软认证 >> 最新资讯 >> 正文 | |
|
|||||
| 学习嵌入式Linux系统的笔记和体会(1) | |||||
| 作者:佚名 文章来源:不详 点击数: 更新时间:2006-11-10 | |||||
|
本站推荐Firefox浏览器,有效阻止病毒和垃圾弹出.[正版免费下载] 一个典型的桌面 Linux 系统包括3个主要的软件层---linux内核、C库和应用程序代码。内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把POSIX API转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的任务。 在设计嵌入式应用的时候,可以不按照这种层次,应用程序越过C库直接和内核会话,或者把应用和内核捆绑在一起,甚至可以把应用写为内核的一个线程,在内核中运行,虽然这样在移植上带来了困难,但考虑嵌入式系统对尺寸要求小的特点,是完全可行的。不过我们使用三层软件结构的模式来学习嵌入式linux将会是我们认识更清晰,简单可行并使应用具有弹性。 快速入门 最简单的建立嵌入式Linux应用的方法就是从我们使用的桌面Linux入手,安装一个喜爱的版本,把我们的某个应用作为初始化的一部分,框架就算完成了。 当然,嵌入式linux应用远比我们的桌面版本功能简单专一,它也许就是一个用于足彩的终端机,或是一个数码音频播放器,这些系统除了使用嵌入式CPU外,仅仅再需要一个串口,网口等少量的输入输出接口就可以完成它们特定的应用了。 在软件上,它可以按照三层的概念由内核装载器,定制的内核和较少的为特定任务设计的静态连接的应用程序组成。之所以使用静态连接的应用程序,是因为少量的静态连接程序所要的存储空间,比同样数量的动态连接的程序所占的空间小,这个平衡点需要我们在实际开发中去获取。也许你正在设计的是个PDA,它的应用程序较多,那么你很可能就要使用动态连接程序来减少存储空间。在你的/bin或者/sbin目录下,用厂列表看看bash,ifconfig,vi...,也许只用几十K,当你运行 ldd /bin/bash 时,你会看到它们都和好几个库文件相连。好了,这样看来,我们得把PC想像成一个嵌入式硬件平台,再重新制作一个特定功能的嵌入式linux。 基础知识 再进行实际操作之前,先来搞清楚几个基础知识。 共3页: 1 [2] [3] 下一页 入门试验,制作一个简单的应用 我们使用一张软盘启动一台假象的只有一个串口,键盘输入,显示输出的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 共3页: 上一页 [1] 2 [3] 下一页 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等,对相应的硬件平台(目标机)进行软件编写编译,调试成功后,将内核及应用程序写入到目标机的存储器中,从而完成整个应用。 共3页: 上一页 [1] [2] 3 入门试验,制作一个简单的应用 我们使用一张软盘启动一台假象的只有一个串口,键盘输入,显示输出的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 共3页: 上一页 [1] 2 [3] 下一页 |
|||||
|
考研信息网在线版权与免责声明 1、 凡本站注明“稿件来源:考研信息网(sanwww.com)”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、 网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时 必须注明"稿件来源:sanwww.com",违者本站将依法追究责任。 2、本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着 赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。 3、考研试题、各种考试试题以及考试信息转载于各大bbs论坛,就其真实性本站无法证实,并不意味着赞同其观点。 如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。 |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 复习指南:考研冲刺阶段要提高学习 方法指导:高中数学学习技巧 英语四级改革后的词汇学习策略(二) 四级改革后的词汇学习策略 强档贡献:MCSE2003最新学习资料 给大家推荐几本学习MCSE的好书 Windows2003认证学习主题(1) 系统管理员:如何在工作中学习成长 好好学习,你一定是个扎实的MCSE! MCDBA数据库设计学习BLOG |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站地图 | | |
![]() |
版权所有 Copyright© 2005 考研信息网 站长:考研信息网 |