嵌⼊式linux开发实战——项⽬1认识嵌⼊式系统
1嵌⼊式系统学习路线
1. 主要招聘的⾏业企业:智能家居、消费电⼦、医疗、⼯业⾃动化、通信设备、汽车电⼦
2. 学习路线:Linux⼊门、C语⾔、linux应⽤开发、linux系统开发、linux驱动
3. 误区:今天学这、明天学那,资料太多,只看资料不动⼿
2什么是嵌⼊式系统
别动,你已经被嵌⼊式设备包围了
我们⽣活已经处处可见嵌⼊式系统,医疗电⼦、智能家居、物流管理、电⼒控制、所有带数字接⼝和程序控制的设备,如电⼦⼿表、数码相机、汽车、飞机、卫星都离不开嵌⼊式系统
(⼩⽶⼿机芯⽚是:骁龙TM四核2.5GHz处理器)
嵌⼊式系统(Embedded system),是⼀种“完全嵌⼊受控器件内部,为特定应⽤⽽设计的专⽤计算机系统”
以应⽤为中⼼,以计算机技术为基础,软硬件可裁剪,适应应⽤系统对功能、可靠性、成本、体积、功耗等严格要求的专⽤计算机系统。(还要背诵呜呜呜)
嵌⼊式系统应⽤
家⽤电器
是嵌⼊式系统最⼤的应⽤领域,如⼿机、数码相机、电视、冰箱、空调等的⽹络化、智能化将引领⼈们的⽣活步⼊⼀个崭新的空间。
⼯业控制
如⼯业过程控制、数字机床、电⼒系统、电⽹安全、电⽹设备监测、⽯油化⼯系统。就传统的⼯业控制产品⽽⾔,低端型采⽤的往往是8位单⽚机。但是随着技术的发展,32位、64位的处理器逐渐成为 ⼯业控制设备的核⼼,在未来⼏年内必将获得长⾜的发展。
POS⽹络
公共交通⽆接触智能卡(Contactless Smartcard, CSC)发⾏系统,公共电话卡发⾏系统,⾃动售货机,各种智能ATM终端将全⾯⾛⼊⼈们的⽣活,到时⼿持⼀卡就可以⾏遍天下。
3嵌⼊式处理器
嵌⼊式微控制器(EMCU)
嵌⼊式微处理器⼜称单⽚机,也就是在⼀块芯⽚中集成了整个计算机系统。
代表性的通⽤系列有8051、P51XA、MCS-251、MCS-96/196/296、MC68HC05和C166/167等。
嵌⼊式微处理器(EMPU)
嵌⼊式微处理器是由通⽤计算机中的CPU“演变⽽来的。它的特征是具有32位以上的处理器。具有较⾼的性能,当然其价格也相应⽐较⾼。主要的嵌⼊式处理器类型有Am186/88/386EX、SC-400、Power PC、68000、MIPS、ARM/StrongARM系列等。
嵌⼊式数字信号处理器(EDSP)
数字信号处理器对系统结构和指令进⾏了特殊设计,使其适合于执⾏DSP算法,编译效率较⾼,指令执⾏速度也快。
最为⼴泛应⽤的是TI的TMS320C2000/C5000系列,另外如Intel的MCS-296和Siemens的TriCore也有各⾃的应⽤范围。
嵌⼊式⽚上系统(ESOC)
⽚上系统SOC则是在⼀个硅⽚上实现⼀个更为复杂的系统。各种处理器内核将作为SOC设计公司的标准库,成为VLSI设计中的⼀种标准器件,⽤标准的VHDL语⾔描述,存储在器件库中。
⽐较典型的SOC产品是Philips的Smart XA。少数通⽤系列如Siemens的TriCore,Motorola的M-Core。
ARM
ARM芯⽚是嵌⼊式微处理器中的佼佼者,是很多数字电⼦产品的核⼼。如今95%的⼿机⾥⾯的核⼼处理器使⽤的都是ARM芯⽚,⽽ARM 在整个⼿持市场上占有90%以上的份额。
ARM公司的成功除了其卓越的芯⽚设计技术以外,还源于其创新的商业模式:提供技术许可的知识产权,⽽不是制造和销售实际的半导体芯⽚。
MIPS
MIPS CPU是⼀种RISC结构的CPU,从⽣产专⽤集成电路的核⼼(ASIC Cores)的⼚家到⽣产低成本CPU的⼚家,从低端64位处理器⽣产⼚家到⾼端63位处理器⽣产⼚家。
Power PC
POWER是1991年,Apple、IBM、Motorla组成的AIM联盟所发展处的微处理器架构。PowerPC是整个AIM平台的⼀部分,并且是到⽬前为⽌唯⼀的⼀部分。PowerPC的历史可以追溯到早在1990年随RISC System/6000⼀起被介绍的IBM POWER架构。该设计是从早期的RISC机构(⽐如IBM 801)与MIPS架构的处理器得到灵感的。
Motorola 68000
Motorola 68000(68K)是出现得⽐较早的⼀款嵌⼊式处理器,68K采⽤的是CISC结构。68K最初⽤在苹果⼆代上,⽐Intel的8088还要早。
ARM9处理器
ARM9被⼴泛⽤于智能⼿机、PDA、机顶盒、PMP、电⼦玩具、数码相机、数码摄像机等产品解决⽅案,可为要求苛刻、成本敏感的嵌⼊式应⽤提供可靠的⾼性能和灵活性。丰富的DSP拓展使SoC设计不再需要单独的DSP。
ARM11处理器
ARM11处理器系列可⽤于当前⽣产领域中的⼤多数智能⼿机,还⼴泛⽤于消费、家庭和嵌⼊式应⽤领域。改处理器的功耗⾮常低,软件可以与以前所有ARM处理器兼容。
Cortex A8处理器
从⾼端特⾊的⼿机到上⽹本、DTV、打印机和汽车信息娱乐,Cortex-A8处理器都提供了可靠的⾼性能解决⽅案。NEON技术主要应⽤于某些⾳频、视频和图形⼯作负荷可以减轻跨SoC⽀持多个专⽤加速器的负担,并且使系统可以⽀持将来的标准。
Cortex A15处理器
Cortex A15和Cortex A9/A8同样采⽤了ARMv-A Cortex架构,处理器内核数量最多为4个,处理核⼼之间通过AMBA 4技术互联⽀持⼀系列ISA,能够在不断下降的功耗、散热和成本预算基础上提供⾼度可拓展性解决⽅案,⼴泛适⽤于下⼀代智能⼿机、平板机、⼤屏幕移动计算设备、⾼端数字家庭娱乐终端、⽆线、企业基础架构产品等。
4嵌⼊式操作系统
从20世纪80年年代开始,出现了各种各样的商业⽤嵌⼊式操作系统。这些操作系统⼤部分都是为专有系统⽽开发,从⽽形成了⽬前多种形式的商⽤嵌⼊式擦偶做系统百家争鸣的局⾯。
如Linux、VxWorks、pSOS、PalmOS和Windows CE等。
Linux
嵌⼊式Linux现在已经有许多的版本,包括强实时的嵌⼊式Linux(如新墨西哥⼯学院的RT-Linux和堪萨斯⼤学的KURT-Linux等)和⼀般的嵌⼊式Linux版本(如uCLinux和PocketLinux等。
RTlinux
RTLinux(AReal-Time Linux,亦称作实时Linux)是Linux中的⼀种实时操作系统。它由新墨西哥矿业及科技学院的V. Yodaiken开发。⽬前,RTLinux有⼀个由社区⽀持的免费版本,称为RTLinux Free,以及⼀个来⾃FSMLabs的商业版本,称作RTLinux Pro。
VxWorks
1984年WRS公司推出它的第⼀个版本VxWorks1.0.1,在1997年推出了VxWorks 5.3.1。VXWorks是⼀个运⾏在⽬标机的⾼性能、可裁减的嵌⼊式实时操作系统。它以其良好的可靠性和卓越的实时性被⼴泛地应⽤在通信、军事、航空等⾼精尖技术及实时性要求极⾼的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
WInCE
Windows CE的多线程、多任务、全优先的操作系统环境是专门针对资源有限⽽设计的。这种模块化设计使嵌⼊式系统开发者和应⽤开发者能够定做各种产品,例如家⽤电器、专门的⼯业控制器和嵌⼊式通信设备。
Palm
3COM公司的Palm操作系统在掌上电脑和PDA市场上占有很⼤的市场份额。它有开发的操作系统应⽤接⼝,开发商可以根据需要⾃⾏开发所需的应⽤程序。
μC/OS-II
由于μC/OS-II 仅是⼀个实时内核,这就意味着它不像其他实时操作系统那样,它提供给⽤户的只是⼀些API函数接⼝,有很多⼯作往往需要⽤户⾃⼰去完成。把μC/OS-II 移植到⽬标硬件平台上也只是系统设计⼯作的开始,后⾯还需要针对实际的应⽤需求对μC/OS-II 进⾏功能拓展,包括底层的硬件驱动、⽂件系统和⽤户图形接⼝(GUI)等,从⽽建⽴⼀个实⽤的RTOS。
eCOs
eCos(embedded Configurable operating system),中⽂翻译为嵌⼊式可配置操作系统或嵌⼊式可配置实时操作系统。适合于深度嵌⼊式应⽤,主要应⽤对象包括电⼦消费、电信、车载设备、⼿持设
备以及其他⼀些低成本和便携式应⽤。
5嵌⼊式系统结构
嵌⼊式系统与传统的计算机⼀样是⼀种由硬件和软件组成的计算机系统。硬件包括了嵌⼊式微控制器和微处理器,以及⼀些外围元器件和外部设备,软件包括嵌⼊式操作系统和应⽤软件。
中间层
中间层为硬件层与系统软件层之间的部分,有时也成为硬件抽象层(Hard Abstract Layer,HAL)或者板级⽀持包(Board Supper Package, BSP)。
系统软件层
系统软件层由实时多任务操作系统(Real-time Operation System,RTOS)、⽂件系统、图形⽤户界⾯接⼝(Graphic User Interface, GUI)、⽹络系统及通⽤组件模块组成。
应⽤软件层
应⽤软件层则是开发设计⼈员在系统软件层的基础之上,根据需要实现的功能,综合系统的硬件环境所开发的应⽤软件。
常⽤开发⼯机具
GNU Tools
Linux环境下流⾏的开发⼯具是GNU Tools,利⽤GNU Tools完全可以控制编译⾏为,在嵌⼊式Linux环境中同样具有⼴发的应⽤。
GNU Tools包括vi/vim GCC GDB make CVS SVN diff patch binutils
Qt
嵌入式linux开发书籍
Qt是⼀个跨平台的C++应⽤开发开发框架
Eclipse
Eclipse可以说是发展极为迅速,它不仅是⼀个以java为主的开发平台,其功能强⼤的插件体系结构使得它可以被当做各种应⽤程序来使⽤。
交叉开发环境
嵌⼊式系统通常是⼀个资源受限的系统,因此不可能直接在嵌⼊式系统的硬件平台上编写软件。
⽬前⼀般采⽤的解决⽅法是⾸先在通⽤计算机上编写程序,然后通过交叉编译⽣成⽬标平台上可以运⾏的⼆进制代码格式,最后再下载到⽬标平台上的特定位置上运⾏。
交叉调试
交叉调试(Cross Debug)⼜常常被称为远程调试(Remote Debug),是⼀种允许调试器以某种⽅式控制⽬标机上呗调试⾦蝉的运⾏⽅式,并具有查看和修改⽬标机上内存单元、存储器以及被调试进程中变量值等各种调试功能的调试⽅式。
系统测试
内存分析⼯具
Valgrind /proc/meminfo atop free GNOME System Monitor
性能分析⼯具
Intel VTuneOprofileGprof Google Perf Tools
覆盖分析⼯具
c/c++:gcc+gcov+lcov:(单元测试:CUnit、CPPUnit、Google GTest等)java:Maven cobertura插件、Clover、 EMMA、Jtest;
Python:PyUnit+coverage.py;
PHP:phpunit±coverage-html+Xdebug;
Perl:Test::Class 和 Devel::Cover;
Shell:shUnit2+shcov;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。