⑴ 嵌入式linux系统开发的具体步骤
第一步、建立交叉编译环境
没有交叉开发经验的读者,可能一时很难接受这个概念。首先,要明白两个概念:一般
我们工作的机器,称为开发机、主机;我们制作好的系统将要放到某台机器,如手机或另一
台PC机,这台机我们称为目标主机。
我们一般开发机上已经有一套开发工具,我们称之为原生开发套件,我们一般就是用它
们来写程序,那么,那什么又是交叉编译环境呢?其实一点也不神秘,也就是在开发机上再
安装一套开发工具,这套开发工具编译出来的程序,如内核、系统工作或者我们自己的程序,
是放在目标主机上运行的。
那么或许有初学者会问,直接用原生开发工具为目标主机编译程序不就完了?至少我当
初是这么想的。一般来说,我们的开发机都是X86 平台,原生开发套件开发的工具,也针
对X86 平台,而我们的目标主机可能是PowerPC、IXP、MIPS……所以,我们的交叉编译
环境是针对某一类具体平台的。
一般来讲,交叉开发环境需要二进制工具程序、编译器、C链接库,嵌入式开发常用的
这三类软件是:
Binutils
Gcc
uClibc
当然,GNU包含的工具套件不仅于此,你还要以根据实际需要,进行选择
第二步、编译内核
开发工具是针对某一类硬件平台,内核同样也是。这一步,我们需要用第一步中建立的
工具,对内核进行编译,对于有内核编译经验的人来说,这是非常简单的;
第三步、建立根文件系统
也就是建立我们平常看到的bin、dev、proc……这一大堆目录,以及一些必备的文件;
另外,我们还需要为我们的目标系统安装一些常用的工具软件,如ls、ifconfig……当然,
一个办法是找到这些工具的源代码,用第一步建立的交叉编译工具来编译,但是这些软件一
是数量多,二是某些体积较大,不适合嵌入式系统,这一步,我们一般都是用busybox来完
成的,包括系统引导软件init;
最后,我们为系统还需要建立初始化的引导文件,如inittab……
⑵ linux嵌入式开发到底学些什么东西啊
嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”(原文为:Devices
Used
to
Control,Monitor
or
Assist
the
Operation
of
Equipment,Machinery
or
Plants)。这主要是从应用对象上加以定义,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
嵌入式主要用到的是C语言,C++,但Java也用于嵌入式技术,主要是用在嵌入式游戏开发,移动开发等,主要侧重JAVA的J2ME方向。
嵌入式的发展前景跟就业前景很不错,目前国内这方面的人才也比较紧缺。所以你学这方面的专业比较好。嵌入式主要分为三大块:
1.嵌入式Linux系统开发:侧重开发环境搭建、内核原理、交叉编译等
2.嵌入式Linux应用开发:侧重Linux应用编程、内核编译、系统调用。
3.嵌入式Linux驱动开发:侧重嵌入式Linux系统下的驱动开发、内核的深入分析。目前市场上专业的嵌入式培训很多很乱,因为是最近几年发展起来的。据我所知最权威最专业的要数东方赛富嵌入式培训学院了,位于清华大学东门,跟清华大学有很深的渊源关系。特别是师资,师资团队是整个嵌入式培训领域最好的。80%的老师来自清华大学、世界500强企业和中国顶尖的IT公司。
如果时间及经济条件允许的话,培训一下还是有很好的,既学到了专业知识,同时也解决了就业问题,就业单位也比自己找的要好很多!如需要培训他们是不二的选择!
⑶ 嵌入式开发为什么基于linux环境下
关于这个问题,可以换个方式来表述,就好比嵌入式开发是否一定需要装虚拟机并且安装linux系统这类的思考。当然回答是否定的,在windows下也能学习开发,所以不一定要安装linux;
但是,由于嵌入式产品是基于linux内核开发的,所以在开发初期为了方便,应该有一个基本的开发环境,这也是为什么要安装linux操作系统的原因了;
而为什么要虚拟机,是出于生活工作习惯了桌面的操作系统,并且不得不肯定的是windows操作系统提供了很多用户体验很高的应用程序,所以,在生活的同时,工作中,学习里,需要用linux操作系统进行开发,就直接在windows上安装虚拟机即可;
还有一点就是,开发过程中,介于跨平台的性质,很多产品也是运行在windows下的,所以也需要进行交叉编译;
综上所述,在linux操作系统进行学习开发是明智的选择。