嵌入式Linux系统开发 (嵌入式linux)
什么是嵌入式系统
嵌入式系统是一种以微处理器为核心的、专门针对某一特定应用设计的计算机系统。它具有体积小、功耗低、成本低、稳定性高、抗干扰能力强等特点。
嵌入式系统操作
嵌入式系统操作是通过嵌入式操作系统实现的。嵌入式操作系统是一个重要的特性是实时性。所谓实时性,就是在确定的时间范围内响应某个事件的特性。著名的嵌入式操作系统有:VxWorks、和CE等。
嵌入式Linux的特点
- Linux系统是层次结构且内核完全开放。Linux是由很多体积小且性能高的微内核系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要方便地对内核进行改造,低成本地设计和开发出满足自己需要的嵌入式系统。
- 强大的网络支持功能。Linux诞生于因特网时代并具有Unix的特性,保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。
- Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。Linux也符合IEEEPOSIX1标准,使应用程序具有较好的可移植性。传统的嵌入式开发的程序调试和调试工具是用在线仿真器(ICE)实现的。它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,完成监视和调试程序;但一般价格比较昂贵,只适合做非常底层的调试。
- Linux具有广泛的硬件支持特性。无论是RISC还是CISC、32位还是64位等各种处理器Linux都能运行。这意味着嵌入式Linux将具有更广泛的应用前景。
嵌入式系统的组成
硬件和软件
- 硬件:嵌入式处理器、存储系统、(由IO连接)外设、时钟、复位、电源。
- 三大件全部集成:嵌入式微控制器(单片机);三大件部分集成:嵌入式微处理器、IO集成在一个芯片内部,存储外置
- 软件:嵌入式操作系统(可裁剪移植的、定制开发)、应用软件(专用性、固化)
硬件层
硬件层由嵌入式处理器、存储器系统、通用设备接口和I/O接口(如A/D、D/A、I/O等)组成。在一片嵌入式微处理器基础上增加电源电路、时钟电路和存储器电路(ROM和SDRAM等),就构成了七个嵌入式核心控制模块。其中,操作系统和应用程序都可以固化在ROM中。
中间层
中间层也称为硬件抽象层或板极支持包,它把系统软件与底层硬件部分隔离。板极支持包对上具有操作系统相关性,对下具有硬件相关性。设计一个完整的中间层需要完成两部分工作:①嵌入式系统的初始化,它包括片级初始化、板级初始化和系统级初始化。②设计硬件相关的设备驱动
软件层
软件层由多任务操作系统(OS)、文件系统、图形用户接口(GUI)、网络系统及通用组件模块组成。OS是嵌入式应用软件的基础和开发平台;是一段嵌入式目标代码中的程序,系统复位后首先执行,相当于用户的主程序,用户的其他应用程序都建立在OS之上;是一个标准的内核,它将CPU时钟、中断、I/O、定时器等资源都封装起来,留给用户的是一个标准的API函数接口。
功能层与执行装置
功能层由基于OS开发的应用程序组成,用来完成对被控对象的控制功能。功能层是面向被控制对象和用户的,为方便用户操作,往往需要提供一个友好的人机界面。执行装置是指那些可以接受嵌入式计算机系统发出控制命令,执行所规定的操作或任务的设备和装置。在不同应用领域中,嵌入式系统的执行装置一般是不同的,应该根据具体的应用场合和系统所要求实现的功能选择不同的设备和执行装置。
Linux内核目录结构
- arch/ 目录:存放不同处理器的体系结构相关的代码,如 arch/arm/、arch/x86/。
- block/ 目录:存放块设备驱动程序,如块设备通用框架、硬盘驱动程序、闪存驱动程序等。
- crypto/ 目录:存放加密算法和相关代码,如密码、哈希算法、随机数生成器等。
- Documentation/ 目录:存放 Linux 内核的文档,如开发人员指南、API 文档、发行说明等。
- drivers/ 目录:存放各种设备驱动程序,如 I/O 设备驱动程序、网络设备驱动程序、文件系统驱动程序等。
- fs/ 目录:存放文件系统相关代码,如虚拟文件系统框架、具体文件系统实现(如 ext4、FAT 等)。
- include/ 目录:存放头文件,定义了各种数据结构、函数和常量,为内核模块开发提供接口。
- init/ 目录:存放内核初始化代码,如启动过程、进程管理、内存管理等。
- kernel/ 目录:存放内核核心代码,如进程调度、中断处理、内存管理、时钟管理等。
- lib/ 目录:存放内核使用的库函数和数据结构,如链表、散列表、字符串操作等。
- mm/ 目录:存放内存管理相关的代码,如页面管理、虚拟地址空间管理、内存分配器等。
- net/ 目录:存放网络相关的代码,如网络协议栈、网络设备驱动程序、网络应用程序接口等。
- sound/ 目录:存放声卡驱动程序和音频处理相关的代码。
- tools/ 目录:存放内核开发工具,如编译器、调试器、分析工具等。
嵌入式linux开发嵌入式linux程序
Linux是嵌入式的基础吗?
Linux是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上;且可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。
嵌入式操作系统(EmbeddedOperatingSystem,简称:EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
做linux嵌入式开发,要把shell脚本编程搞清楚吗,我c语言是会的?
虽然我做linux嵌入式测试,不是开发。
但我可以告诉你,绝对必要。Linux下很多事情用shell脚本来处理非常方便:1)启动脚本,负责启动系统进程、守护进程等。
2)脚本可以做一些文件处理、命令行工具调用,在C程序中用system系统调用方式执行脚本。
嵌入式中BSP的概念是什么,比如在linux中,请通俗的讲一下,谢谢了?
BSP(BoardSupportPackage),板级支持包,也称为硬件抽象层HAL或者中间层。
它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。
BSP是相对于操作系统而言的,不同的操作系统有不同定义形式的BSP,要求BSP所实现的功能也有所不同。
在嵌入式Linux系统中,主要是初始化底层硬件并引导操作系统;同时,BSP又是和硬件相关的,还要考虑对硬件的初始化操作。这些初始化操作主要是对CPU、内存、中断等相关的寄存器及协处理器进行正确的配置。
在不同的开发阶段,因为核心和文件系统所处的位置不同,BSP所要完成的工作也有所不同;在开发调试阶段,BSP要能够与主机通信并从主机下载核心;在目标产品中,BSP要能够从非易失存储设备中加载核心。
如何基于X86开发板构建嵌入式LINUX系统?
不怎么样,首先你要有一个模拟器或开发板用于运行构建好的二进位映像,然后你得有相关的知识,例如知道怎么构建工具链,如何在工具链上构建和裁减内核,如何构建基本工具包等等,这是一个复杂的系统工作,需要用一本厚厚的书来介绍。除此以外,你还得有很强的动手能力和百折不挠的学习态度,努力学习吧,骚年。
linux嵌入式开发是做什么的?
嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”(原文为:DevicesUsedtoControl,MonitororAssisttheOperationofEquipment,MachineryorPlants)。这主要是从应用对象上加以定义,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
嵌入式主要用到的是C语言,C++,但Java也用于嵌入式技术,主要是用在嵌入式游戏开发,移动开发等,主要侧重JAVA的J2ME方向。
嵌入式的发展前景跟就业前景很不错,目前国内这方面的人才也比较紧缺。所以你学这方面的专业比较好。
嵌入式主要分为三大块:
1.嵌入式Linux系统开发:侧重开发环境搭建、内核原理、交叉编译等
2.嵌入式Linux应用开发:侧重Linux应用编程、内核编译、系统调用。
3.嵌入式Linux驱动开发:侧重嵌入式Linux系统下的驱动开发、内核的深入分析。
目前市场上专业的嵌入式培训很多很乱,因为是最近几年发展起来的。据我所知最权威最专业的要数东方赛富嵌入式培训学院了,位于清华大学东门,跟清华大学有很深的渊源关系。特别是师资,师资团队是整个嵌入式培训领域最好的。80%的老师来自清华大学、世界500强企业和中国顶尖的IT公司。
如果时间及经济条件允许的话,培训一下还是有很好的,既学到了专业知识,同时也解决了就业问题,就业单位也比自己找的要好很多!如需要培训他们是不二的选择!
学嵌入式开发要学哪些知识
嵌入式Linux操作系统学习规划
ARMLINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
(1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)
(2)必须掌握一个嵌入式操作系统(初步定为uclinux或linux,版本待定)
(3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。
从事嵌入式软件开发的好处是:
(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。
(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。
(4)兴趣所在,这是最主要的。
从事嵌入式软件开发的缺点是:
(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。
(2)这方面的企业数量要远少于企业计算类企业。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
(4)平台依托强,换平台比较辛苦。
兴趣的由来:
1、成功观念不同,不虚度此生,就是我的成功。
2、喜欢思考,挑战逻辑思维。
3、喜欢C
C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下:
相信程序员。
不要阻止程序员做那些需要去做的。
保持语言短小精干。
一种方法做一个操作。
使得它运行的够快,尽管它并不能保证将是可移植的。
4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。
5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。
方法步骤:
1、基础知识:
目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。
科目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C、编译原理、离散数学。
数据结构和算法、操作系统、软件工程、网络、数据库。
方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。
主攻书籍:thecprogramminglanguage(一直没时间读)、数据结构-C2。
2、学习linux:
目的:深入掌握linux系统。
方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。
主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。
3、学习嵌入式linux:
目的:掌握嵌入式处理器其及系统。
方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。
4、深入学习:
A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。
2010-8-2116:46回复
122.90.173.*2楼
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:DigitalSignalProcess,DSP处理器通过硬件实现数字信号处理算法。
说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c,理由是c不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
注意:要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!
技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。
嵌入式书籍推荐
Linux基础
1、《Linux与UnixShell编程指南》
C语言基础
1、《CPrimerPlus,5thEdition》【美】StephenPrata着
2、《TheCProgrammingLanguage,2ndEdition》【美】(K&R)着
3、《AdvancedProgrammingintheUNIXEnvironment,2ndEdition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操胡希明著
研发方向
1、《UNIXNetworkProgramming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
5、《Linux高级程序设计》杨宗德著
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统——体系结构、编程与设计》
2、《嵌入式系统——采用公开源代码和StrongARM/Xscale处理器》毛德操胡希明着
3、《BuildingEmbeddedLinuxSystems》
4、《嵌入式ARM系统原理与实例开发》杨宗德著
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】着
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》
C语言书籍推荐
《C程序设计语言》
《C和指针》
《C陷阱与缺陷》
《专家C编程》
-----MicrosoftTechiniquesforDevelopingBug-freeCPrograms
《编程精粹--Microsoft编写优质无错C程序秘诀》
《嵌入式系统编程》
7.《C语言嵌入式系统编程修炼》
8.《高质量C/C编程指南》林锐
尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。
这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。