嵌入式助理工程师硬件试题

嵌入式助理工程师硬件试题
嵌入式助理工程师硬件试题

嵌入式硬件助理工程师认证考试试题题库

一、选择题

1、以下说法不正确的是(B )。

A、任务可以有类型说明

B、任务可以返回一个数值

C、任务可以有形参变量

D、任务是一个无限循环

2、用图形点阵的方式显示一个16*16点阵汉字需要(B )字节。

A、8

B、32

C、16

D、64

3、下列描述不属于RISC计算机的特点的是(C)。

A.流水线每周期前进一步。

B.更多通用寄存器。

C.指令长度不固定,执行需要多个周期。

D.独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输。

4、存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存储,

则2000H存储单元的内容为(D)。

A、0x21

B、0x68

C、0x65

D、0x02

5、μCOS-II中对关键代码段由于希望在执行的过程中不被中断干扰,通常采用关中断的方式,以下X86汇编代码正确而且不会改变关中断之前的中断开关状态的是(D)

A. 先CLI、执行关键代码、再STI

B. 先STI、执行关键代码、再CLI

C. 先POPF、CLI、执行关键代码、再PUSHF

D. 先PUSHF、CLI、执行关键代码、再POPF。

6、RS232-C串口通信中,表示逻辑1的电平是(D )。

A、0v

B、3.3v

C、+5v~+15v

D、-5v~-15v

7、ARM汇编语句“ADD R0, R2, R3, LSL#1”的作用是(A)。

A. R0 = R2 + (R3 << 1)

B. R0 =( R2<< 1) + R3

C. R3= R0+ (R2 << 1)

D. (R3 << 1)= R0+ R2

8、IRQ中断的入口地址是(C)。

A、0x00000000

B、0x00000008

C、0x00000018

D、0x00000014

9、S3C2420X I/O口常用的控制器是(D)。

(1)端口控制寄存器(GPACON-GPHCON)。

(2)端口数据寄存器(GPADAT-GPHDAT)。

(3)外部中断控制寄存器(EXTINTN)。

(4)以上都是。

10、实时操作系统中,两个任务并发执行,一个任务要等待其合作伙伴发来信息,或建立

某个条件后再向前执行,这种制约性合作关系被成为(A)。

A. 同步

B. 互斥

C. 调度

D. 执行

11、和PC系统机相比嵌入式系统不具备以下哪个特点(C)。

A、系统内核小

B、专用性强

C、可执行多任务

D、系统精简

12、ADD R0,R1,#3属于(A)寻址方式。

A. 立即寻址

B. 多寄存器寻址

C. 寄存器直接寻址

D. 相对寻址

13、GET伪指令的含义是(A)

A. 包含一个外部文件

B. 定义程序的入口

C. 定义一个宏

D. 声明一个变量

14、存储一个32位数0x876165到2000H~2003H四个字节单元中,若以小端模式存储,则2000H存储单元的内容为(C)。

A、0x00

B、0x87

C、0x65

D、0x61

15、μCOS-II操作系统不属于(C)。

A、RTOS

B、占先式实时操作系统

C、非占先式实时操作系统

D、嵌入式实时操作系统

16、若R1=2000H,(2000H)=0x86,(2008H)=0x39,则执行指令LDR R0,[R1,#8]!

后R0的值为(D )。

A. 0x2000

B. 0x86

C. 0x2008

D. 0x39

17、寄存器R13除了可以做通用寄存器外,还可以做(C )。

A、程序计数器

B、链接寄存器

C、栈指针寄存器

D、基址寄存器

18、FIQ中断的入口地址是(A)。

A、0x0000001C

B、0x00000008

C、0x00000018

D、0x00000014

19、ARM指令集和Thumb指令集分别是(D )位的。

A. 8位,16位

B. 16位,32位

C. 16位,16位

D. 32位,16位

20、ARM寄存器组有(D )个寄存器。

A、7

B、32

C、6

D、37

21、若R1=2000H,(2000H)=0x28,(2008H)=0x87,则执行指令LDR R0,[R1,#8]!

后R0的值为(D )。

A. 0x2000

B. 0x28

C. 0x2008

D. 0x87

22、寄存器R15除了可以做通用寄存器外,还可以做(A)

A. 程序计数器

B. 链接寄存器

C. 堆栈指针寄存器

D. 基址寄存器

23、嵌入式系统有硬件和软件部分构成,以下(C)不属于嵌入式系统软件。

A. 系统软件

B. 驱动

C. FPGA编程软件

D. 嵌入式中间件

24、μCOS-II操作系统属于(B)

A、顺序执行系统

B、占先式实时操作系统

C、非占先式实时操作系统

D、分时操作系统

25、ARM指令集是(B)位的。

A. 16

B. 32

C. 8

D. 24

26、假设R1=0x31,R2=0x2 则执行指令ADD R0,R1,R2 LSL #3 后,R0的值是(C)

A. 0x33

B. 0x34

C. 0x39

D. 0x38

27、寄存器R13除了可以做通用寄存器外,还可以做(C)

A、程序计数器

B、链接寄存器

C、栈指针寄存器

D、基址寄存器

28、ARM寄存器组有(C )个状态寄存器

A、7

B、32

C、6

D、37

29、和PC机系统相比下列哪个不是嵌入式系统独具的特点(C)

A、系统内核小

B、专用性强

C、可执行多任务

D、系统精简

30、Unicode编码与(A)编码方式兼容。

A、ASCII码

B、GBK

C、GB2312

D、区位码

31、嵌入式系统有硬件和软件部分构成,以下(C)不属于嵌入式系统软件。

A. 系统软件

B. 驱动

C. FPGA编程软件

D. 嵌入式中间件

32、Cache用于存放主存数据的部分拷贝,主存单元地址与Cache单元地址之间的转换用(A)完成。

A.硬件 B. 软件 C. 用户 D. 程序员

33、在μC/OS-II系统中,OSTimeTick()函数只被以下(A)函数或过程所调用。

A. OSTickISR

B. OSShed

C. OSCtxSw

D. OSIntCtxSw

34、每种嵌入式操作系统都有自身的特点以吸引相关用户,下列说法错误的是(D)。

A. 嵌入式Linux提供了完善的网络技术支持;

B. CLinux是专门为没有MMU的ARM芯片开发的;

C. C/OS-Ⅱ操作系统是一种实时操作系统(RTOS);

D. WinCE提供完全开放的源代码。

35、下列关于存储管理单元(MMU)说法错误的是(B)。

A. MMU提供的一个关键服务是使各个任务作为各自独立的程序在其自己的私有存储空间中运行。

B. 在带MMU的操作系统控制下,运行的任务必须知道其他与之无关的任务的存储需求情况,这就简化了各个任务的设计。

C. MMU提供了一些资源以允许使用虚拟存储器。

D. MMU作为转换器,将程序和数据的虚拟地址(编译时的连接地址)转换成实际的物理地址,即在物理主存中的地址。

36、下列CPSR寄存器标志位的作用说法错误的是(D)。

A. N:负数

B. Z: 零

C. C: 进位

D. V: 借位

37、S3C2410X处理器为用户进行应用设计提供了支持多主总线的IIC接口。处理器提供符合IIC协议的设备连接的串行连接线为(C)。

A. SCL和RTX

B. RTX和RCX

C. SCL和SDA

D. SDA和RCX

38、栈和队列的共同特点是(C)。

A. 都是先进先出

B. B. 都是先进后出

C. 只允许在端点处插入和删除元素

D. 没有共同点

39、有如下程序

main()

{

int x=1,a=0,b=0;

switch(x)

{

case 0: b++;

case 1: a++;

case 2: a++;b++;

}

printf("a=%d,b=%d\n",a,b);

}

该程序的输出结果是(A)。

A. a=2 ,b=1

B. a=1, b=1

C. a=1, b=0

D. a=2, b=2

40、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(D)。

A. 函数调用可以作为独立的语句存在

B. 函数调用可以作为一个函数的实参

C. 函数调用可以出现在表达式中

D. 函数调用可以作为一个函数的形参

41、以下说法正确的是(C)。

A. C语言程序总是从第一个的函数开始执行

B. 在C语言程序中,要调用函数必须在main()函数中定义

C. C语言程序总是从main()函数开始执行

D. C语言程序中的main()函数必须放在程序的开始部分

42、寄存器R15用作( B )。

A. 栈指针寄存器

B. 程序计数器

C. 当前程序状态寄存器

D. 基地址寄存器

43、IRQ中断的优先级别是( D )。

A. 1

B. 2

C. 3

D. 4

44、LDR R2,[R3,#128] 的寻址方式是( C )。

A. 寄存器寻址

B. 寄存器移位

C. 变址寻址

D. 间接寻址

45、S3C2410有( B )个USB接口。

A. 1

B. 2

C.3

D. 4

46、ARM处理器的工作模式有( C )种。

A. 5

B.6

C. 7

D.8

二、填空题:

1、串行通信方式有三中单工通信、双工通信和半双工通信。

2、填写μC/OS-II中任务创建函数OSTaskCreate()的四个参数的含义:OSTaskCreate(

MyTask, //(任务的函数指针)

(void *)s, //(传给任务函数的参数)

&TaskStartStk[TASK_STK_SIZE - 1], //(任务的堆栈指针)

0 //(任务的优先级号)

);。

3、ARM7指令系统采用三级流水线指令,分别包括:取指、译码和执行。

4、TCP/IP在多个层引入了安全机制,其中TLS协议位于(传输)层。

5、OSTaskSuspend (self)可把正在运行的任务挂起(或等待),参数self指任务自身的优先

级。用此函数挂起的任务可通过OSTaskResume(self)函数唤醒。

6、下列程序的输出结果是(“Hello”)。

maim ()

{ char b[]="Hello you";

b[5]=0;

printf ("%s\n",b); }

7、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为(0 )。

8、在ARM处理器的各种模式中,大多数应用程序运行在(用户)模式,当一个高优先级

中断产生时会进入(快速中断)模式,在复位或软件软中断时进入(特权)模式。

9、一个嵌入式系统结构有典型的四层组成,包括:硬件层、中间层、软件层和功能层。

10、一个FAT文件系统卷有四部分组成,包括:保留区、FAT区、根目录和数

据区。

11、事件控制块ECB中OSEventType表示事件类型,OSEventCnt表示信号量计数器

(和信号量的值)。

12、串行通信方式有三中单工通信、双工通信和半双工通信。

13、OSTaskSuspend (self)可把正在运行的任务挂起(或等待),参数self指任务自

身的优先级。用此函数挂起的任务可通过OSTaskResume(self) 函数唤醒。

14、如果信号量是用于表示打印机不忙,那么该信号量的初始值应设为 1 。

15、若一个优先级为48的任务就绪,则在就绪表中,OSRdyTbl[]的OSRdyTbl[6]的D0 置

位,变量OSRdyGrp的D6 置位。

16、Socket接口是TCP/IP网络的__ API ______,定义了许多函数或例程。常用的Socket

类型有两种为_流式(stream)__Socket和_数据报式(datagram)_Socket。其中_流式(stream)__Socket是面向连接的,_数据报式(datagram)_Socket是面向无连接的。

17、调试程序时调入的文件最好为Debug 版本下编译生成的.axf文件,该版本的文件包

含部分调试用到的信息。

18、S3C44B0X使用ARM7(或ARM7TDMI) 内核,工作频率为66MHZ 。

19、在图形操作系统中,字符通常有两种存储方式:一种是图形点阵(或点阵) 方式;一种

是矢量图形(或矢量图)方式。在嵌入式开发系统中使用的都是图形点阵方式。

20、和信号量用数值表示不同,邮箱可以使一个任务向令一个任务发送一个指针型

21、变量,该变量包含了特定消息的数据结构。

22、S3C44B0提供_两个__个独立的异步串口,都可以运行于__中断__模式或__ DMA ___

模式。

23、16、ARM处理器的两种工作状态为ARM 状态和Thmub 状态。

24、17、USB家庭中有三位成员,即主机(或host)、设备(或device)、集线器(或

Hub)。

25、ARM存储器有两种存储模式,即大端模式和小端模式。假设Y=0x46134存储在

2000H~2003H四个内存单元中,若以小端模式存储,则(2000H)=__0x34 __、(2001H)=0x61 _、(2002H)=_0x04_、(2003H)=__0x00__。

26、信号量有两种类型,分别为:二进制(或binary)型和记数器(或counter)型。

27、影响流水线性能的因素有(互锁)和(跳转指令)。

28、某数码相机内置128MB的存储空间,拍摄分辨率设定为1600×1200像素,颜色为

24为,若不采用压缩技术,使用内部存储器最多可以存储(23)张照片,该相机最多支持(224)种色彩。

29、对于8位二进制数,-7的反码和补码分别是(11111000)和(11111001)。

30、在CPU的状态寄存器中,如果符号标志为“1”,表示运算结果为(负);如果进位标

识为“0”,表示(无进位或借位)。

三、判断题

1、程序运行过程中的资源可以是显示器、键盘,但不可以是一个数组或变量(X)

2、21、在μCOS-II操作系统中,已知Task1的优先级为12,Task2的优先级为26。假如

在Task2运行过程中发生键盘中断,在执行中断服务程序时Task1进入就绪状态,则中断返回时Task1得到CPU的使用权。(√)

3、若定义任务task1的优先级为12,则不能再定义其他任务的优先级也为12(√)

4、任务创建后即开始调度(X)

5、液晶工作在文本模式下时,既可以显示英文字符也可以显示汉字(X)

6、处于就绪状态的任务只能切换到运行状态(X)

7、等待消息函数WaitMessage(0)中的“0”表示此函数的超时等待时间为0秒(X)

8、若OSTaskSuspend (prio)函数把正在延时的任务挂起,则调用一次对应的唤醒函数即可

使该任务切换到就绪状态。(X)

9、调试程序时,需要停止程序运行后才可查看变量内容(√)

10、μCOS-II操作系统中移植成功后即可使用文件系统(X)

11、将模拟信号转换成数字信号的电路是DA转换器。(×)

12、IIC是同步串行数据总线,。(√)

13、S3C2410的处理器对内存的访问只能通过Load/Store指令来实现。(√)

14、Nand Flash比Nor Flash成本高,可靠性差。(×)

15、C语言程序可以嵌套加入汇编程序模块。(√)

16、运算放大器的输出电压范围一般大于电源电压的范围。(×)

17、由于CPU内部寄存器的访问速度较高,根据ATPC标准,应尽可能使函数的参数控制

在4个以下。(√)

18、ARM处理器结构体系中具有T变种处理器核可以工作在ARM状态和Thumb状态。

(√)

四、简答题

1、ARM微处理器的编程模型是指ARM微处理器的基本工作原理和一些与程序设计相关的基本技术细节,ARM编程模型主要有哪五个方面?主要是指什么内容?

答案要点:

ARM微处理器的工作状态:ARM状态、Thumb状态

ARM体系结构的存储器格式:大端格式、小端格式

ARM微处理器的工作模式:7种运行模式

ARM体系结构的寄存器组织:37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器,哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。

ARM微处理器的异常状态:7种异常

2、画图说明μCOS-II操作系统各状态之间是如何切换的,并举出至少一个相应的切换条件

或函数。

带箭头各任务间切换图正确,得1分;

切换条件每三个得1分,共3分,每种切换能举出一个正确条件或函数即可。

3、什么是μCOS-II操作系统的时钟节拍?

答:时钟节拍是特定的周期性中断。(1分)这个中断可以看作是系统心脏的脉动。中断间的时间间隔取决于不同的应用,一般在10ms~200ms之间。(1分)时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。(1分)时钟节拍率越快,系统的额外开销就越大。(1分)

4、ARM处理器有几种工作模式?并做说明每种工作模式的含义。

答:ARM处理器有7种工作模式:

用户模式(usr)- 正常程序执行的模式0.5分

快速中断模式(fiq)- FIQ异常响应时进入此模式0.5分

中断模式(irq)- IRQ异常响应时进入此模式0.5分

管理员模式(svc)- 系统复位和软件中断响应时进入此模式0.5分

中止模式(abt)- 用于虚拟存储及存储保护0.5分

系统模式(sys)- 与用户类似,但有直接切换到其它模式等特权0.5分

未定义模式(und)- 未定义指令异常响应时进入此模式0.5分

除了用户模式外,其他模式均可视为特权模式0.5分

5、什么是操作系统?操作系统在“硬件、操作系统、应用程序、硬件驱动”四者中,处于哪两层之间??

答:操作系统是计算机中最基本的程序。操作系统负责计算机系统中全部软硬件资源的分配与回收、控制与协调等并发的活动;操作系统提供用户接口,使用户获得良好的工作环境;操作系统为用户扩展新的系统提供软件平台。(3分)

操作系统处于应用程序和硬件驱动之间。(1分)

6、什么是嵌入式系统?分别从狭义和广义两方面说明。

答:从广义上说,凡是与产品结合在一起具有嵌入式特点的控制系统都可以叫嵌入式系统如电子表、超声波测距仪等职能仪表,常见CPU为MCS51系列芯片。(2分)

从狭义上说,嵌入式系统是指而嵌入式系统一般指在开发时移植了操作系统,功能较复杂的便携式电子设备,如手机、掌上电脑、MP4等,常见CPU为ARM、DSP、SOC等。(2分)

7、简述任务切换的过程。

答:当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态,即CPU寄存器中的全部内容。(1分)这些内容保存在任务的当前状态保存区,也就是任务自己的堆栈中。(1分)入栈工作完成以后,就把下一个将要运行的任务的当前状态从任务的堆栈

中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程就称为任务切换。(1分)做任务切换所需要的时间取决于CPU有多少寄存器要入栈。(1分)

8、S3C44B0的存储系统中,0xc000000和0xc080000的含义是什么?它们之间的

512kbyte空间做什么用?

答:0xC000000是SDRAM的起始地址,系统的程序存储空间从0xC080000开始。(2分)512Kbyte的空间划分出来,作为系统的LCD显示缓冲区使用(更新其中的数据,就可以更新LCD的显示)。(2分)

9、简述你对嵌入式和嵌入式系统的理解?

答:凡是使用了CPU的便携式电子设备都可以叫嵌入式,(如电子表、超声波测距仪等职能仪表,常见CPU为MCS51系列芯片) (2分)。而嵌入式系统一般指在开发时移植了操作系统,功能较复杂的便携式电子设备,(如手机、掌上电脑、MP4等,常见CPU为ARM、DSP、SOC等)。(2分)

10、嵌入式设计流程?

答:1)系统需求分析

2)体系结构设计

3)硬件/软件协同设计

4)系统集成

5)系统测试(每点约1分,酌情错2点,扣1分)

11、什么是代码临界区,进、出代码临界应分别做什么?

答:代码的临界区也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。(2分)

为确保代码临界区的执行,在进入临界区之前要关中断,而临界区代码执行完以后要立即开中断(在任务切换时,地址、指令、数据等寄存器堆栈保护)。(2分)

12、简要叙述嵌入式系统开发流程。

参考答案及要点:

建立开发环境;

配置开发主机;

建立引导装载程序BOOTLOADER;

下载已经移植好的操作系统;

建立根文件系统;

开发应用程序。

13、试简述常用的三极管放大电路和技术特点。

答:共射电路:具有较大的电压放大倍数和电流放大倍数,输入电阻和输出电阻适中。

共集电路:输入电阻大,输出电阻小,电压放大倍数小于1。

共基电路:输入电阻小,频率特性好。

14、嵌入式系统的软件层次结构包括哪些部分?简单说明各部分的功能与作用。

答:驱动层程序、操作系统、应用程序接口和应用程序。

驱动层程序:为上层软件提供设备的操作接口。

操作系统:进程管理、进程间通信、内存管理等。

应用程序接口:复杂函数和数据结构的集合,简化应用程序的开发。

应用程序:实现用户功能。

五、阅读程序题

1、根据以下程序回答问题。

struct NODE

{int k;

struct NODE *link;

};

main()

{ struct NODE m[5],*p=m,*q=m+4;

int i=0;

while(p!=q)

{p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}

(1)i、p、struct NODE和m的分别占据多少字节的内存空间?(4分)

(2)p和q指针初始指向的地址相差多少字节?(4分)

(3)程序运行后的输出结果是什么?(4分)

参考答案及要点:

(1)i、p、struct NODE和m的分别占据4字节、4字节、8字节和40字节的内存空间。(2)p和q指针初始指向的地址相差32字节

(3)程序运行后的输出结果13431。

2、在分辨率为320x240的LCD上,执行完下列程序后,画出在LCD上显示的图形并在划横线处添加注释。

void Main_Task(void *Id)

{ int oldx,oldy;

PDC pdc;

ClearScreen();

pdc=CreateDC();

SetDrawOrg(pdc, LCDWIDTH/2,LCDHEIGHT/2, &oldx, & oldy);

Circle(pdc,0, 0, 50); //_________________________

MoveTo(pdc, -50, -50);// _________________________

LineTo(pdc, 50, -50);// _________________________

ArcTo(pdc, 80, -20, TRUE, 30); //_________________________

LineTo(pdc, 80, 20);

ArcTo(pdc, 50, 50, TRUE, 30);

LineTo(pdc, -50, 50);

ArcTo(pdc, -80, 20, TRUE, 30);

LineTo(pdc, -80, -20);

ArcTo(pdc, -50, -50, TRUE, 30);

OSTimeDly(3000);

}

答:

320x240的LCD

以原点为圆心,50为半径画圆(0.5分

画笔移动到坐标(-50,-50)处(0.5分)

从坐标(-50, -50)到(50, -50)画直线(0.5分)

从当前坐标开始以30为半径顺时针画圆弧到坐标(80, -20)(0.5分)

3、在划线处添加代码,完成下面的程序,实现在task1中计算1到10的平均值,完成后

向task2发送信号量。Task2无限期等待信号量,等到后在LCD上显示收到平均值。

___ OS_EVENT *math_Sem;__;

Void Task1()

{ int i ,average=0,sum=0;

__ math_Sem=OSSemCreate(0);__

for(i=1;i<=10;i++)

{

sum=sum+i;

}

average=sum/10;

_ OSSemPost(math_Sem);__;

for(;;)

{ OSTimeDly(100);}

}

void task2()

{ __ U8 err; ___;

for(;;)

{ _ OSSemPend(math_Sem,0,&err);_ ;

LCD_printf("we get the average!\n");

____ OSTimeDly(100);__ ;

}

}

4、在划横线处添加代码,完成下面创建一个任务的过程,要求优先级为36,任务栈大小

为256。

OS_STK task1_Stack [256]={0, };

void task1 (void *Id);

#define task1_Prio 36

OSInit() ; //操作系统初始化

OSTaskCreate (task1,(void *)0,(OS_STK *)&task1_Stack[256-1],task1_Prio);

OSStart() ;//操作系统任务调度开始

5、ARM指令集的每一条指令都是4字节的,下面是一段中断入口程序,在空白处填上该中

断的类型和中断向量。

ENTRY

B Startup ; 复位中断,0x00 1分

B UndefHandle ; 未定义指令中断,0x04 1分

B SWIHandle ; 软中断,0x08 1分

硬件工程师笔试题硬件工程师笔试题

硬件工程师面试试题 模拟电路 1、基尔霍夫定理的内容是什么?(仕兰微电子) 2、平板电容公式(C=εS/4πkd)。(未知) 3、最基本的如三极管曲线特性。(未知) 4、描述反馈电路的概念,列举他们的应用。(仕兰微电子) 5、负反馈种类(电压并联反馈,电流串联反馈,电压串联反馈和电流并联反馈);负反馈的优点(降低放大器的增益灵敏度,改变输入电阻和输出电阻,改善放大器的线性和非线性失真,有效地扩展放大器的通频带,自动调节作用)(未知) 6、放大电路的频率补偿的目的是什么,有哪些方法?(仕兰微电子) 7、频率响应,如:怎么才算是稳定的,如何改变频响曲线的几个方法。(未知) 8、给出一个查分运放,如何相位补偿,并画补偿后的波特图。(凹凸) 9、基本放大电路种类(电压放大器,电流放大器,互导放大器和互阻放大器),优缺点,特别是广泛采用差分结构的原因。(未知) 10、给出一差分电路,告诉其输出电压Y+和Y-,求共模分量和差模分量。(未知) 11、画差放的两个输入管。(凹凸) 12、画出由运放构成加法、减法、微分、积分运算的电路原理图。并画出一个晶体管级的运放电路。(仕兰微电子) 13、用运算放大器组成一个10倍的放大器。(未知) 14、给出一个简单电路,让你分析输出电压的特性(就是个积分电路),并求输出端某点的 rise/fall时间。(Infineon笔试试题) 15、电阻R和电容C串联,输入电压为R和C之间的电压,输出电压分别为C 上电压和R上电压,要求制这两种电路输入电压的频谱,判断这两种电路何为高通滤波器,何为低通滤波器。当RC<

嵌入式硬件工程师与软件工程师的区别

嵌入式硬件工程师与软件工程师的区 别 嵌入式硬件工程师与软件工程师都有哪些不同呢?具体工作都包括什么?就业前景如何?工资待遇如何?这些都是大家十分关心的问题,尤其是对于即将走向工作岗位的学生来说,这些问题直接影响到他们的择业及将来的发展方向。 下面从几个方面来解答这些问题。 什么是嵌入式硬件工程师? 随着嵌入式技术的普及,硬件工程师的性质也有所改变。嵌入式硬件工程师与我们平常所说的硬件工程师不同。嵌入式硬件工程不但要求具备硬件工程师的基本技能,还必须完成部分软件工程师的工作,例如:底层驱动的开发嵌入式操作系统的裁剪,移植;GUI、文件系统等软件的移植;基于嵌入式操作系统的底层驱动程序的设计等。 什么是嵌入式软件工程师? 嵌入式软件工程师与我们平常说的软件工程师不同。 我们平常说的软件工程师大部分指的是windows和linux操作系统下应用软件的开发人员,硬件平台是基于PC机的。而嵌入式软件工程师则是指在wince、linux等嵌入式操作系统下进行用户应用软件开发的人员,硬件平台则是基于嵌入式产品的(例如:手机、PDA等)。软件开发工具也有所区别,嵌入式软件开发一般使用的是嵌入式系统专用的开发工具,例如wince下的evc,和linux下的qt等。 嵌入式软、硬件工程师职能、工作性质的区别 嵌入式硬件工程师的主要工作包括: 方案设计 根据客户需要进行可行性分析、整体功能设计、硬件成本预算等,在完成功能的同时还必须考虑到产品的生产加工、后期维修等各方面问题。 元件的选型 选择元件时必须根据每个元件特性和电路板特性,成分考虑到性能,干扰,功耗等问题。

电路的设计 元件的位置,产品的功耗,各部分功能完整性,抗干扰等 电路板设计 要求设计出的电路板,安全可靠,美观,拆装方便。 系统集成及调试 产品样品的组装集成及硬件调试。 底层驱动程序设计 根据硬件资源进行驱动程序的设计。 操作系统的裁剪移植* 根据需要选择最优的操作系统进行裁剪和移植 GUI及文件系统等软件移植* 根据需要加入GUI及文件系统等软件。 注:*表示该工作有可能不需要。 嵌入式软件工程师的主要工作包括: 人机交互程序设计 图形用户界面(GUI)程序设计 用户应用软件设计 软件系统测试 举个简单的例子: 就拿手机的设计来说,硬件工程师需要根据要求完成以下工作: 1、根据用户的需求例如:直板还是翻盖的,尺寸多大,功能要求(MP3,GPRS,触摸屏等),成本要求等。对整个方案进行设计。 2、选择最优的元件,例如液晶屏、CPU等 3、进行电路的设计 4、集成和调试 5、底层驱动程序设计 6、移植wince、linux或者symbian等嵌入式操作系统 软件工程师需要完成以下工作

硬件工程师面试题集(含答案-很全)

硬件工程师面试题集 (DSP,嵌入式系统,电子线路,通讯,微电子,半导体) 1、下面是一些基本的数字电路知识问题,请简要回答之。 (1) 什么是Setup和Hold 时间? 答:Setup/Hold Time 用于测试芯片对输入信号和时钟信号之间的时间要求。建立时间(Setup Time)是指触发器的时钟信号上升沿到来以前,数据能够保持稳定不变的时间。输入数据信号应提前时钟上升沿(如上升沿有效)T 时间到达芯片,这个T就是建立时间通常所说的SetupTime。如不满足Setup Time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿到来时,数据才能被打入触发器。保持时间(Hold Time)是指触发器的时钟信号上升沿到来以后,数据保持稳定不变的时间。如果Hold Time 不够,数据同样不能被打入触发器。 (2) 什么是竞争与冒险现象?怎样判断?如何消除? 答:在组合逻辑电路中,由于门电路的输入信号经过的通路不尽相同,所产生的延时也就会不同,从而导致到达该门的时间不一致,我们把这种现象叫做竞争。由于竞争而在电路输出端可能产生尖峰脉冲或毛刺的现象叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。 (3) 请画出用D 触发器实现2 倍分频的逻辑电路 答:把D 触发器的输出端加非门接到D 端即可,如下图所示: (4) 什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求? 答:线与逻辑是两个或多个输出信号相连可以实现与的功能。在硬件上,要用OC 门来实现(漏极或者集电极开路),为了防止因灌电流过大而烧坏OC 门,应在OC 门输出端接一上拉电阻(线或则是下拉电阻)。 (5) 什么是同步逻辑和异步逻辑?同步电路与异步电路有何区别? 答:同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系.电路设计可分类为同步电路设计和异步电路设计。同步电路利用时钟脉冲使其子系统同步运作,而异步电路不使用时钟脉冲做同步,其子系统是使用特殊的“开始”和“完成”信号使之同步。异步电路具有下列优点:无时钟歪斜问题、低电源消耗、平均效能而非最差效能、模块性、可组合和可复用性。 (7) 你知道那些常用逻辑电平?TTL 与COMS 电平可以直接互连吗? 答:常用的电平标准,低速的有RS232、RS485、RS422、TTL、CMOS、LVTTL、LVCMOS、ECL、ECL、LVPECL 等,高速的有LVDS、GTL、PGTL、CML、HSTL、SSTL 等。 一般说来,CMOS 电平比TTL 电平有着更高的噪声容限。如果不考虑速度和性能,一般TTL 与CMOS 器件可以互换。但是需要注意有时候负载效应可能引起电路工作不正常,因为有些TTL 电路需要下一级的输入阻抗作为负载才能正常工作。 (6) 请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控制接口、锁存器/缓冲器)

嵌入式笔试题汇总1

1 读程序段,回答问题 (a) int main(int argc,char *argv[]) { int c=9,d=0; c=c++%5; d=c; printf("d=%d\n",d); return 0; } a) 写出程序输出 b) 在一个可移植的系统中这种表达式是否存在风险?why? 答案:5 存在风险,因为c=c++%5;这个表达式对c有两次修改,行为未定义,c的值不确定 (b) #include "stdio.h" int a=0; // data section int b; // data section static char c; // BSS int main(int argc,char *argv[]) { char d=4; // stack static short e; // BSS a++; b=100; c=(char)++a; e=(++d)++; printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e); return 0; } a) 写出程序输出 b) 编译器如果安排各个变量(a,b,c,d)在内存中的布局(eg. stack,heap,data section,bss section),最好用图形方式描述。 答案:a=2,b=100,c=2,d=6,e=5 2 中断是嵌入式系统中重要的组成部分,这导致了许多编译开发商提供一种扩展:让标准C支持中断,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论以下这段代码。 __interrupt double compute_area(double radius) { double area = PI * radius *radius; printf("nArea = %f", area); return area; } 答案

硬件工程师考试试题 答案

硬件工程师考试试题答案 模拟电路 1.基尔霍夫定理的内容是什么? a.基尔霍夫电流定律:在电路的任一节点,流入、流出该节点电流的代数和为零.基尔霍 夫电压定律:在电路中的任一闭合电路,电压的代数和为0. b.公式:I1+ I2+I3+In=I OUT 2.设计一个20倍运放,说明高频运放及低频运放区别,在选用运放时注意哪几个参数? a. b. 低频运算放大器工作频率,相对频带宽度却很宽,自20 Hz至20KHz,高低频之比1000 。高频运算放大器工作频率高,几百KHz万MHz,相对于其中心频率却较窄。如果高频运算放大器用于低频电路,就会产生很大的高频噪声,所以用时注意。 c.差模放大倍数大、差模输入电阻大、共模抑制比CMMR 高;输入失调电压及其温漂、输入失调电流及其温漂小,以及噪声小。 3.画出如下B点的波开: B

4. 什么叫差模信号?什么叫共模信号?在设计电路中如何处理差模干扰及共模干扰?设计逻辑门电路及运放大器时,悬空引脚如何处理? a. 小相等、极性相反的一对信号称为差模信号。差动放大电路输入差模信号(u il =-u i2) 时,称为差模输入。两个大小相等、极性相同的一对信号称为共模信号。差动放大电路输入共模信号(u il =u i2)时,称为共模输入。在差动放大器中,有用信号以差模形式输 入,干扰信号用共模形式输入,那么干扰信号将被抑制的很小。 b. 差模干扰设计正负2条信号线紧靠,2条信号线平行,包地走线;共模干扰设计增加屏 蔽,布线远高电压大电流走线,采用稳定的电源和高品质开关电源(低噪声电源)。 c. 逻辑门电路时,悬空引脚应接高电平;运放大器悬空引脚正极端接运放输出,负端接低电平。 数字电路 5. 用逻辑门画出D 触发器,实现2倍分频的逻辑电路?( verilog HDL 实现) a. b. module divide2( clk , clk_o, reset); input clk , reset;

如何成为linux嵌入式工程师

如何成为linux嵌入式工程师 1、Linux开发工程师(每天学习6小时,用一个月时间) 首先成长为一名Linux开发工程师,这是最基本的目标,他应该具 备如下的素质: (1)了解Linux基本概念和基本操作(历史,文化,起源)(命令行,配置,操作,开发模式) (2)会使用Linux平台下的编辑器vi(默认安装,占内存小,方便 向嵌入式移植) (3)会使用Linux平台下的编译器GCC(相应的十几个命令行参 数) (4)会使用Linux平台下的管理工具Make(与Makefile相配合,尤其用于大项目中多平台移植的情况下) (5)会使用Linux平台下的调试器GDB(可以了解底层硬件,及 汇编指令) 2、嵌入式工程师 他更关心的是将来在哪一目标机上运行,不关心操作系统,进行的 更多与编程相关的工作

(1)合格的C程序的程序员(理解基本的控制结构:循环、分支、 数组、指针) (2)基本的编程思想(编程实践中总结算法) (3)程序的编译和链接 (4)可执行文件内部(段、起始地址、如何加载执行) (5)目标机处理器体系结构 (6)知道处理器的外设即System on Chip(内部存储结构及外设 驱动) (7)汇编语言及指令(主要是用在加载过程中) 3、系统工程师 系统工程师夹在驱动工程师及应用工程师这两个层次之间,他要对系统有一个整体的概念,系统主要是指操作系统,往往理论有余而实践 不足 (1)进程管理与调度(知道进程间的切换与调度,多任务)(2)内存管理(建立MMU页表,知道从虚地址到物理地址的映射)(3)驱动管理(管理设备,编写设备驱动,加载设备驱动)

(4)文件系统(制作文件系统,文件系统的读写,甚至驱动有时也 被当成文件系统来管理) (5)网络协议知识(协议实现作为上层应用与底层驱动之间的 衔接) (6)图形系统知识(支持多窗口及管理窗口,包括窗口切换,窗口 移动和覆盖) 4、嵌入式Linux系统工程师 (1)嵌入式Linux基本概念 (2)交叉编译 (3)Linux内核开发和调试工具 (4)启动代码移植(修改Uboot,Vivi等) (5)内核交叉编译(Linux不支持芯片时要芯片级的移植,支持芯 片时要板级的移植) (6)根文件系统制作 (7)设备驱动程序开发

嵌入式软件工程师C语言笔试题

软件笔试题(A) 姓名:___________________________________ 学校:_____________________________________ 专业:___________________________________ 电话:_____________________________________ (如无特殊说明,以下所有测试内容都是基于32位嵌入式系统) 1)程序的局部变量存在于 _______________ 中,全局变量存在于_________________ 中,动态申请数据存在于_________________ 中。 2)如何用if来做零值比较 int a : if(a==O) bool a : _________________________ float a : _________________________ void * a : 3) void func( char str[1OO]) { printf( “ %d ,sizeof( str )); } 输出结果是:_____________________ 有下列定义: char str[] = “ Hello World ” ; char *p = str; int n = 10; void *ptr = malloc( 100 ); 请写出如下表达式的值: sizeof (str ) = _ sizeof ( p ) = _ sizeof ( n ) = _ sizeof ( ptr )= _ 4)

un sig ned char *p1; un sig ned long *p2; p1=(unsigned char *)0x87000000; p2=(unsigned long *)0x80010000; 请问p1+5 = ____________ ; ___________ p2+5 = ________ ; _____________ 5) char str[10]; strcpy(str,"0123456789"); 产生什么结果?为什么? 6)用C语句,让程序跳转到绝对地址0XFFFF0去执行 7) 已知一个数组array ,用一个宏定义,求出数组的元素个数 #define ARRAY_COUNT _____________________________________________________ 8) 简要说明,为什么标准头文件都有类似以下的结构。 #ifndef __INC_Ho neywell_Debug #defi ne __INC_Ho neywell_Debug #ifdef __cplusplus extern "C" { #en dif /*???*/ #ifdef __cplusplus } #en dif #e ndif /*__INC_Hon eywell_Debug */

最新硬件工程师笔试模拟试题

硬件工程师笔试模拟试题 模拟电路 1、基尔霍夫定理的内容是什么?(仕兰微电子) 2、平板电容公式(C=εS/4πkd)。(未知) 3、最基本的如三极管曲线特性。(未知) 4、描述反馈电路的概念,列举他们的应用。(仕兰微电子) 5、负反馈种类(电压并联反馈,电流串联反馈,电压串联反馈和电流并联反馈);负反馈的优点(降低放大器的增益灵敏度,改变输入电阻和输出电阻,改善放大器的线性和非线性失真,有效地扩展放大器的通频带,自动调节作用)(未知) 6、放大电路的频率补偿的目的是什么,有哪些方法?(仕兰微电子) 7、频率响应,如:怎么才算是稳定的,如何改变频响曲线的几个方法。(未知) 8、给出一个查分运放,如何相位补偿,并画补偿后的波特图。(凹凸) 9、基本放大电路种类(电压放大器,电流放大器,互导放大器和互阻放大器),优缺点,特别是广泛采用差分结构的原因。(未知) 10、给出一差分电路,告诉其输出电压Y+和Y-,求共模分量和差模分量。(未知) 11、画差放的两个输入管。(凹凸) 12、画出由运放构成加法、减法、微分、积分运算的电路原理图。并画出一个晶体管级的运放电路。(仕兰微电子) 13、用运算放大器组成一个10倍的放大器。(未知) 14、给出一个简单电路,让你分析输出电压的特性(就是个积分电路),并求输出端某点的rise/fall时间。(Infineon笔试试题) 15、电阻R和电容C串联,输入电压为R和C之间的电压,输出电压分别为C上电压和R 上电压,要求制这两种电路输入电压的频谱,判断这两种电路何为高通滤波器,何为低通滤波器。当RC<

嵌入式软件工程师笔试题

(一) 1什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2 char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p 3 char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; out < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 4以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母 { for( size_t i=0; i

应聘硬件工程师或研发类工作资料集锦_硬件工程师_电子工程师_嵌入式工程师_单片机_笔试题目_面试题目

用一个宏定义FIND求一个结构体CTYPE里某个变量CNUM相对了CTYPE的编移量。 如:stuct student { int a; char b[20]; double ccc; } 则: FIND(student,a); //等于0 FIND(student,b);//等于4 二楼的可以。 #define FIND(type,member) (int)(&( ((type*)0)->member) ) struct student { int a; char b[20]; double ccc; }; int main(int argc,char* argv[]) { int i=FIND(student,a); //等于0 i=FIND(student,b);//等于4 return 0; } 调试结果是对的。 题目出得很好: 其实就是考下这个宏offsetof ,定义在文件stddef.h 中. #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) TYPE是某struct的类型0是一个假想TYPE类型struct,MEMBER是该struct中的一个成员. 由于该struct的基地址为0, MEMBER的地址就是该成员相对与struct头地址的偏移量. 再往深处,接触过Linux Kernel的会知道这个宏container_of,就嵌套了宏offsetof ,其在Linux Kernel中的应用非常广泛,它用于获得某结构中某成员的入口地址. 1.运放求放大倍数的 2.三极管基础知识(放大区,截至区,饱和区) 3.并联RC变换成串联RC 4.运放求反馈的 5.单片机和74hc595硬件连接和编程 6。数据结构-----队列,建立一个队列,写数,读数。 一简答题

嵌入式笔试题

嵌入式笔试题 国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 下面就由为大家介绍一下嵌入式笔试题的文章,欢迎阅读。 嵌入式笔试题篇11:用C语言实现大小端的测试Int CheckCpu(){union{int a;char b;}c;c.a=1;if(c.b==1)printf(“小端);else printf(“大端);}2:volatile的作用有哪些?Volatile第一变量相当于告诉编译器这个变量的值会随时发生变化,每次使用之前都要去内存里从新读取它的值,并不要随意针对它做优化,主要用在:1:一个中断子程序中会访问到的非自动变量;2:多线程应用中被几个线程共享的变量;3:并行设备的硬件寄存器。 3:C语言中static关键字的作用有哪些?1:在函数体中,一个被声明为静态的变量在这个变量在调用过程中维持其值不变;2:在模块内(但在函数体外),一个被声明为静态的变量,可以被这个模块内的所用函数使用,但不能被模块外的函数使用,它是一个本地的全局变量;3:在模块内,一个被声明为静态变量的函数,智能被这个模块内的函数调用;4:static全局变量与局部变量的区别:static全局变量只能被初始化一次,防止其他单元文件中被引用;5:static局部变量与局部变量的区别:static局部变量只能被初始化一次,下一次依据上一次结果的值;6:static函数与普通函数的区别:static在内存中只用一份,普通函数在每

一次调用中维持一份拷贝。 4:请问下面三种变量的区别:Int const *p : 指向常整型的指针;Int *const p; 指向整型的常指针;Int *const *p:指向常整型的常指针;5:在ARM系统中,在函数调用的时候,参数是通过哪种方式传递的。 当参数小于等于4的时候是通过r0~r3来进行传递的,当参数大于4的时候是通过压栈的方式进行传递。 6:中断与异常有何区别.异常在处理的时候必须考虑与处理器的时钟同步,实际上异常也称为同步中断,在处理器执行到因编译错误而导致的错误指令时,或者在执行期间出现特殊错误,必须靠内核处理的时候,处理器就会产生一个异常;所谓中断是指外部硬件产生的一个电信号从CPU的中断引脚进入,打断CPU的运行。 所谓异常是指软件运行过程中发生了一些必须作出处理的事件,CPU自动产生一个陷入来打断CPU的运行。 7:用预处理指令#define表示一年中有多少秒#define SECONDS_PER_YEAR (60*60*24*365)UL注意后面必须加UL,表示计算的结构是常整型。 8:简述SPI,UART,I2C三种传输方式。 SPI:高速同步串行口,首发独立,可同步进行SPI接口主要应用在EEPROM,Flash,实时时钟,A/D转化器,数字信号处理,是一种全双工同步通讯总线,该接口一般使用四条线:串行时钟线(sck),主出从入线,主入从出线,低电平有效地的从机选择线。

常见硬件工程师笔试题标准答案

硬件工程师笔试题 一、电路分析: 1、竞争与冒险 在组合逻辑中,在输入端的不同通道数字信号中经过了不同的延时,导致到达该门的时间不一致叫竞争。因此在输出端可能产生短时脉冲(尖峰脉冲)的现象叫冒险。 常用的消除竞争冒险的方法有:输入端加滤波电容、选通脉冲、修改逻辑设计等。 2、同步与异步 同步逻辑就是时钟之间有固定的因果关系。异步逻辑就是各时钟之间没有固定的因果关系。同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。 异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,而其它的触发器的状态变化不与时钟脉冲同步。 异步电路不使用时钟脉冲做同步,其子系统就是使用特殊的“开始”与“完成”信号使之同步 同步就就是双方有一个共同的时钟,当发送时,接收方同时准备接收。异步双方不需要共同的时钟,也就就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,结束时有停止位 3、仿真软件:Proteus 4、Setup 与Hold time Setup/hold time 就是测试芯片对输入信号与时钟信号之间的时间要求。建立时间就是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就就是建立时间-Setup time、如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。保持时间就是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如果hold time不够,数据同样不能被打入触发器。 5、IC设计中同步复位与异步复位的区别 同步复位在时钟沿采集复位信号,完成复位动作。异步复位不管时钟,只要复位信号满足条件,就完成复位动作。异步复位对复位信号要求比较高,不能有毛刺,如果其与时钟关系不确定,也可能出现亚稳态。 6、常用的电平标准 TTL: transistor-transistor logic gate晶体管-晶体管逻辑门 CMOS:Complementary Metal Oxide Semiconductor互补金属氧化物半导体 LVTTL(Low Voltage TTL)、LVCMOS(Low Voltage CMOS):3、3V、2、5V RS232、RS485 7、TTL电平与CMOS电平

硬件、嵌入式工程师笔面试

笔面试题 1、技术类 (1)描述一下你的项目 (2)单片机I/O口需要注意的问题 驱动能力不强,高电平驱动时需要加上拉电阻; 电平匹配,上拉或分组。 51单片机的P0口常用作数据线和低8位地址线、P2常用作高8位地址线。 (3)单片机不能启动的原因 1)晶振没有振荡,测量晶振是否起振; 2)一直在复位状态,检查复位电路; 3)程序飞了,检查程序; 4)程序编制错误,检查程序; 5)单片机坏了,更换单片机芯片; 6)硬件电路错误。 (4)单片机最小系统 1)复位电路: 当引脚9出现2个机器周期以上高电平时,单片机复位,程序从头开始运行。

2)时钟电路:有振荡器电路产生频率等于晶振频率,这时用的是外界晶振。 也可以又外部单独输入,此时XTAL2脚接地,时钟信号由XTAL1输入。 3)电源电路:VCC和GND引脚。 4)程序下载电路。(并不严格包含) (5)哈弗结构和冯洛伊曼结构 哈佛结构:是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度,与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点: 1、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存; 2、使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。 改进的哈佛结构,其结构特点为: 1、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理; 2、具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输; 哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令。目前使用哈佛结构的中央处理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的A VR系列和安谋公司的ARM9、ARM10和ARM11。 冯·诺伊曼结构:也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的

嵌入式经典笔试题目

1将一个字符串逆序 2、将一个链表逆序 3、计算一个字节里(byte)里面有多少bit被置1 4、搜索给定的字节(byte) 5、在一个字符串中找到可能的最长的子字符串 6、字符串转换为整数 7、整数转换为字符串 答案: 1、方法1: int main() { char* src = "hello,world"; int len = strlen(src); char* dest = (char*)malloc(len+1);//要为\0分配一个空间char* d = dest; char* s = &src[len-1];//指向最后一个字符 while( len-- != 0 ) *d++=*s--; *d = 0;//尾部要加\0 printf("%s\n",dest); free(dest);// 使用完,应当释放空间,以免造成内存汇泄露return 0; } 方法2: #include #include main() { char str[]="hello,world"; int len=strlen(str); char t; for(int i=0; i { t=str[i]; str[i]=str[len-i-1]; str[len-i-1]=t; } printf("%s",str); return 0; } 2、 链表题:一个链表的结点结构 struct Node {

int data ; Node *next ; }; typedef struct Node Node ; (1)已知链表的头结点head,写一个函数把这个链表逆序 ( Intel) Node * ReverseList(Node *head) //链表逆序 { if ( head == NULL || head->next == NULL ) return head; Node *p1 = head ; Node *p2 = p1->next ; Node *p3 = p2->next ; p1->next = NULL ; while ( p3 != NULL ) { p2->next = p1 ; p1 = p2 ; p2 = p3 ; p3 = p3->next ; } p2->next = p1 ; head = p2 ; return head ; } (2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同) Node * Merge(Node *head1 , Node *head2) { if ( head1 == NULL) return head2 ; if ( head2 == NULL) return head1 ; Node *head = NULL ; Node *p1 = NULL; Node *p2 = NULL; if ( head1->data < head2->data ) { head = head1 ; p1 = head1->next; p2 = head2 ; } else {

嵌入式工程师工作要求

嵌入式软件工程师 职位名称:嵌入式软件工程师性别:男 待遇: 6000-10000人数: 5 2011-1-24 人气: 2306时间: 2:52:01工作方式:全职 职位描述及要求: 1. 基于ARM平台编写linux底层驱动程序以及应用层程序的开发; 2. 本科及以上学历,计算机、自动化或相关专业,三年以上嵌入式系统软件开发经验优先; 3. 精通嵌入式linux C/C++语言程序开发,熟悉至少一种处理器架构及其汇编; 4. 掌握嵌入式驱动程序的开发及调试,熟悉板级调试及相关仪器使用; 5. 掌握嵌入式应用层程序的开发,熟悉QT编程者优先; 6. 有硬件设计能力者优先; 7. 具备良好的文档编写能力和习惯,能够编写规范的概要和详细设计文档; 8. 对程序设计有精益求精的态度,良好的团队合作精神和沟通能力。

熟悉TCP/IP,FTP, TFTP,TELNET, Radius等协议 职位描述: 1、熟悉ARM体系架构、熟悉相应外围接口电路 2、三年以上linux驱动开发经验; 3、有bootloader、嵌入式系统移植经验; 具有嵌入式下的 USB、Audio、LCD、Camera、Flash、bootloader ,电源管理等驱动程序的开发经验; 嵌入式硬件工程师 职位名称:嵌入式硬件工程师性别:男 待遇: 6000-10000人数: 5 2009-2-22 人气: 3180时间: 21:08:09工作方式:全职 职位描述及要求: 必须两年以上工作经验。 1、熟悉51系列单片机、熟悉嵌入式系统硬件电路设计; 2、Cadence、Pads、Altium Designer(protel)三种软件中熟练掌握一种用法,能够轻松绘制4层及4层以下PCB板。 2、单片机、嵌入式系统的产品样机焊接、调试及测试。 3、有扎实的模拟电路、数字电路设计及分析能力。 4、有大量的项目开发经验者优先、3年以上工作经验者优先。

嵌入式常见经典笔试题1

上海某全球五百强面试题(嵌入式) 1.static变量和static 函数各有什么特点? 3.描述一下嵌入式基于ROM的运行方式基于ram的运行方式有什么区别。 4.task 有几种状态? 5.task 有几种通讯方式? 6.C函数允许重入吗? 7.嵌入式操作系统和通用操作系统有什么差别?

嵌入式经典面试题 C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII 值。这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不是在嵌入式系统上。如果上述任何问题的答案是"是"的话,那么我知道我得认真考虑我是否应该去做这份工作。 从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。不管怎么样,看一下这人如何回答他不会的问题也是满有趣。应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。 有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮助。这些问题都是我这些年实际碰到的。其中有些题很难,但它们应该都能给你一点启迪。 这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。 预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4) 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 . 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1) 标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3) 懂得在宏中小心地把参数用括号括起来 4) 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b);

硬件工程师笔试题附答案

一、填空题(每题5分,8题,共40分) 1.二极管的导通电压一般是0.7V 。 2.MOS管根据掺杂类型可以分为NMOS 、PMOS 。 3.晶体三极管在工作时,发射结和集电结均处于正向偏置,该晶体管工作在饱和状态。 4.二进制数(11010010)2转换成十六进制数是D2 。 5.贴片电阻上的103代表10k。 6.输出使用OC门或OD门实现线与功能。 7.假设A传输线的特征阻抗是70欧姆,B传输线的特征阻抗是30欧姆,A传输线与B传输线相 连,那么它们之间的反射系数是0.4。(-0.4也可以是正确答案) 8.假设模拟信号的输入带宽是10Hz~1MHz,对信号进行无失真采样的最低频率是 2MHz 。 二、问答题(每题10分,6题,共60分) 1.单片机上电后没有运转,首先要检查什么?(10分) 答案:第一步,测量电源电压是否正常;第二步,测量复位引脚是否正常;第三步,测量外部晶振是否起振。2.请分别画出BUCK和BOOST电路的原理框图。(10分) BUCK电路: BOOST电路: 3.请画出SAR型(逐次逼近型)ADC的原理框图,或者描述SAR型ADC的工作原理。(10 分)

SAR型ADC包括采样保持电路(S/H)、比较器(COMP ARE)、数/模转换器(DAC)、逐次逼近寄存器(SAR REGISTER) 和逻辑控制单元(SAR L OGIC)。模拟输入电压VIN由采样保持电路采样并保持,为实现二进制搜索算法,首先由SAR L OGIC 控制N位寄存器设置在中间刻度,即令最高有效位MSB为“1”电平而其余位均为“0”电平,此时数字模拟转换器DAC输出电压VDAC为0.5VREF,其中VREF为提供给ADC的基准电压。由比较器对VIN和VDAC进行比较,若VIN>VDAC ,则比较器输出“1”电平,N位寄存器的MSB保持“1”电平;反之,若VN

相关文档
最新文档