嵌入式linux操作系统,嵌入式linux怎么学
嵌入式linux操作系统,嵌入式linux怎么学详细介绍
本文目录一览: 什么是嵌入式Linux系统
什么是嵌入式Linux系统?
嵌入式Linux系统就是利用Linux其自身的许多特点,把它应用到嵌入式系统里。
Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;其次,Linux的内核小、效率高,内核的更新速度很快;第三,Linux是免费的OS,在价格上极具竞争力。
Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统。到目前为止,它可以支持二三十种CPU。而且性能稳定,裁剪性很好,开发和使用都很容易。很多CPU包括家电业芯片,都开始做Linux的平台移植工作。移植的速度远远超过Java的开发环境。也就是说,如果今天用Linux环境开发产品,那么将来换CPU就不会遇到困扰。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的
嵌入式linux系统开发详解_嵌入式linux系统介绍
嵌入式Linux开发从下到上分为:嵌入式硬件开发、嵌入式驱动开发、嵌入式系统开发、嵌入式软件开发。
一、嵌入式硬件开发:熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力。熟练掌握嵌入式硬件知识,熟悉硬件开发模式和设计模式,熟悉ARM32位处理器嵌入式硬件平台开发、并具备产品开发经验。精通常用的硬件设计工具:Protel/PADS(PowerPCB)/Cadence/OrCad。一般需要有4~8层高速PCB设计经验。
二、嵌入式驱动开发:熟练掌握Linux操作系统、系统结构、计算机组成原理、数据结构相关知识。熟悉嵌入式ARM开发,至少掌握Linux字符驱动程序开发。具有单片机、ARM嵌入式处理器的移植开发能力,理解硬件原理图,能独立完成相关硬件驱动调试,具有扎实的硬件知识,能够根据芯片手册编写软件驱动程序。
三、嵌入式系统开发:掌握Linux系统配置,精通处理器体系结构、编程环境、指令集、寻址方式、调试、汇编和混合编程等方面的内容;掌握Linux文件系统制作,熟悉各种文件系统格式(YAFFS2、JAFFS2、RAMDISK等);熟悉嵌入式Linux启动流程,熟悉Linux配置文件的修改;掌握内核裁减、内核移植、交叉编译、内核调试、启动程序Bootloader编写、根文件系统制作和集成部署Linux系统等整个流程;、熟悉搭建Linux软件开发环境(库文件的交叉编译及环境配置等);
四、嵌入式软件开发:精通Linux操作系统的概念和安装方法、Linux下的基本命令、管理配置和编辑器,包括VI编辑器,GCC编译器,GDB调试器和Make项目管理工具等知识;精通C语言的高级编程知识,包括函数与程序结构、指针、数组、常用算法、库函数的使用等知识、数据结构的基础内容,包括链表、队列等;掌握面向对象编程的基本思想,以及C语言的基础内容;精通嵌入式Linux下的程序设计,精通嵌入式Linux开发环境,包括系统编程、文件I/O、多进程和多线程、网络编程、GUI图形界面编程、数据库;熟悉常用的图形库的编程,如QT、GTK、miniGUI、fltk、nano-x等。
所以如果你要做嵌入式软件开发的话,上面那些知识基本够用了。
嵌入式操作系统是什么_嵌入式操作系统
1.嵌入式Linux
嵌入式Linux(EmbeddedLinux)是标准Linux经过小型化裁剪处理之后的专用Linux操作系统,能够固化于容量只有几KB或者几MB的存储器芯片或者单片机中,适合于特定嵌入式应用场合。目前已经开发成功的嵌入式系统中,大约一半的系统使用嵌入式Linux。
这与它的父辈—Linux自身的优良特性是分不开的。
首先,Linux系统具有鲜明的层次结构且内核完全开放。Linux由很多体积小且性能高的微内核和系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要很容易地对内核进行裁剪,在低成本的前提下,设计和开发出真正满足自己需要的嵌入式系统。
其次,Linux具有强大的网络支持功能。Linux诞生于因特网并具有UNIX的特性,这就保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈开发出嵌入式TCP/IP网络协议栈。
再次,Linux具备一套完整的工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍。一般,嵌入式操作系统的程序调试和跟踪都是使用仿真器来实现的,而使用Linux系统做原型的时候就可以绕过这个障碍,直接使用内核调试器来进行操作系统的内核调试。
最后,Linux具有广泛的硬件支持特性。无论是RISC还是CISC,无论是32位还是64位处理器,Linux都能在其上运行。Linux最通常使用的微处理器是IntelX86芯片家族,但它也能运行于嵌入式处理器上,这意味着嵌入式Linux将具有更广泛的应用前景。
嵌入式Linux同Linux一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络支持等优点。另外,为了更好地适合嵌入式领域的开发,嵌入式Linux还在Linux基础上做了部分改进,如将其内核结构由整体式结构改为微内核结构,并且还提高了系统的实时性。
嵌入式Linux同Linux一样,也有众多的版本,不同的版本针对不同的需要在内核等方面加入了特定的机制。
目前,朱有鹏老师提供了有关Linux最全面深入系统性的教学课程,可以搜索朱有鹏物联网大讲堂,官网观看免费视频。
2.VxWorks
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),VxWorks具有以下优点。
·实时性好。其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,使得它们产生的延迟很短。另外VxWorks提供的多任务机制中对任务的控制采用优先级抢占和轮转调度机制,充分保证了可靠的实时性。
·可靠性高,从而保证了用户工作环境的稳定。
·集成开发环境完备、强大,方便了用户的使用。
但是,由于VxWorks源码不公开,它部分功能的更新(如网络功能模块)滞后。VxWorks的开发和使用都需要交高额的专利费,这就大大增加了用户开发的成本。
3.QNX
QNX由加拿大QNX软件系统有限公司开发,广泛应用于自动化、控制、机器人科学、电信、数据通信、航空航天、计算机网络系统、医疗仪器设备、交通运输、安全防卫系统、POS机、零售机等任务关键型应用领域。
QNX独特的微内核和消息传递结构使其运行和开发时非常方便。QNX具有非常好的伸缩性,用户可以把应用程序代码和QNX内核直接编译在一起,使之为简单的嵌入式应用生成单一的映像。
4.WindowsCE(推荐课程:WindowsCE系统定制与驱动开发培训班)
WindowsCE是微软公司开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统。WindowsCE的图形用户界面相当出色,WindowsCE具有模块化、结构化、基于Win32应用程序接口以及与处理器无关等特点。
WindowsCE继承了传统的Windows图形界面,用户在WindowsCE平台上可以使用Windows95/98上的编程工具(如VisualBasic、VisualC等),使用同样的函数,使用同样的界面风格,Windows上的绝大多数应用软件只需简单修改和移植就可以在WindowsCE平台上继续使用。但是WindowsCE开发平台较为昂贵,在一定程度上限制了其发展。
5.PalmOS
PalmOS在PDA领域有着很大的用户群,一度占领PDA操作系统90%以上市场份额。PlamOS最明显的特点是精简,它的内核只有几千个字节,同时用户也可以方便地开发、定制,具有较强的可操作性。
6.C/OS
源代码公开,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,系统短小精悍,是研究和学习实时操作系统的首选,但在工程应用领域使用较少。
linux与嵌入式系统的关系
linux和嵌入式系统是相互于相互交叉使用的。
嵌入式系统的定义就是软硬件可裁剪,在实际项目中,对产品的功耗、存储等要求严格,所以就会涉及将完整的Linux系统进行精简瘦身,节约存储提高效率,这就是所谓的系统移植、裁剪。此工作需要对Linux内核极其熟悉。
Linux驱动开发:嵌入式产品上面的各种外设的驱动开发,不仅要懂软件、还需要熟悉Linux内核代码、了解硬件相关知识。
嵌入式应用开发:调用Linux的系统调用接口,进行基于Linux系统的应用开发,只需要有LinuxC语言知识的积累即可完成。
扩展资料
嵌入式linux的特点
1、嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。
2、嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费。
3、一些嵌入式系统设计成具有附加的功能,如存储在非易失性存储器中的程序,并且具有运行可以完成原始设计范围之外的任务的多任务操作系统的能力。
参考资料来源:百度百科—嵌入式linux
关于嵌入式Linux系统
1.1嵌入式Linux系统硬件环境
图4.1开发环境硬件连接
通常基于嵌入式linux系统的开发环境一般由目标机、开发板、交叉编译工具链、远程调试工具和下载机制组成。本课题的工作是在装有linux操作系统(RedHat9.0)的目标机和基于S3C2410a的目标板上进行的。
设置串行接口
串行接口主要是用来目标板发送命令并监测目标板在程序运行过程中的输出信息。
要讲开发板COM1口与PC机的COM口分别用串口线连接好,而在主机端,用minicom与armsys2410用串口线连接好后进行通讯。
首先,设置minicom。用键盘在命令行输入minicom,输入后选定Serialportsetup然后按设置健A健设置SerialDevice,接着输入PC上接入的串行接口号,如果这个系统与串口1相接,相应写入/dev/ttyS0。接着需要设置传输速率,我们需要设置的传输速率为11520,按下E键,设置波特率为11520,设置完成后,没有奇偶校验,没有软件控制流和硬件控制流。设置完成后,选择为默认设置并保存退出。
设置完成后讲开发板复位,这时系统就会显示系统启动打印的信息。
1.2嵌入式linux系统软件环境
笔者的研究方向主要着重点在于嵌入式linux系统的软件开发层面。嵌入式linux系统可以开发的上层软件多种多样,如果从从软件分析的角度来看大致可以分为四个层次:
一、操作系统的引导。操作系统中要有引入加载程序,主要包括固件(firmware)和Bootloader(引导加载程序)两部分。
二、系统的管控内核。为了更好的分配系统资源,必须要对特定的硬件平台和实际应用移植操作系统linux,这是进程管理的一个重要的部分,这里主要包含了定制内核以及控制内核引导系统的参数。
三、系统文件的引导建立。文件的建立是指文件存在的物理空间,linxu系统中每一个分区都是一个文件系统,都包含自己的目录层次结构,这其中也包括根文件系统(RamDisk)和建立于Flash之上的文件系统。一个系统的操作离不开文的操作,因此要有而且要维护自己的文件系统。
四、软件上的程序用户。经过多年的积累和开发,在自由软件中不断努力的人们为开放源码领域贡献了许多优秀的软件。针对客户的不同需求,为客户量身打造,甚至可以加入图形界面,可以更方便用户的使用。但是嵌入式linux系统不管如何构建,都离不开以下几点:
1)在嵌入的目标机装上交叉编译工具。
2)Bootloader是依赖于开发板硬件而实现编写的。
3)根据客户需求编译嵌入式Linux内核和裁剪冗余。
4)根据客户需要和系统运行的需要来编写设备驱动程序和嵌入式linux应用程序。
5)最后也是最重要的一个部分构建系统文件的目录。
嵌入式系统的操作系统(如linux)主要作用是什么
linux,vxworks,wince均是可以用于嵌入式领域的操作系统,其功能跟PC上的windows
xp之类的作用类似,均是为了方便管理硬件和软件而使用的。
而ARM,是一家公司的名称,也是一大类型微控制器/微处理器的统称(均是以ARM公司提供的CPU核为基础开发)。在ARM之外,还有MIPS,PowerPC等几种类型的CPU用在嵌入式领域,你可以把它们看作是PC平台的CPU,只是它们的使用领域不是桌面电脑而已,并集成了很多功能模块。
所以你的问题的回答:
1,有脱离ARM的,比如说在MIPS上开发做产品,也是属于嵌入式,嵌入式LINUX可以移植到MIPS上;WINCE和VXWORKS也是一样。为什么我们听说ARM会比较多,那是因为它的推广工作做得好,价格功耗有优势,国际上的知名的半导体大厂都有使用了ARM内核的产品,所以可以说是百花齐放的一个程度。
2,嵌入式开发基本上使用C,也可以用C但很少用。在涉及到底层(硬件)部分,有需要用到少量的汇编(当然汇编格式与所使用的CPU类型有关).
3,在这个问题里,ARM是一个CPU,一个产品除了CPU外,还有别的部件,比如说温度传感器,各种通讯接口,这些都是硬件的东西,是实实在在的芯片构成的。假如这个产品不复杂,但又用了ARM,一样可以不使用操作系统,直接用普通写法的程序去控制硬件(业内通俗说法叫:裸奔);但是当这个产品的功能很复杂,又用了以太网,又用了界面,又用了很多高级的硬件,比如说智能手机,那么它就需要一个嵌入式的操作系统去控制手机,这样对于手机来说,产品的开发速度会加快,而且维护也相对容易,改进时的修改工作量也较少。你在市面上见到的大部分智能手机都是基于WINDOWS
MOBILE系统的,当然NOKIA的SYMBIAN也属于嵌入式操作系统,只是其是专用于手机,还有少部分的智能手机比如MOTO的部分智能手机就是用的嵌入式LINUX的系统。
所以,对于一个较复杂的产品,工程师是各司其职,有专门负责硬件电路部分的,有专门去修改操作系统的驱动的,有专门去编写上层的应用软件的,这样就有了嵌入式硬件工程师,嵌入式软件工程师之分了,很多中小公司很多工作都是一人做完的,所以分类就不是那么细了。
4,这个问题3中已经回答了一部分,跑上操作系统的,基本上都是你说的那样划分的,因为每一部分的工作都比较复杂,所以最好专人负责各自的部分,这样项目进度才能保证.
嵌入式linux怎么学
嵌入式linux怎么学?我们一起来了解一下吧。首先需要学习C语言、Linux基础、Linux系统编程、Linux网络编程、数据结构与算法、Cortex A8 、Linux 平台开发,学习完这些基础之后,再多进行上机实练,等到能熟练使用Linux就可以了。linux系统与windows系统的区别区别1:开放性所谓的开放性就是linux操作系统是开放源码系统,可以对其程序进行编辑修改。而微软的windows系统是手微软版权保护,就是只能微软内部进行开发及修改。区别2:价格不同linux系统是免费使用,而微软开发的windows系统则是需要花费金钱去购买。区别3:文件格式不同windows 操作系统内核是NT,而linux 是shell;另外,windows 硬盘文件格式是fat32或NTSF,而linux 需要的文件格式是ext2或ext3,该操作系统还多一个SWAP格式的交换分区。
嵌入式Linux开发流程
在一个嵌入式系统中使用Linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过如下的过程:
1.建立开发环境
操作系统一般使用RedHat-Linux,版本从7到9都可以,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(例如arm-Linux-g、arm-μclibc-g),或者安装产品厂家提供的交叉编译器。
2.配置开发主机
配置MINICOM,一般的参数为波特率为115 200bps,数据位为8位,停止位为1,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样的。MINICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络,主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。
3.建立引导装载程序BOOTLOADER
从网络上下载一些公开源代码的BOOTLOADER,如U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据自己具体的芯片进行移植修改。有些芯片没有内置引导装载程序,例如三星的ARM7、ARM9系列芯片,这样就需要编写开发板上Flash的烧写程序,网络上有免费下载的Windows下通过JTAG并口简易仿真器烧写ARM外围Flash芯片的烧写程序,也有Linux下的公开源代码的J-Flash程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是系统正常运行的第一步。如果购买了厂家的仿真器当然比较容易烧写Flash,这对于需要迅速开发自己产品的人来说可以极大地提高开发速度,但是其中的核心技术是无法了解的。
4.下载别人已经移植好的Linux操作系统
如μCLinux、ARM-Linux、PPC-Linux等,如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过的,下载后再添加自己的特定硬件的驱动程序,进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,对于μCLinux这样的系统则需编译进内核进行调试。
5.建立根文件系统
从www.busybox.net下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他程序。默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs、genromfs等工具产生烧写映像文件。
6.建立应用程序的Flash磁盘分区
一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性Flash(NOR型)512KB~32MB,有的系统使用非线性Flash(NAND型)8~512MB,有的两个同时使用,需要根据应用规划Flash的分区方案。
7.开发应用程序
应用程序可以放入根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于μCOS-II的方式。
8.烧写内核、根文件系统、应用程序
9.发布产品
嵌入式开发所用到的操作系统有几种
嵌入式操作系统(EmbeddedOperatingSystem,简称:EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前在嵌入式领域广泛使用的操作系统有:嵌入式Linux、WindowsEmbedded、VxWorks等,以及应用在智能手机和平板电脑的Android、iOS等。
可以大体分为两类,一个是实时操作系统,一个为多任务系统
这两者都十分总要,实时操作系统适合做工业控制,多任务系统适合开发复杂的应用
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器、2008年5月登陆的凤凰号,和2012年8月登陆的好奇号也都使用到了VxWorks上
linux内核,是开源操作系统,andriod就是基于linux内核开发出来的
嵌入式目前主要面向的几个操作系统是
嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。
你可以尝试以下路线:
(1) C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。推荐书籍:《The C Programming Language》 这本经典的教材是老外写的,也有中译版本。
(2) 操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。
(3)Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。推荐书籍:《UNIX环境高级编程》(第2版)
(4) 了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。
(5) 系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。
(6) 驱动开发linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。
大概说一下布局的框架,但在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。但是只要能坚持下来一定会取得成功!其实LZ可以到一些嵌入式培训机构的网站上看一下他们的课程设置,就会在脑子里有个清晰的思路,比如华清远见的官方网站,上面的嵌入式内容很丰富,嵌入式方面的信息更新也很迅速,没事可以去转转。