首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 开发>Linux 嵌入式>文章内容
自行打造嵌入式Linux软硬件开发环境
来源:赛迪网技术社区  作者:不详 发布时间:2007-05-19  

Linux和uClinux

1991年8月,芬兰的一个学生在comp.os.minix新闻组贴上了以下这段话:

 

你好所有使用minix的人-我正在为386(486)AT做一个免费的操作系统(只是为了爱好,不会象gnu那样很大很专业。

 

这名学生就是Linus Torvalds, 而他所说的'爱好'就变成我们今天知道的Linux。

 

由于Linux的源代码公布在互联网上,可以免费得到,因此从一开始就吸引了世界各地的UNIX 行家为Linux编写了大量的驱动程序和应用软件,在短短几年时间里,Linux就发展成为一个相当完善的操作系统,而且Linux支持的硬件平台是所有操作系统中最多的,目前Linux支持硬件平台:Intel的IA64、

Compaq的Alpha、Sun的Sparc/Sparc64、SGI的Mips、IBM的S396、ARM、PowerPC等。Linux更大的影响在于它正逐渐地应用于嵌入式设备,uClinux正是在这种氛围下产生的。uClinux就是Micro-Control-Linux,它也是一个开放源码的项目,uClinux的源代码和开发工具可以免费从ttp://www.uclinux.org上下载得到。uClinux是专为那些没有MMU(内存管理单元)的嵌入式处理器开发的,和主流的Linux相比,uClinux有以下的特点:

 

1.简化了内核加载方式,uClinux

 

的内核可以在Flash上直接运行:就是把uClinux的内核的可执行映象烧写到flash上,系统启动时从Flash的某个地址开始逐句执行;也可以加载到内存中运行:把内核的压缩文件存放在Flash上,系统启动时读取压缩文件在内存里解压,然后开始执行。

 

2.采用了romfs文件系统作为root文件系统:这种文件系统相对于一般的ext2文件系统要求更少的空间,首先内核支持romfs文件系统比支持ext2文件系统需要更少的代码,其次romfs文件系统相对简单,建立文件系统superblock需要更少的存储空间。Romfs文件系统不支持动态擦写,对于系统需

要动态保存的数据采用RAM盘的方法处理,RAM盘采用ext2文件系统。

 

3.使用了Flat可执行文件格式:elf格式有很大的文件头,flat文件对文件头和一些段信息做了简化。

 

4.重写了应用程序库:

 

uClibc对libc做了精简,uClinux对用户程序采用静态连接的形式。uClinux的开发环境www.uclinux.org为uClinux提供了GNU的交叉编译器,包括以下组件:Gcc交叉编译器,即在宿主机上开发编译目标上可运行的二进制文件;Binutils辅助工具,包括objdump、as、ld等;Gdb调试器。以在ARM7上开发uClinux为例:

 

1.获得uClinux-dist的源码包,www.uclinux.org上定期为新推出的Linux内核推出相应的源码包,最新的版本为Kernel-2.4.21,可以从http: //www.uclinux.org/pub/uClinux/dist/

上免费下载得到。这个源码包里包含了uCLinux-2.4.21、uClibc和已经移植到uClinux下的用户应用程序。下载完后,会得到一个

 

uClinux-dist-20030522.tar.gz的文件,把它保存到/home目录下,然后执行:tar zxvf

uClinux-dist-20030522.tar.gz,当tar程序运行完毕后,在/home目录下会有一个/home/uClinux-dist

 

的新目录,这个目录就是uClinux的源码根目录,里面有进行uClinux开发的所有的源代码。

2.获得ARM开发工具,www.uclinux.org提供uClinux源码的同时还提供相应的交叉编译工具。要在开发主机上为ARM7目标系统编译uClinux,还需要从http://http: //www.uclinux.org/pub/.../arm-elf-tools/上下载ARM交叉编译器:arm-elf-tools-20030314.sh。得到这个文件以后,执行以下命令:sharm-elf-tools-20030314.sh,这个命令会在开发主机上自动建立一个uClinux-ARM的交叉编译环境。键入arm-elf- gcc,如果能看到下面的输出信息:

 

Reading specs from /usr/local/lib/gcc-lib/arm-elf/2.95.3/specsgcc

version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from

http://fiddes.net/coldfire/)(uClinux XIP and shared lib patchesfrom

 

http://www.snapgear.com/)表示uClinux-ARM的交叉编译环境已经建立起来了。现在开发主机里已经有了uClinux的源代码和编译这些源代码的工具,也可以用make menuconfig,make等命令来编译uClinux和用户程序,为ARM目标板编译了一个内核映像文件,接下来要做得是需要一块ARM7的开发板来运行这个映像文件(关于如何编译uClinux和用户程序请参考www.uClinux.org 上得相关文档)。构建ARM7-uClinux开发板uClinux只需要极少的硬件资源就可运行起来,以ARM7TDMI为例,只需要以下硬件:

 

1.CPU ? Samsung S3C4510B

 

2.SDRAM 8M以上 3.一个简易的串口 4.2M Flash 5.一个以太网接口(可选)目前各嵌入式微处理器的厂商在推出每款处理器的同时都会提供一个Demo板,供用户来测试微处理器的性能。Samsung公司对S3C4510B处理器提供了一款SNDS100的Demo板。Demo板的原理图可以从Samsung公司的网站上免费下载,对这个原理图作一些修改,只保留上面列出的5个部分,去掉其他多余的部分。修改以后的原理图就是一个能够运行uClinux的ARM7目标板原理图,然后根据这个原理图去加工几张PCB板,焊上相应的元件,一块能运行uClinux的ARM7开发板就做成了(这款开发板相应得原理图、PCB图可以从http://www.dailzh.net上免费下载得到)。慢着,虽然这块开发板已经焊接完成,但目前它只是一堆电子零件的简单组合,要在它上面跑uClinux,还需要相应的软件来管理这些硬件。前面提到uClinux可以从Flash中直接运行,就是说可以将uClinux的映像文件直接烧写到Flash中,然后上电,uClinux会从Flash中启动吗?是的,确实如此。现在要做的就是如何将uClinux的内核映像烧写到Flash中。用写入器将uClinux内核映像写入到Flash中,然后将Flash焊接到pcb板上或插到开发板的flash的插座上可以吗?当然可以,如果你有写入器的话。不过,很少有人手里能有这种写入器。我们需要的是一个廉价的Flash写入方案。用JTAG,S3C4510B上集成了一个JTAG,通过JTAG我们可以控制S3C4510B上所有管脚,这样可以通过向JTAG接口输入相应的指令和数据,用软件的方法在S3C4510B的数据、地址和控制总线上产生出Flash器件的读写操作时序,将uClinux的内核映像文件烧写到Flash中(关于S3C4510B的JTAG接口电缆的制作和下载烧写uClinux映像文件到Flash中的程序可执行文件和源代码请参阅

共2页: 上一页 1 [2] 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·嵌入式Linux系统下图形库讲解及
·Qt/Embedded在嵌入式Linux中的应
·嵌入式Linux:uClinux操作系统移
·嵌入式系统 Boot Loader 技术内
·嵌入式 用户图形接口uC/GUI的简
·基于GTK+和X的GUI在嵌入式Linux
·嵌入式Linux系统下的MiniGUI研究
·Linux串口上网的简单实现 (图解)
·在Ubuntu上建立Arm Linux的开发
·嵌入式Linux操作系统启动信息完
·Linux 2.6 内核的嵌入式系统应用
·嵌入式Linux在Blackfin处理器上
  相关文章
·在Ubuntu上建立Arm Linux的开发
·主流嵌入式Linux动态扩展技术比
·Linux“锁骨功” 一张软盘上的嵌
·嵌入式系统优先级反转问题的分析
·在嵌入式Linux中实现802.11b无线
·嵌入式Linux发展 谈Montavista L
·嵌入式程序员应知道的几个基本问
·细看嵌入式Linux时代发展
·嵌入式Linux系统的GDB远程调试的
·关于嵌入式Linux系统进程调度的
·教你一种实现嵌入式Linux系统新
·主流嵌入式Linux系统下GUI解决方

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!