《嵌入式怎么学?新人十问及解答》

Posted honkly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《嵌入式怎么学?新人十问及解答》相关的知识,希望对你有一定的参考价值。

常见的ARM嵌入式学习问答,设计者和学习者最关心的11个问题:
1.ARM嵌入式是学习硬件好还是学习软件好?

2.嵌入式软件和硬件,哪一种职位待遇更高?或者说,在设计中哪一个更重要?

3.学完51单片机后,想买ARM开发板继续学习,是买ARM7还是ARM9?

4.到底是学习哪种内核:ARM7、CORTEX-M3、CORTEX-M4、ARM9、CORTEX-A8还是CORTEX-A9?

5.ARM芯片如何选择型号?

6.学习ARM主要学习啥?

7.是先学习基于操作系统的应用层程序的编程,还是先学习基于操作系统的驱动程序的编程?

8.为什么学习嵌入式Linux、android,而不是其他的嵌入式操作系统?

9.一定要学习GUI界面设计吗?

10.买哪种ARM开发板?

11.电磁兼容号称黑色艺术,请问如何学习硬件设计中的电磁兼容设计?

 

1. ARM嵌入式是学习硬件好还是学习软件好?
答:
  学习硬件好还是软件好,如果你能精通其中的任何一个,都好!
  学硬件,绝大多数人大学毕业后都可以做硬件设计,这时候大家是一个差不多的水平线上,所以感觉上好像没有门槛!但是电子产品设计的难点是稳定性,尤其是电 磁兼容性的设计。N年之后,也许三年,也许五年,也许八年,总之年数不等,这时候水平上就有了高低之分:有些人设计出来的电子产品就是不怎么出问题,有些 人设计出来的电子产品就是一直有问题。硬件的设计,是设计经验和理论再学习的结合:电磁场与电磁波、微波与天线、高速信号处理、信号完整性、PCB布线的 实际措施、系统电磁兼容的处理措施、电路调试的能力与解决电路故障的能力,等等,
  学软件,很多人大学毕业后都无法从事这个设计工作,因为大家在学校的努力程度不同,很多人实际上还没有进入编程的门槛内。但是进入门槛后,绝大多数人的水平 会处于差不多相同的水平线上,极个别的水平高一些,体现在程序的稳定性和程序运行效率上。软件的设计,主要体现在这两点
  单片机的硬件和软件,因为主频太低,很少出现稳定性的问题,软件的工作量也小,很多单位的软硬件都是一个人做。但是到了主频很高的32位微处理器后,硬件的稳定性特别容易出问题,功能复杂度增大,硬件设计的难度增加了,软件编程的工作量加大了,所以多数公司的软件和硬件开始有多人分开设计。树叶有专攻!大树叶负责系统设 计,各种小树叶有的做硬件设计,有的做软件编程。宗旨就是发挥各自的强项!完成最后的系统功能设计
  另外一个需要强调的是,学习硬件还是软件,还要看个人对硬件感兴趣,还是对软件感兴趣?

2. 嵌入式软件和硬件,哪一种职位待遇更高?或者说,在设计中哪一个更重要?

答:
  刚进入职场时,一般来说嵌入式软件的待遇会稍高一些。因为之前说了,很多人没有进入软件设计的门槛内。但是软件毕竟是青春性的职业,随着年龄的增加和设计经验、设计能力的增加,硬件设计的待遇水涨船高,慢慢会与软件职位的待遇相同甚至高于软件的职位。
  至于谁更重要,硬件相当于躯体,软件相当于血液,缺一不可,没有谁更重要的说法。如果从产品的角度看,硬件更重要一些。因为在产品中出了问题,硬件的稳定性问题基本上只有找高手重新设计,如果是电路原理上的问题还可以直接增加或者减少元件来解决。软件上不稳定问题基本上可以通过修改程序设计并重新下载程序到芯片中来解决。如果从设计的角度看,系统设计更重要,因为系统设计要求懂一些软件的基本设计,更要对硬件设计有相当的造诣,这样他才能把握住系统设计的要求,正确提出设计方案。

3. 学完51单片机后,想买ARM开发板继续学习,是买ARM7还是ARM9?
答:
  如果你对单片机动手编程能力比较强,建议直接买ARM9的板子,跑linux系统的,学习嵌入式linux软件编程,
  如果你的单片机动手编程能力比较一般,建议先购买CORTEX-M3的开发板,先学习32位ARM的编程(支持轻量级的操作系统,比如UCOS),锻炼实际的动手编程能力。有了一定的编程能力后,再买ARM9的板子,跑linux系统的,学习嵌入式linux软件编程。
  总之就是多动手,遇到问题多了慢慢积累起来,就能够融会贯通了!

4. 到底是学习哪种内核:ARM7、CORTEX-M3、CORTEX-M4、ARM9、CORTEX-A5、CORTEX-A、CORTEX-A8还是CORTEX-A9?
答:
  如果是学习硬件设计,CORTEX-M0、CORTEX-M0+、CORTEX-M3、CORTEX-M4内核的芯片,主频较低,信号完整性和电磁兼容的要求不高,硬件设计相对来说简单一些; ARM9、CORTEX-A5、CORTEX-A7、CORTEX-A8、CORTEX-A9内核的芯片,主频高,对信号完整性和电磁兼容的要求也高,硬件设计相对来说复杂得多。
  如果是学习嵌入式软件应用编程设计,ARM9、CORTEX-A5、CORTEX-A7、CORTEX-A8、CORTEX-A9内核都差不多,因为应用软件编程基本上脱离开底层硬件的。
  首先说明基于ARM7内核的芯片现在已经很少了,大部分公司都陆续停产了。而且价格没有优势,主频也不高,只能跑UCOS或者Uclinux系统。所以不建议花大量的时间去玩这种ARM7内核的芯片
  CORTEX-M3内核的芯片是目前用量比较大的32位ARM芯片,主频约70MHz到120MHz之间,比如STM32F103、LPC1768等型号。CORTEX-M4内核的芯片支持DSP指令功能,主频100MHz到200MHz之间,比如STM32F4等型号。这两种内核的芯片可以基于库函数进行编写程序,或者基于寄存器直接编写程序,可以跑轻量级的操作系统,比如UCOS等。此类芯片只适合设计不太复杂的产品,对网络协议有一定要求的产品不建议使用该芯片。
  ARM9内核的芯片,是目前市场上运行嵌入式操作系统(linux、wince)主流的32位ARM芯片,主频约180MHz到500MHz之间。
  CORTEX-A8和CORTEX-A9内核的芯片,可以运行多种嵌入式操作系统(linux、wince、android)。Cortex-A8处理器的速率可以在600MHz到超过1GHz的范围内调节,能够满足那些需要工作在300mW以下的功耗优化的移动设备的要求。Cortex-A9处理器的速率可以到1GHz以上,支持多核。
  如果是初学者,学习库函数编程的或者寄存器编程的,建议学习基于CORTEX-M3内核的芯片的开发;如果是学习linux的嵌入式软件编程,建议学习基于ARM9内核的芯片的开发板;如果是学习Android的嵌入式软件编程,建议学习基于CORTEX-A8和CORTEX-A9内核的芯片的开发板;

5. 目前ARM的内核众多,应该如何选择芯片型号?
答:
  CORTEX-M0+、CORTEX-M0内核芯片,主频低,主要面向代替8位单片机编程的低端产品,比如家电、小家电等。
  CORTEX-M3内核芯片,主频约50-120MHz左右,性价比高,适合不需要大型操作系统的产品设计,比如电机控制、音频处理、工业控制等。
  CORTEX-M4内核的芯片,主频约80-180MHz左右,比M3内核多了DSP浮点处理能力,Cortex-M4内核芯片的DSP性能比16位DSP芯片要好,但不及32位DSP芯片。Cortex-M4微控制器的目标应用包括复杂的电机控制、汽车电子、嵌入式音频以及工业自动化。
  ARM9内核的芯片,主频约140-500MHz,支持运行linux、wince操作系统,支持一定的图形界面处理,适合网络传输、视频处理、工业控制等产品的设计。
  CORTEX-A5内核的芯片,主频约500MHz-800MHz,8级整数流水线,低功耗,可以运行linux、android、wince嵌入式操作系统。CORTEX-A5双核的性能相当于CORTEX-A7单核的性能,主要面向入门级智能手机、低成本智能移动终端、工业设备等。
  CORTEX-A7内核的芯片,支持多核,支持图形处理,主频约800MHzHz-1.2GHz ,13级整数流水线,可以运行linux、android、wince嵌入式操作系统,低功耗,主要面向智能手机等对功耗要求苛刻的产品。
  CORTEX-A8内核的芯片,单核,主频约600MHzHz-1GHz ,13级整数流水线,可以运行linux、android、wince嵌入式操作系统,主要面向电力系统、数控行业、汽车电子、机器人视觉、媒体处理无线应用、数字家电、车载设备、通信设备、网络终端等产品。
  CORTEX-A9内核的芯片,有单核、双核、四核,支持图形处理,主频约1GHz-2GHz ,8级整数流水线,可以运行linux、android、wince嵌入式操作系统,CORTEX-A9双核的性能相当于CORTEX-A7四核的性能,主要面向智能手机、上网本、电子阅读器,数字电视、高清播放机等产品。
  CORTEX-A15内核的芯片,支持多核,支持图形处理,主频约1.5GHz-2.5GHz ,可以运行linux、android、wince嵌入式操作系统,主要面向智能手机、平板电脑、移动计算、高端数字家电、服务器等产品。
  ST公司:基于CORTEX-M0内核的芯片STM32F0系列、基于CORTEX-M3内核的芯片STM32F1系列、基于CORTEX-M4内核的芯片STM32F4系列,是目前最流行的CORTEX-M系列内核的芯片。
  NXP公司:基于CORTEX-M3内核的芯片LPC1768、LPC1788、基于CORTEX-M0+内核的芯片LPC800系列,ARM9内核的芯片LPC3250,在设计中的认可率都比较高。
  ATMEL公司:多年采用ARM内核技术, ARM9内核的芯片做了很多年才开始升级更高的内核,旨在打造稳定的工业级芯片,不追求主频上的卓越,但求性能更加的可靠的工业级芯片。能克服各种恶劣的环境,及各种干扰,功耗低,让工业控制能更加稳定有条不紊的进行。现在的ARM9内核芯片有AT91SAM9260、AT91SAM9263、AT91SAM9G45,CORTEX-A5内核芯片SAM5D3X等
  Freescale公司:该公司的芯片稳定性也极高,多用于工业控制和汽车电子等。CORTEX-M3内核的芯片K系列,ARM9系列的芯片IMX.28,CORTEX-A8内核芯片I.MX53系列、CORTEX-A9内核芯片I.MX6系列等
  德州仪器TI: 一直致力于研究处理速度更快,功能更加强大的芯片。更是采用ARM最新技术Cortex A8来提升芯片的性能。使得一些芯片的处理速度与X86架构的MCU不分伯仲。但是最近OMAP系列芯片据说被裁了,可能会退出市场。这让选择TI芯片的人心里有点害怕!而且,TI的芯片更新速度太快,让选择他们芯片的厂家也无所适从。现在的CORTEX-A8内核芯片有AM3358、AM3359等。
  SAMSUNG半导体: SAMSUNG生产ARM内核芯片的超高性价比是无人能敌的。正因为这点, 其芯片也得到很多厂家的亲睐。例如S3C2440性价比极高,一般消费电子产品中应用较多,不适于在严苛的工控环境中使用。现在的ARM9内核芯片有S3C2440、CORTEX-A8内核芯片S5PV210、CORTEX-A9内核芯片Exynos-4412等。
  另外国内比较热一些的CORTEX-A内核的芯片厂家如下:瑞芯微的CORTEX-A9内核芯片RK3066、RK3188;全志的CORTEX-A7内核芯片A31、A31S;晶晨的CORTEX-A9内核芯片GM8126-MX、S802;
  最近老是看到不少个人和厂家宣传:使用三星的2440或者三星公司的其他型号设计为工控产品,而且我听到不少厂家说芯片的工作温度都做过老化试验,低温可以到零下40度。这个低温的实验条件只是工业级的一个强制性温度试验条件,并不是在这个低温下正常工作就是工控级芯片。工控级的应用真正难以实现的是在各种恶劣电磁环境下的稳定工作,稳定性是工控级应用的第一要素,这也就是为何ATMEL的芯片很多型号一卖就是十几年,他们的芯片做的就是稳定。比如AT91RM9200、AT91SAM9260、AT91SAM9G45等.

6.学习ARM主要学习啥?
答:
   在硬件上主要学习ARM内核芯片的电路设计及其附加外围电路(USB、SDIO、CAN、485、SPI、PCI等)设计以及高速数字信号处理、信号完整性设计、电磁兼容设计,说白了就是学习如何设计出高稳定的ARM系统电路。ARM内核(CORTEX-M3、CORTEX-M4、ARM9、CORTEX-A8、CORTEX-A9等)的芯片,主频越来越高,实现稳定性的设计难度越来越大。
     软件上主要学学习基于操作系统的应用层程序的编程和基于操作系统的驱动程序编程或者基于库函数的裸机程序编程等等。CORTEX-M0+、CORTEX-M0、CORTEX-M3、CORTEX-M4内核的芯片,可以运行裸机程序或者轻量级的UCOS系统,软件上主要学习裸机程序的编程或者轻量级操作系统的编程; ARM9、CORTEX-A5、CORTEX-A7、CORTEX-A8、CORTEX-A9内核的芯片,可以运行linux操作系统、android操作系统、wince操作系统等,学习基于嵌入式操作系统的应用程序编程和驱动编程。

7. 是先学习基于操作系统的应用层程序的编程,还是先学习基于操作系统的驱动程序的编程?

答:

  基于操作系统的应用层程序的编程是嵌入式软件设计的基础,它基本上可以不需要熟悉底层硬件就可以完成程序设计,所以学习嵌入式linux 应用程序编程买开发板时,只要可以运行linux 系统的开发板都可以 。。基于操作系统的驱动程序的编程设计,要求设计人员不仅要熟悉操作系统,还要熟悉底层硬件,最好有过基于寄存器的程序编写经历,对设计人员的要求比较高。

  学习驱动程序编程的基本过程:1.熟练对芯片进行裸机编程;2.熟练操作系统的应用编程;3.熟悉 linux 系统的内核;4.学习并熟练掌握linux 系统下的驱动编程;  

  现在的驱动程序的编程设计,芯片原厂和开发板厂家已经提供了绝大部分的驱动程序,相对来说可以减少设计者的压力。

  所以建议:先学习基于操作系统的应用程序的编程,有了一定的编程经验后再去学习基于操作系统的驱动程序的编程设计。

8. 为何要学习嵌入式 linux、android,而不是学习其他的嵌入式系统?
答:
  1.Linux、android 软件是免费的,不收取版权费。
  2.Linux、android 嵌入式编程主要是以C 语言为主,编译效率高,可以直接控制底层硬件;GUI 以C++语音进行编程。
  3.Linux、android 是开源的操作系统,你可以钻研核心代码,一定程度上可以设计出不受限制的编程。同时因为内核可裁剪,可以控制编译后的代码大小,进而采用存储容量较低价的芯片以控制设计成本。
  4.Linux、android 在网上的资源丰富,设计人员可以免费获得大量的参考设计代码
  相比较来说:UCOS、ECOS 等轻量级的操作系统,与linux、wince、vxworks相比,软件功能上存在一定限制,而且以UCOS 来说,缺乏自己的编译器;微软的wince 嵌入式系统、vxworks 嵌入式系统的版权费特别贵,大约每个产品100元左右,而且不开源,小公司基本上无法取得原厂的支持,很多编程因无法取得原厂的技术支持而无法实现。所以目前基本上都是学习嵌入式linux、android 编程。

9. 一定要学习 GUI 界面设计吗?
答:
  嵌入式软件的应用程序设计中,GUI 界面设计只是产品中支持液晶屏显示的才会用到。而且,在实际的产品设计中,因为软件的工作量比较大,软件设计也是多人合作的,一般会有专人做GUI 界面设计的。因为一般的应用程序设计师基于C 语言的编程设计,GUI 界面设计基本上是基于C++语言或者JAVA 语言的编程,所以对初学者来说,还是有很大区别的,建议初学者在最初的学习中不用花费太多的精力去学习GUI 界面设计。

10. 买哪种 ARM 开发板?
答:
裸机程序(不运行操作系统)的开发板:

  建议购买基于STM32F103、STM32F4、LPC1768、LPC1788 等芯片的开发板,这些型号的芯片基本上已经获得设计人员广泛的认可了。
有嵌入式操作系统的:
  如果从产品设计应用的角度看:如果是工控级电子产品设计的,请选择ATMEL公司的AT91SAM9260 开发板、AT91SAM9G45 开发板或者选择TI 的AM3359 开发板。如果是基于消费电子产品设计的,请选择 SAMSUNG 的S3C2440 开发板、S5PV210 开发板;
  如果从学习的角度看:学习linux软件编程的,不需要触摸液晶屏的建议买AT91SAM9260开发板;学习linux软件编程的,而且需要触摸液晶屏的建议买AT91SAM9G45开发板或者S3C2440开发板。学习Android软件编程的,建议买S5PV210开发板、AM3359开发板。

11. 电磁兼容号称黑色艺术,请问如何学习硬件设计中的电磁兼容设计?
答:
  大家都知道电子产品设计中,稳定性是第一位的。在稳定性中最难处理的是良好的电磁兼容设计。首先需要从理论上充实自己:电磁场和电磁波、微波与天线、高速数字信号处理、信号完整性分析、电路设计中的电磁兼容措施、电磁兼容的PCB布线措施、系统设计中的电磁兼容规划、电磁干扰排查及电磁兼容测试中不良点的整改措施等等。其次需要在实际的设计中运用这些理论,在设计的初始阶段就开始为解决电磁兼容做准备,并且需要在电磁兼容测试中结合自己的理解做出整改措施。
  也就是说,电磁兼容的能力是实际设计与理论再学习相结合的一个过程,需要长期的设计积累,不会在短时间内一蹴而就!

 

以上是关于《嵌入式怎么学?新人十问及解答》的主要内容,如果未能解决你的问题,请参考以下文章

作为一个新人,如何学习嵌入式Linux?

嵌入式新人必知的程序设计道路有哪些?

新人求助wxPython中嵌入ActiveX控件的问题

linux嵌入式开发流程,听听牛人怎么说

嵌入式高手进 考试题解答

如何写好技术文档——来自Google十多年的文档经验