找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

嵌入式技术知识体系问答(找工作笔试面试可能有用)

admin 2019-8-19 07:27 142人围观 嵌入式相关

嵌入式物联网技术微信交流群

   由于微信拉群有限制超过100人就不允许扫码进群了,如果有朋友想进来的话,请加我私人微信:morixinguan,备注加群,我会拉你进群,认识更多的小伙伴,实现资源共享。



1、什么是嵌入式系统?


   嵌入式系统是以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积及功耗严格要求的专用计算机系统,除了大型机、服务器、工作站、PC。“由软件、硬件共同构成的专用系统”。特点:“嵌入”、“计算机”、“专用”。

2、现在主要的嵌入式OS/操作系统有哪些?



(1)uCos-II(商用)

  uC/OS-II是一种基于优先级的可抢先的硬实时内核。应用广泛,专门为嵌入式设备设计,支持多种CPU,可运行在8位到64位的各种系统上。2.51版本之后,就通过了美国FAA认证,可以运行在诸如航天器等对安全要求极为苛刻的系统之上(可用在生命攸关项目中)。商用要支付版权费,可以得到源代码。


(2)Vxworks(商)

  vxworks 是这几种实时系统中性能最好的一个也是比较贵的,主要用于商业领域和科研领域。飞到火星去的探测器上安装的就是这个系统。实时性好。


(3)Nuclues(商)

 实时性比较好。对文件系统,网络协议栈的支持也比较不错,带的图形显示。nuclues 内核很小。


(4)Threadx(商)

   ThreadX是优秀的硬实时操作系统,具有规模小、实时性强、可靠性高、易于使用等特点。并且支持大量的处理器和SoC,包括ARM、PowerPC、SH 4、MIPS、ADI DSP、TI DPS、Nios II等,广泛应用于消费电子、汽车电子、工业自动化、网络解决方案、军事与航空航天等领域中2005年7月4日,美国宇航局成功实施“深度撞击”号宇宙飞船对坦普尔1号彗星的准确撞击,此事件成为全球关注的焦点。其中,“深度撞击”号宇宙飞船中关键的任务由著名的hreadX实时操作系统完成。2005年8月12日,美国宇航局发射的火星探测器MRO, 其关键任务仍由ThreadX实时操作系统担当。


(5)freertos(开)

FreeRTOS免费的开源实时操作系统 ,短小精悍 。


(6)eCos(开)

 ECOS由RedHat推出的小型实时系统(Real Time Operating System),最低编译核心可小至10K的级别, 采用C++编写 。此系统和嵌入式Linux系统的差异是他将操作系统做成静态连接的方式。


(7)RT-Thread(开)

  来自中国的开源实时操作系统,是一款 高效、稳定的实时操作系统内核,支持的特性包括:全抢占的实时多任务内核、小巧而与底层具体实现无关的文件系统、轻型的TCP/IP协 议栈、命令即C语言的shell命令行、轻型的多窗口。目前在国内已经有十多家企业在使用,从数据采集、数据监控到机械控制,证明其是一款稳定并可用于产品的嵌入式实时系统。


(8)Nut/OS

NUT/OS是一个RTOS,开源免费,支持标准C库,支持网络


(9)QNX(开)

 采用微内核架构的类Unix实时操作系统,遵从POSIX规范,主要用于嵌入式领域,是业界公认的X86平台上最好的嵌入式实时系统之一,其应用极广,包含车载音乐和媒体功能、核电站和美国陆军无人驾驶Crusher坦克的控制系统,RIM公司的BlackBerry PlayBook平板电脑等。


(10)Win8

 在嵌入系统上占有重要地位,主要用于PDA,实时性比较差。支持多线程,支持j2me,支持.net framwork mobile。和winxp等系统同宗,开发使用EVC、VS,容易被开发者接受。后续有Windows mobile6、Windows Phone 7等版本推出。


(11)Rtems

 实时多处理器系统(Real Time Executive for Multiprocessor Systems),最早用于美国国防系统,早期的名称为实时导弹系统(Real Time Executive for Missile Systems),目前无论是航空航天、军工,还是民用领域都有着极为广泛的应用。


(12)Nuttx

 一个年轻的RTOS系统,采用微内核架构,支持POSIX标准,目标标准化嵌入式系统。扩展性强,适用于8位到32位系统。http://nuttx.sourceforge.net/

3、嵌入式系统由什么组成?


嵌入式系统的组成:硬件层、中间层、系统软件层和应用软件层

(1)硬件层:嵌入式微处理器、存储器、通用设备接口和I/O 接口。


嵌入式核心模块=微处理器+电源电路+时钟电路+存储器
Cache:位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微
处理器使用最多的程序代码和数据。它的主要目标是减小存储器给    微处理器内核造成的存储器访问瓶颈,使处理速度更快。

(2)中间层(也称为硬件抽象层HAL 或者板级支持包BSP):它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP 层提供的接口开发即可。


BSP 有两个特点:硬件相关性和操作系统相关性。设计一个完整的BSP 需要完成两部分工作:

A、嵌入式系统的硬件初始化和BSP 功能。


片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。
板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。
系统级初始化:以软件为主的初始化过程,进行操作系统的初始化。

B、设计硬件相关的设备驱动。

(3)系统软件层:


由RTOS、文件系统、GUI、网络系统及通用组件模块组成。
RTOS 是嵌入式应用软件的基础和开发平台。

(4)应用软件:由基于实时系统开发的应用程序组成。

4、嵌入式微处理器体系结构有什么?

(1)冯诺依曼结构:


   程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存
储器的不同物理位置,采用单一的地址及数据总线,程序和数据的宽度    相同。例如:8086、ARM7、MIPS…

(2)哈佛结构:


  程序和数据是两个相互独立的存储器,每个存储器独立编址、独立访问,是一种将程序存储和数据存储分开的存储器结构。例如:AVR、ARM9、ARM10…

(3)CISC 与RISC 的特点比较。


计算机执行程序所需要的时间P 可以用下面公式计算:
P=I×CPI×T
I:高级语言程序编译后在机器上运行的指令数。
CPI:为执行每条指令所需要的平均周期数。
T:每个机器周期的时间。

(4)流水线的思想:


   在CPU 中把一条指令的串行执行过程变为若干指令的子过程在CPU 中重叠执行。

(5)流水线的指标:


吞吐率:单位时间里流水线处理机流出的结果数。如果流水线的子过程所用时间不一样长,则吞吐率应为最长子过程的倒数。
建立时间:流水线开始工作到达最大吞吐率的时间。若m 个子过程所用时间一样,均为t,则建立时间T=mt。

(6)信息存储的字节顺序


A、存储器单位:字节(8 位)
B、字长决定了微处理器的寻址能力,即虚拟地址空间的大小。
C、32 位微处理器的虚拟地址空间位232,即4GB。
D、小端字节顺序:低字节在内存低地址处,高字节在内存高地址处。
E、大端字节顺序:高字节在内存低地址处,低字节在内存高地址处。
F、网络设备的存储顺序问题取决于OSI 模型底层中的数据链路层。

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


   首先说明基于ARM7内核的芯片现在已经很少了,大部分公司都陆续停产了。而且价格没有优势,主频也不高,只能跑UCOS或者Uclinux系统。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内核的芯片。

6、ARM芯片如何选择型号?


   ST公司:基于CORTEX-M3内核的芯片STM32F103、基于CORTEX-M4内核的芯片STM32F4,是目前最流行的CORTEX-M3内核的芯片。
NXP公司:基于CORTEX-M3内核的芯片LPC1768、LPC1788、基于CORTEX-M0+内核的芯片LPC800系列,ARM9内核的芯片LPC3250,在设计中的认可率都比较高。
    ATMEL公司:一直采用ARM核心技术,最高也只采用到ARM9技术,旨在打造稳定的工业级芯片,不追求性能上的卓越,但求性能更加的可靠的工业级芯片。能克服各种恶劣的环境,及各种干扰,功耗低,让工业控制能更加稳定有条不紊的进行。现在的ARM9内核芯片有AT91SAM9260、AT91SAM9263、AT91SAM9G45等
     德州仪器TI:一直致力于研究处理速度更快,功能更加强大的芯片。更是采用ARM最新技术Cortex A8来提升芯片的性能。使得一些芯片的处理速度与X86架构的MCU不分伯仲。但是最近OMAP系列芯片据说被裁了,可能会退出市场。这让选择TI芯片的人心里有点害怕!而且,TI的芯片更新速度太快,让选择他们芯片的厂家也无所适从。现在的 CORTEX-A8内核芯片有AM3358、AM3359等。
   SAMSUNG半导体:SAMSUNG生产ARM内核芯片的超高性价比是无人能敌的。正因为这点, 其芯片也得到很多厂家的亲睐。例如S3C2440性价比极高,一般消费电子产品中应用较多,不适于在严苛的工控环境中使用。现在的ARM9内核芯片有S3C2440、CORTEX-A8内核芯片S5PV210等。
    最近老是看到不少个人和厂家宣传:使用三星的2440或者三星公司的其他型号设计为工控产品,而且我听到不少厂家说芯片的工作温度都做过老化试验,低温可以到零下40度。这个低温的实验条件只是工业级的一个强制性温度试验条件,并不是在这个低温下正常工作就是工控级芯片。工控级的应用真正难以实现的是在各种恶劣电磁环境下的稳定工作,可惜大部分芯片都不能实现这种要求。稳定性是工控级应用的第一要素,这也就是为何ATMEL的芯片很多型号一卖就是十几年,他们的芯片做的就是稳定。比如AT91RM9200、AT91SAM9260、AT91SAM9G45等.

7、学习ARM主要学习啥?


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

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


    基于操作系统的应用层程序的编程是嵌入式软件设计的基础,它基本上可以不需要熟悉底层硬件就可以完成程序设计,所以学习嵌入式linux应用程序编程买开发板时,只要可以运行linux系统的开发板都可以。。基于操作系统的驱动程序的编程设计,要求设计人员不仅要熟悉操作系统,还要熟悉底层硬件,最好有过基于寄存器的程序编写经历,对设计人员的要求比较高。
    现在的驱动程序的编程设计,芯片原厂大部分已经提供了。在芯片原厂做驱动程序设计的人员,水平会高得多,不过中国的芯片厂很少,大家暂时没多少机会。从产品的设计角度看,驱动程序的设计难度已经降低。
    所以建议:先学习基于操作系统的应用层程序的编程,有了一定的编程经验后再去学习基于操作系统的驱动程序的编程设计。

9、ARM处理器7种运行模式是什么?


A、用户模式(User):正常程序执行模式,用于应用程序。
D、快速中断模式(FIQ):快速中断处理,用于高速数据传输和通道处理。
C、外部中断模式(IRQ):用于通用的中断处理。
D、管理模式(SVE):供操作系统使用的一种保护模式。
E、数据访问中止模式(Abort):用于虚拟存储及存储保护。
F、未定义指令中止模式(Undefined):当未定义指令执行时进入该模式。
G、系统模式(System):用于运行特权级的操作系统任务。
    除了用户模式之外的其他6种处理器模式称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式切换,其中,除了系统模式外,其他的5种特权模式又称为异常模式。
   处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下,这时,应用程序不能访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。这种体系结构可以使操作系统控制整个系统的资源。
  当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式种都有一组寄存器,供相应的异常处理程序使用,这样就可以保证进入异常模式时,用户模式下的寄存器不被破坏。
   系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器,但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换,它主要供操作系统任务使用。

嵌入式、Android学习请看韦东山老师视频











商务合作

    最近悄悄的在合作机会板块-商务合作更新了企业信息,这是我和同学合作创立的一家公司,专注于物联网嵌入式研发,名字叫深圳市云之手科技,详情可点击合作机会的商务合作了解,也希望未来我们能够和圈友一起合作共赢。











----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:嵌入式云IOT技术圈,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!

我有话说......