当前位置:首页 » 操作系统 » 嵌入式linux开发平台

嵌入式linux开发平台

发布时间: 2022-02-26 18:27:47

① 如何选择嵌入式linux开发工具

嵌入式Linux具有稳定、可伸缩及开放源代码等特点,可兼容多种处理器和主机,广泛适用于各种产品和应用。但是,交叉编译、设备驱动程序开发/调试,以及更小尺寸等要求对嵌入式Linux开发者来说都是严峻的挑战。为应对这些挑战,针对嵌入式Linux开发的专用工具应运而生,而且发展十分迅猛。

但是,许多这类开发工具都不兼容非X86平台,而且也没有很好地实现归档备案或集成。在其它开发环境下,组件间的高度集成并没有完全兑现。因此,要想完全从这些免费的软件组件开始创建一个完整的跨平台开发环境,开发者应意识到这将需要大量的调研、实施、培训和维护方面的工作。

Linux是少数既可以在嵌入式设备上运行也可作为开发环境的操作系统之一。这一特性可让开发者在转向此开发系统之前于常用硬件(比如X86桌面系统)之上开发、调试和测试应用程序和库,因此可减少对标准参考平台和指令集仿真器的依赖。这一技术仅适用于应用程序和库,但不适用于设备驱动程序,因为后者的开发依赖于Linux架构。

开放源代码团体及一些软件供应商可提供设备驱动程序开发工具。由于设备驱动程序比标准应用程序距离硬件更近,因此它们的开发比较困难。所幸的
是,Linux桌面系统可以利用一些Windows及其它操作系统所没有的工具。有足够经验开发设备驱动程序的开发人员可能已经习惯将
Linux作为他们的桌面开发系统了。

Linux的快速发展及其桌面方案的不断涌现提出了一个重要问题:所选择的工具方案怎样在不同的Linux分布式系统上运行?它们依赖于主机平台的软件配置吗?

有些Linux工具提供独立于主机平台的开发环境,包括一系列可支持开发工具的应用软件、库和实用程序。这一方法几乎将开发环境与主机配置完全隔离开来,因此主机可以是任何Linux分布式系统,而且任何更新和修改都不会影响开发环境的功能。

这种方法的主要缺点是对存储空间的要求有所增加――约200MB,因为它自己实际上相当于一个微型Linux分布式系统。

可用的工具

一个嵌入式Linux产品的开发需要几个阶段,包括为目标板配置和构建基本Linux OS;调试应用程序、库、内核及设备驱动程序/内核模块;出货前最终方案的优化、测试和验证。

有数百种开放源代码开发工具可供选择。只要开发者原意花时间和精力去调研、实施和维护一系列各不相同的工具,总能找出一个完整的解决方案,完成几乎任何开发任务。图1:开发者必须精确地考虑到这些工具的松散集合能提供什么样的功能,以及需要付出多大的努力才能形成完整的解决方案。

在Linux应用程序和库的调试方面,GNU Debugger(GDB)作为一种标准已有几年的历史。它是一种命令行程序,由多个不同的图形用户界面前端予以支持,每个前端都能以多种方式提供调试控制功能。尽管GDB不是一个完美的方案,但它足够应对各种调试任务,而且已经得到开放源代码团体的广泛支持。

Linux内核或设备驱动程序的调试要比应用程序的调试繁琐得多。

在做调研时,以下方面应特别注意:

什么调试方法支持要开发产品的硬件?需要什么内核补丁程序?还需要其它什么补丁程序?调试界面怎么样,如何使用?该工具需要调试内核模块及处理虚拟地址转换吗?还需要其它什么工具才能提供完整的方案?

经过进一步的调查,开发者往往发现工具A和工具B并没有提供完全一致的功能,因为它们是在彼此独立的情况下开发的。结果,开发者必须精确地考虑到这些工具的松散集合能提供什么样的功能,还需要付出多大的努力才能形成完整的解决方案。

如果不同处理器类型间的集成、可用性、互操作性和移植性很关键的话,开发者应考虑购买商用开发工具。这主要是因为将开发一个“免费”方案所付出的努力考虑进去,商用开发工具并不算贵。

Linux BSP

Linux系统有两大主要部分:带设备驱动程序的Linux内核;以及根文件系统,包括系统所需的全部支持应用程序、服务和库。除了驻留在目标
板上的OS组件外,还需要创建一个由GNU Compiler
Collection构成的交叉编译环境,为库和二进制程序(binutils)提供支持。

虽然几乎每一个组件都可在网上找到,但在硬件或设备驱动程序支持、集成测试信息、交叉编译指南或软件兼容性方面却很难收集到太多信息。尽管开发
者可从网上免费下载各种组件以配置嵌入式Linux操作系统,但每个组件在版本、支持、稳定性和测试等方面的状态则需要开发者自己决定。然后,开发者还要
完成最后的OS集成和测试,以及为所开发产品提供终身Linux OS维护。

另一方面,嵌入式Linux供应商所提供的商用Linux板支持工具包一般都是经过预先安装和测试的,而且提供支持和维护。其它须考虑的因素包括Linux桌面主机将会添加不同的库和内核功能,以及由于组织内的开发者变动而引起的长期维护问题。

品质保证部门一般会执行一系列严格的验证和性能测试,其中包括存储器泄漏检测/纠正、代码优化和任务跟踪等。那些想利用开放源代码工具开发面向
非X86平台的嵌入式Linux产品开发者将会发现这一任务甚至要比选择开放源代码调试方案难得多。Linux Trace
Toolkit、Valgrind工具及其它存储器分析程序可完成部分测试和验证任务。但总的来说,它们缺乏关键特性、集成功能及广泛的硬件支持。这些开
放源代码分析工具的评估过程与评估调试方案的过程基本相同。

最后的分析就是,一个设计得恰到好处的开发环境应能够提供商用和开放源代码两个世界所具有的最好特性:
◆交钥匙开发能力;◆易于使用和集成;◆大型工程组织的协调控制;◆品质和支持保证;◆持续性;◆按照自己的判断力使用开放源代码的能力

② 想做嵌入式linux平台上的c/c++开发,如何入手

准确的说,LINUX下C才是主要的开发语言,但是写应用程序还是要用面向对象的,尤其是图形界面的,不如QT和X和GTK等等。下面说的必须要求你C语言学的很好而且会使用LINUX的情况下。LINUX常用命令要熟悉。

要学LINUX下的C编程,先看一两本LINUX下C的书比较好,这个你自己选择,但是经典的书还是好一些,比如《LINUX程序设计》、《UNIX环境高级编程》,看这些的时候把书上的例子选择一些自己编译一下,哪怕是照着敲进去,事半功倍。

看完一本这样的书,你对LINUX系统编程的知识就足够了,这时候你可以开始阅读一些LINUX下的源代码来锻炼和提升能力了,LINUX下有很多开源的软件,你可以搜一下,应用程序也很多,但是最好的源代码还是LINUX内核。

推荐一本简单的内核书《linux内核完全剖析0.12》,这个讲的是0.12内核,代码量只有1万多行的内核,现在的2.6估计一千万,一辈子看不完。这个书讲了很多X86体系结构的知识,这时理解内核必备的,汇编你要能看懂。

能看懂内核代码了,就说明你至少不是初学者了,现在肯定能开发项目了,有了经验后,恭喜你,你就成为一名LINUX程序员了。

再由这些基础后,你就可以选择一些具体的开放方向了,比如底层一点,驱动,协议等、或者嵌入式应用等、或者是QT等。不过这就是后话了,呵呵

我自己的一些体会,希望能对你有用。

③ linux平台嵌入式开发环境搭建

EABI_4.3.3_EmbedSky_20090812.tar.bz2:支持eabi的arm toolchain,也就是编译器工具链。

linux-2.6.30.4_20090826.tar.bz2 :linux内核源码包,可以根据你的板子进行配置内核,run在你的板子上。

root_qtopia_2.2.0_2.6.30.4_20090829.tar.bz2 :文件系统目录。

u-boot-1.1.6_20090824.tar.bz2 :uboot,bootloader代码。

zlib-1.2.3.tar.gz:一个库文件,正规的做法不应该把它放在这边,我估计他们已经把这个zlib编译好了,放到toolchain里面去了,这里只不过给你个源码而已。

一个嵌入式系统包括:
bootloader,也就是你的uboot
linux kernel,就是你的linux-2.6.30.4_20090826.tar.bz2
文件系统,也就是你的root_qtopia_2.2.0_2.6.30.4_20090829.tar.bz2
应用程序:你这里没有,就是一些应用程序demo,测试code之类的。

所有的程序都应该用你的toolchain编译,也就是用EABI_4.3.3_EmbedSky_20090812.tar.bz2。

④ 嵌入式linux开发用什么linux系统

嵌入式操作系统的主要好处就是屏蔽了底层硬件的差别,给上层应用提供统一的接口,并管理进程调度和资源(如CPU时间、内存)分配等。就跟windows操作系统一样,不管你是用华硕的电脑还是戴尔的电脑,只要装了windows操作系统,你都可以用office、词霸之类的软件。人机界面(MMI)是上层应用show出来的。
简单的嵌入式应用不需要嵌入式操作系统的支持,如单片机,直接用汇编程序就能实现特定的功能。要跑的应用多了,就需要操作系统来进行管理。

一般手机产品、小型医疗设备、军工设备等都用到了arm+linux的平台。
arm处理器(CPU)是目前使用较多的,使用的嵌入式操作系统可以是多种多样的,不光是linux。嵌入式linux系统比较稳定,有开源代码,成本低,可移植性强;可以灵活裁剪不需要的功能,减小嵌入式软件的大小和降低系统功耗。所以用嵌入式linux操作系统的不少。但现在很多公司都是用那种商业化的定制好的嵌入式linux平台以减少开发量和加快开发速度(比如有专门针对通讯设备的,有专门针对一般消费电子类的),这就需要买了。

⑤ 嵌入式linux系统开发的具体步骤

第一步、建立交叉编译环境
没有交叉开发经验的读者,可能一时很难接受这个概念。首先,要明白两个概念:一般
我们工作的机器,称为开发机、主机;我们制作好的系统将要放到某台机器,如手机或另一
台PC机,这台机我们称为目标主机。
我们一般开发机上已经有一套开发工具,我们称之为原生开发套件,我们一般就是用它
们来写程序,那么,那什么又是交叉编译环境呢?其实一点也不神秘,也就是在开发机上再
安装一套开发工具,这套开发工具编译出来的程序,如内核、系统工作或者我们自己的程序,
是放在目标主机上运行的。
那么或许有初学者会问,直接用原生开发工具为目标主机编译程序不就完了?至少我当
初是这么想的。一般来说,我们的开发机都是X86 平台,原生开发套件开发的工具,也针
对X86 平台,而我们的目标主机可能是PowerPC、IXP、MIPS……所以,我们的交叉编译
环境是针对某一类具体平台的。
一般来讲,交叉开发环境需要二进制工具程序、编译器、C链接库,嵌入式开发常用的
这三类软件是:
Binutils
Gcc
uClibc
当然,GNU包含的工具套件不仅于此,你还要以根据实际需要,进行选择
第二步、编译内核
开发工具是针对某一类硬件平台,内核同样也是。这一步,我们需要用第一步中建立的
工具,对内核进行编译,对于有内核编译经验的人来说,这是非常简单的;
第三步、建立根文件系统
也就是建立我们平常看到的bin、dev、proc……这一大堆目录,以及一些必备的文件;
另外,我们还需要为我们的目标系统安装一些常用的工具软件,如ls、ifconfig……当然,
一个办法是找到这些工具的源代码,用第一步建立的交叉编译工具来编译,但是这些软件一
是数量多,二是某些体积较大,不适合嵌入式系统,这一步,我们一般都是用busybox来完
成的,包括系统引导软件init;
最后,我们为系统还需要建立初始化的引导文件,如inittab……

⑥ 如何搭建Linux嵌入式开发平台

Linux上搭建C/C++IDE开发环境的详细介绍。 Redhat linux上面没有提供Anjuta软件包,上面提供了一个Glade应用程序界面设计工具。Linux上面使用Anjuta和Glade以及 Glademm软件包可以搭建一个linux下面进行C/C++软件开发的IDE环境,可以进行GTK+/Gnome的应用程序开发。 以前开发 Linux 程序时写出好的图形化用户界面比较难。在 GIMP 工具包 (GTK)诞生之后,这件事就变得比较容易了。当Damon Chaplin 写出 GLADE 这个用于在 GTK 环境下生成图形化用户界面的工具后,就更容易了。但是GLADE 仍然不能算是一个“集成开发环境”(如 Visual Basic 等等.),因为程序员不能在 GLADE 的环境下手动修改 GLADE 产生的代码。现在,这一切都已成为过去: Anjuta诞生了! Anjuta 利用 GLADE 生成优美用户界面的能力,加之以自己强大的源程序编辑能力,正成为一个极好的应用程序快速开发的集成环境(IDE)。以前,人们使用 GLADE 做界面,用 emacs 或 vi 等等编辑程序,再用某种终端模拟器编辑开发项目。使用 Anjuta,所有这些繁杂零散的任务都可以在一个统一的、集成的、自然而然的环境下完成。 详细介绍请访问网站: www.ofuzone.com 查看原帖>>

⑦ 学习linux嵌入式开发什么软件好

想学习linux的嵌入式开发,想问下一般用什么软件?最好叫我下学习流程!越详细越好啊
用Linux平台就行了,C语言一定要学好,指针一定要明确,像指针数组、数组指针、指针函数、函数指针数组、函数返回值是个指针,结构体指针(主要是链表)、文件操作指针(FILE *其实是typedef结构体的指针)等,要灵活运用typedef 定义类型、灵活运用结构体。
再学习Linux的系统编程,主要是文件操作,文件描述符fd,对文件的操作write,read,open.close等,然后学习进程fork();vfork();创建进程和管理父子进程,进程之间的通信无名管道、命名管道、消息队列、共享内存、信号量、套接字等;都掌握之后要学线程以及线程的互斥和同步,线程之间共享进程的资源,就要对资源进行合理的分配,例如信号量sem和线程互斥锁pthread_mutex,信号是用来检测信号的ISGNAL的,常见的信号例如ctrl+c,中断前台的进程和kill中断后台的进程,如果对网络感兴趣,可以学习下Linux的网络套接子Socket,实现多台主机之间进程的通信,例如QQ和IPMSG都是对网络套接字的操作,熟悉一下TCP、UDP协议和Tftp、HTTP的网络层的传输协议,个人觉得解析buff最费时间,可以自己做一下IPMSG,单用户和并发server,echo服务器。
感兴趣GUI的可以学习一下C++和Qt,Qt被nokia收购,nokia被微软收购,Qt支持很多的平台,很实用,C++主要是对类的操作,和C中的结构体相似,class 类名挺好的,不错;// 声明类class 类名:继承方式 基类挺好的,不错;//继承类类中包含私有成员、公有成员、受保护的成员,类是对事物共性的一种抽象,对象是共性的一种实体化,是类的一个实例,老师的共性是:教书,吃饭,睡觉等,可以抽象成一个类,个性是年龄、性别、名字等,是老师类的一个实例,C++还有很多的内容,Qt是用C++来写的,其中的窗口都是派生于QWidget的,具体的不多说了。
学完C++和Qt,有了面向对象的概念后,可以去学Java和android系统,做手机的应用软件和游戏开发,和Java 和C++类似,去掉c++中指针部分,完全脱离了内存的操作,完全的面向对象,android和Qt类似,具体内容不多说了。
说说底层的吧:
底层主要用到的是C语言和arm汇编主要是v4版本以后的汇编标准语言,首先清楚底层是怎么引导Linux系统的,嵌入式很大一部分使用缩减版的Linux内核主要是稳定版本的,千万不要去追求最新,最适合的才是最好的,前部分由汇编语言引导C语言,主要设置开发板软硬件的环境,主要是bootloader(vivi、uboot.bin),然后把设置好的param参数传给内核,内核调用这些参数去找相应的文件,进行相应的操作,然后就是Linux的根文件系统了,最后是软件的移植。
用到的软件:vmplayer (Linux redenterp版)、windows下的超级终端,LSJF24X0.exe(下载bootloader时使用,也可以用H-Jtag)、tftpd32.exe(做windows下的server用,用于u-boot网线下载)等工具。
以上是个人的体会,仅供参考!
《linux就该这么学》免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好

⑧ 通常可用哪几种方式来开发嵌入式Linux系统

是指系统配置,还是指平台搭建?
一般软件平台的搭建方式有:
1、Windows+Cygwin+GCC+GDB+调试接口;
2、Windows+Eclipse+GCC+调试接口;
3、Windows+专业的商业Linux开发环境+调试接口;
4、Windows+专用的嵌入式Linux开发环境(如Android的SDK)+调试接口;
5、Linux+GCC+GDB+Linux图形界面开发环境+NFS;
......................
等等。暂列这么多,更多的列不完。因为现在有很多的软件商提供嵌入式Linux的开发环境和工具链(Toolchain)。其基本结构就是:主机+交叉编器+调试环境+设备驱动+调试接口。可网络:嵌入式linux开发环境
编程语言就更杂了,现在主要用的就是C/C++和Java。

⑨ 嵌入式开发和linux开发一样吗

1.什么是嵌入式Linux系统?
嵌入式Linux系统就是利用Linux其自身的许多特点,把它应用到嵌入式系统里。

Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;其次,Linux的内核小、效率高,内核的更新速度很快;第三,Linux是免费的OS,在价格上极具竞争力。

Linux还有着嵌入式操作系统所
需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统。到目前为止,它可以支持二三十种CPU。而且性能稳定,裁剪
性很好,开发和使用都很容易。很多CPU包括家电业芯片,都开始做Linux的平台移植工作。移植的速度远远超过Java的开发环境。也就是说,如果今天
用Linux环境开发产品,那么将来换CPU就不会遇到困扰。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的

热点内容
狂三脚本 发布:2024-11-15 17:31:38 浏览:871
附近存储柜 发布:2024-11-15 17:15:17 浏览:451
王选解决汉字存储问题 发布:2024-11-15 17:15:11 浏览:659
球球大作战安卓为什么不能玩哪些模式 发布:2024-11-15 17:14:26 浏览:995
存储器讲课 发布:2024-11-15 17:14:12 浏览:195
安卓充电头怎么称呼 发布:2024-11-15 17:11:17 浏览:445
猎人手游源码 发布:2024-11-15 17:09:28 浏览:432
qt资源图片编译 发布:2024-11-15 16:59:26 浏览:665
编译选项保护范围最广 发布:2024-11-15 16:57:47 浏览:605
c语言中的除号 发布:2024-11-15 16:51:09 浏览:215