㈠ 嵌入式设备的嵌入式设备上的linux系统开发
Linux正在嵌入式开发领域稳步发展。因为Linux使用GPL(请参阅本文后面的参考资料),所以任何对将Linux定制于PDA、掌上机或者可佩带设备感兴趣的人都可以从因特网免费下载其内核和应用程序,并开始移植或开发。许多Linux改良品种迎合了嵌入式/实时市场。它们包括RTLinux(实时Linux)、uclinux(用于非MMU设备的Linux)、MontavistaLinux(用于ARM、MIPS、PPC的Linux分发版)、ARM-Linux(ARM上的Linux)和其它Linux系统
嵌入式Linux开发大致涉及三个层次:引导装载程序、Linux内核和图形用户界配镇铅面(或称GUI)。引导装载程序通常是在任何硬件上执行的第一段代码。在象台式机这样的常规系统中,通常将引导装载程序装入主引导记录(MasterBootRecord,(MBR))中,或者装入Linux驻留的磁盘的第一个扇区中。通常,在台式机或其它系统上,BIOS将控制移交给引导装载程序。
专用软件可以直接与远程系统上的闪存设备进行交互并将引导装载程序安装在闪存的给定位置中。闪存设备是与存储设备功能类似的特殊芯片,而且它们能持久存储信息—即,在重新引导时不会擦除其内容。旅腔
某些种类的嵌入式设备具有微小的引导代码—根据几个字节的指令—它将初始化一些DRAM设置并启用目标上的一个串行(或者USB,或者以太网)端口与主机程序通信。然后,主机程序或装入程序可以使用这个连接将引导装载程序传送到目标上,并将它写入闪存。设置工具链在主机机器上创建一个用于编译将在目标上运行的内核和应用程序的构建环境—这是因为目标硬件可能没有与主机兼容的二进制执行级别。
工具链由一套用于编译、汇编和链接内核及应用程序的组件组成。这些组件包括:Binutils—用于操作二进制文件的实用程序集合。它们包括诸如ar、as、objmp、obj这样的实用程序。G—GNUC编译器。Glibc—所有用户应用程序都将链接到的C库。避免使用任何C库函数的内核和其它应用程序可以在没有该培好库的情况下进行编译。构建工具链建立了一个交叉编译器环境。本地编译器编译与本机同类的处理器的指令。交叉编译器运行在某一种处理器上,却可以编译另一种处理器的指令。重头设置交叉编译器工具链可不是一项简单的任务:它包括下载源代码、修补补丁、配置、编译、设置头文件、安装以及很多很多的操作。另外,这样一个彻底的构建过程对内存和硬盘的需求是巨大的。如果没有足够的内存和硬盘空间,那么在构建阶段由于相关性、配置或头文件设置等问题会突然冒出许多问题。
因此能够从因特网上获得已预编译的二进制文件是一件好事(但不太好的一点是,它们大多数只限于基于ARM的系统,但迟早会改变的)。一些比较流行的已预编译的工具链包括那些来自Compaq(FamiliarLinux)、LART(LARTLinux)和Embedian(基于Debian但与它无关)的工具链—所有这些工具链都用于基于ARM的平台。从用户的观点来看,图形用户界面(GUI)是系统的一个最至关重要的方面:用户通过GUI与系统进行交互。所以GUI应该易于使用并且非常可靠。但它还需要是有内存意识的,以便在内存受限的、微型嵌入式设备上可以无缝执行。所以,它应该是轻量级的,并且能够快速装入。
另一个要考虑的重要方面涉及许可证问题。一些GUI分发版具有允许免费使用的许可证,甚至在一些商业产品中也是如此。另一些许可证要求如果想将GUI合并入项目中则要支付版税。
最后,大多数开发人员可能会选择XFree86,因为XFree86为他们提供了一个能使用他们喜欢的工具的熟悉环境。但是市场上较新的GUI,象CenturySoftware的(Nano-X)和TrolltechQT/Embedded,与X在嵌入式Linux的竞技舞台中展开了激烈竞争,这主要是因为它们占用很少的资源、执行的速度很快并且具有定制窗口构件的支持。
㈡ 作为一个新人,怎样学习嵌入式Linux
先学会基本操作
Linux学习要点(转载自红联)
一、学习Linux的基本要求
1. 掌握至少50个以上的常用命令。
2. 熟悉Gnome/KDE等X-windows桌面环境操作 。
3. 掌握.tgz、.rpm等软件包的常雹山用安装方法
4. 学习添加外设,安装设卜笑备驱动程序(比如网卡)
5. 熟悉Grub/Lilo引导器及简单的修复操作 。
6. 熟悉Linux文件系统 和目录结构。
7. 掌握vi,gcc,gdb等常用编辑器,编译器,调试器 。
8. 理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程。
9. 学习Linux环境下的组网。
二、Linux常用命令
安装和登录命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
文件处理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
系统管理相关命令: df、 top、 free、 quota 、at、 lp、 adser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
系统安全相关命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho
三、Linux下常用软件
[媒体播放]
1)divx影片:mplayer
2)rm影片:realplayer10 for linux, mplayer
3)mp3: xmms,beep media player, mplayer
4)ape: xmms+monkey's audio plugin(http://supermmx.org/linux/mac/)
5)其他格式(wma, wmv, mkv, quicktime): mplayer 各种格式的文档和文件
[文件浏览]
1)打开微软的office文档: openoffice, starsuite
2)查看pdf文件:acroread for linux, kpdf, xpdf, ggv
3)查看ps文件: gsview, ggv, kghostview
4)chm文件: archmage,chmsee, Xchm,chmviewer
5)mht文件: ripmime,firefox+MAF插件
6)图表绘制: dia (等同于visio)
7).bin虚拟光盘: 用bin2iso或bchunk转成iso后mount
8)压缩文件
.rar: rar for linux或unrar
.zip: unzip
.bz2: bunzip2
.tar/.tgz: tar
[中文输入法]
1)scim
2)fcitx
[网络软件]
1) QQ: lumaqq, Gaim+openq plugin
2) MSN,icq,yahoo: Gaim
3) web浏览器:mozilla-firefox, mozilla, opera
4) ftp客户端(图形界面) :gftp, Iglooftp
5) ftp客户端(终端) :源弊中 lftp, ncftp
6) ftp服务器: pureftpd, proftpd, vsftpd
7) http下载(终端): wget, curl, prozilla
8) bt下载: bittorrent(终端), azureus(图形界面)
9) email软件(图形界面):KMail, thunderbird, sylpheed, evolution, opera M2
10) email终端: mutt, pine, gnus
11) RSS:liferea, aKregator
12) BBS:qterm, {rxvt,xterm,gnome-terminal,...}+BBSbot
[编辑器]
1) 文本: vim, emacs, jedit
2) 16进制: hexedit, ghex, mc
3) 图片浏览: gImageView, gqview
4) 图片处理: gimp, ImageMagick
5) 音频处理: audacity
[常用工具]
1)英汉字典: stardict(屏幕取词,词库大,英汉,汉英, 英英)
ibmdict(包含科技词典,词库大,英汉,汉英)
dictd:英汉 汉英 可以使用stardict的全部词库
cdict:英汉 汉英 使用安装方便,彩色显示.
2)科学计算:matlab, octave
3)科学作图:gnuplot, metapost
[虚拟机]
1) win下虚拟linux: cygwin, virtual-pc, colinux
2) linux下虚拟win: win4lin
3) 跨平台: vmware, bochs
4) linux下运行windows程序: wine, winex, crossover office
5) console下的中文环境: zhcon, cce