人人范文网 岗位职责

嵌入式系统开发工程师岗位职责(精选多篇)

发布时间:2020-07-27 08:35:58 来源:岗位职责 收藏本文 下载本文 手机版

推荐第1篇:嵌入式研发工程师岗位职责

1.领导本部门实施产品开发、研制工作,制订开发计划。2.执行方案,并进行产品鉴定,生产转化,技术规范制定工作。3.积极关注行业发展动态,积累研发素材。4.总结产品研发经验,持续改进产品性能。5.主持产品技术转化和制造技术交底工作。6.为产品的投标提供技术支持。7.为代理商与合作伙伴的产品提供技术支持。8.根据用户或公司其他部门的要求进行设计修改和设计改进。

推荐第2篇:学习嵌入式系统开发心得

你好,我是一名嵌入式开发爱好者.近来总是看到很多初学者(多数是在校大学生)由于没有条件,想学习却不知道如何下手。

本人绝对能体会到学习的艰辛,而且视任何对知识技术有强烈追求的人(不管目前水平高低)为同路人,所以整理短文一篇写出一些学习感受,替所有渴望知识的人企盼高手指点学习之路,分享经验。

爱因斯坦说过,”我是站在巨人的肩膀上“

实践当然是最锻炼人的方式,但是我想在校生很少有这样的机会,别说本科生,硕士生也未必有条件。所以我想学习嵌入式要从个人的知识背景和现实条件出发。订立合适的阶段目标,在允许的条件下多动手多思考。

一般情况下对于硬件设备是比较短缺的。但是可以从软件方面和嵌入式系统开发模式上下功夫,提醒大家一点,嵌入式系统开发设计的内容知识很多,所以大家不要乱,在了解嵌入式系统开发的体系结构后,一步一步的下手,最容易上手的是linux下的C,比如ucos(有开放源代码),虽然可能无法在硬件上仿真,但也不必着急。wince,palmos上手都很容易。无论对于初学者还是自以为是高手的人来说,编程水平(这可不受硬件条件限制)绝对是没有止境的,有了较高的编程水平(嵌入式主要是C,当然OO的几种语言c++,java是发展趋势),等到有机会的时候及时的补充硬件知识,会很快的成为高手。

还有,一定记住,学习嵌入式,”要想办法,不要找理由“。当年在dos下用tc编程时的条件,现在回想起来建筑就是奇迹。

我推荐一条学习之路吧,仅供参考,

1、C开发经验

条件:linux(这都有吧)

方法:随便,主要是掌握ansiC编程(不包括gtk,qt等图形可视化开发)

2、网络、操作系统、体系结构

条件:linux,各种书,算法、例程。

方法:通过C编程实现简单的网络等知识的算法和过程。

3、嵌入式系统概念

条件:各个嵌入式网站,讨论组,书籍

方法:少提问(尤其是等着天上掉馅饼,这主要是防止增长惰性,也解决不了实际问题),多思考。

4、嵌入式开发实践

条件:各种嵌入式系统开发工具的demo版(或者D版,如果有的话),包括编译器,仿真器。可以找高手们要,也可以下载。

方法:这里有两个分支,一个是基于mcu/dsp的嵌入式系统开发,一个是象palmos,wince,ucos等rtos下的应用软件开发。对硬件感兴趣,想成为真正高手的由第一个分支入手,以后进入第二个分支;如果十分厌烦硬件,只想停留在软件开发上的,可以只由第二个分支入手,以后就和pc上的开发没有什么本质上的区别了,找份不错的工作应该没问题,可以不用进行下面的步骤了,感兴趣可以参考第6条。

5、硬件开发

条件:各种嵌入式芯片、存储器等电路器件,protel99等电路设计软件,电路板制作。

方法:这时候该有开发条件了,最起码是51系列,这个比较方便。电路的设计内容较多,不过看起来吓人,实际上比软件要简单的多。只要下功夫,实践会告诉你一切。

6、硬件工程/软件工程/项目管理

条件: 各个芯片详细资料和使用经验,软件工程知识,项目管理知识,培训,大型项目参与经验

方法:已经是高手了,但是学无止境,沾沾自喜于已有的知识是致命的。那个下一步。。。,你该是管理者了。

抛砖引玉,以上出自我的经验,欢迎各路高手们补一下 再告诉你一些我的收藏夹的网站

国内有关嵌入式开发的论坛

电子产品世界的论坛

http://bbs.edw.com.cn/index.asp

恒颐高科论坛

http://www.daodoc.com/

中国单片机公共实验室

http://www.daodoc.com/

北京科银京成技术公司

http://www.daodoc.com/

微芯力科技

http://www.daodoc.com

驱动开发网之嵌入式版块,挺综合的一个网站

http://www.daodoc.com/index.php

电子爱好者家园[2004年09月30日] http://home.ee521.com/main.asp

广州友善之臂电子有限公司

http://www.arm9.net/index.asp

好了 兄弟 开始努力 我们一起加油哈...

推荐第3篇:嵌入式系统开发总结(uCCOS+uCGUI+uCFS)

嵌入式系统开发总结(uC/COS+uC/GUI+uC/FS)

今天终于把做了一个多月的嵌入式系统软件交了上去。终于可以轻松一下了,但是期末临近,看来没得闲了。现在总结一下整个开发过程,希望对想要入门嵌入式系统开发的朋友有所帮助。

首先要说的是,整个开发过程很艰苦,主要是因为第一次接触嵌入式开发,入门很难,同时由于大三有很多专业课,还有六级、实习面试等,在此对我的队友陈、马表示感谢,谢谢他们和我一直坚持到最后。

该系统实现基于uC/COS、uC/GUI、uC/FS的整合。首先要根据硬件配置三者。根据uC/GUI、uC/FS的文档资料很容易移植到操作系统uC/COS。其文档资料的下载地址请参见文章最后。

uC/COS是基于嵌入式的实时操作系统,它管理任务、内存、文件、电源等,为嵌入式系统提供多任务的开发环境。uC/GUI是一种用于嵌入式应用的图形支持软件,本系统借用uC/GUI实现系统所需要的各种界面。uC/FS是一种文件系统,本系统借用其来管理存储器中的文件,在book、meage中都用到文件的读写,可以说uC/FS是本系统实现的不可或缺的部分。

该系统所有界面由uC/GUI 实现。主界面一窗口(Frame)为容器,添加菜单栏(Menu)来控制整个系统。其他界面以Dialog为容器,在Dialog中添加按钮(Button)、列表(ListView)、多行编辑框(MultiEdit)等。系统采用了“回调函数”机制,回调函数在用户程序中定义,当一个指定的事件发生时,通知图形系统调用指定的函数。通常应用于一个窗口内容改变时自动重绘的场合。该系统利用回调函数初始化窗口,当窗口内容改变时重绘窗口,同时处理事件响应,例如当鼠标点击“Read”按钮是,通过回调函数调用txtTask()函数弹出电子书显示对话框(Txt)。

总的来说,该设计结构合理,逻辑严密,各个模块相互协调实现了复杂的功能。系统界面小组力求简单大方,各个模块的功能实现都用到了不少精妙的算法。但是,由于小组能力有限,前期对嵌入式的了解浅薄,以及时间等各方面的限制,系统并没有完全实现所预期的功能,也可以说仅实现了一些辅助功能。 首先说meage模块,设计预期是用到红外发送,实现与红外手机的数据传输和操纵手机的短信发送,但是在实际操作中小组发现需要扩展外围电路(红外发送),由于资金问题,小组讨论放弃该功能,仅实现了信息编辑和信息保存功能。其实该功能的实现小组也是有很清晰的思路的,如果有足够的资金和时间,小组完全可以实现该功能,这里很有些遗憾。

然后是文件系统,最后的几天里,我们发现了一个严重的问题,也就是我们所用文件系统所管理的RAM是可挥发性的(一时没有意识到),我们保存到其中的文件在系统下一次启动的时候都会消失。小组发现norflash是不可挥发的存储器,于是我们考虑将文件存储到norflash中,但是在将norflash添加到uC/FS中的过程中,我们发现必须为其编写驱动程序。经过数天的努力,我们编辑出了norflash的uC/FS驱动,但是很遗憾,没有成功,竞赛举办方给出的norflash模块的实验太过简单,无法编辑驱动程序的底层控制存储器算法。(本小组编写的norflash驱动将在附件中给出)

Music模块,其实music仅仅实现了简单的mp3播放功能,同时提供暂停、下一首等功能,但是经过小组的不懈努力仍然没有声音。于是我们怀疑是硬件模块(UCB1400、AC97CODEC)的问题。

系统整体功能也有待改进,比如开机,进行一段时间的操作后,系统就会不正常的死掉。虽然我们做了大量的性能改良功能,但这个问题依然存在。

小组在近期做了此次竞赛的总结,一直表示此次竞赛给我们提供了一个很好的学习机会,大家都有了很大的提高,至少是对嵌入式有了切身的认识。大家对嵌入式系统设计也有了很大的兴趣,同时表示将在以后对嵌入式进行更深层次的研究。

在此,我们对同类设计提供一些建议。前期应该对资金、时间等做准确的估计,同时选择最主要的功能模块,这样可以集中有限精力将单个模块的功能实现的更加强大。在功能设计的阶段应尽量考虑到所有细节,这样可以避免在最后时刻发现关键因素致使系统功能大打折扣。 系统的创新点:

1、使用uC/FS管理文件

电子书模块和短信编辑模块的Save功能都需要大量操作文件的代码。由于实时操作系统uC/GUI没有实现文件系统,在参考了各种版本的文件系统后,小组决定选用uC/FS。uC/FS是一种FAT格式的文件系统,它可以用于所有的存储媒体,但你必须提供存储媒体的底层接口函数。

引进uC/FS后,小组很方便地实现了系统的各种主要功能。

2、借用软键盘代替手写字体识别功能

当考虑到手写字体识别功能的难度和时间的有限,小组讨论果断决定使用软件盘实现字符的输入功能。

首先,小键盘界面小巧简洁。我们以woindow系统中的软键盘为模板,删除掉不需要的复杂按键,形成了独具风格的嵌入式版软键盘。

其次,由于界面大小限制,软键盘进入了”shift”键,实现键盘按键的切换,实现了所有字符(包括数字、大小写字母和各种操作符)的输入功能。

3、系统内容丰富多彩

这一点可以说是系统的坏处也可以说是系统的好处,坏处就是由于本次竞赛时间有限,有些功能实现的也比较简单,但是可惜的是该系统脉络清晰,很合理地将各个模块有机地结合到了一起。而且各个模块并不是相互独立的,而是相互约束、相互协作的。例如:meage模块的Save功能,将文本信息保存到存储器中,保存的文件有可以在book中查阅;通讯录协助meage模块中Send功能的手机号码查询。

这些都可以说是本系统的一大特色。

主界面:

(各个模块的界面以及具体实现请参看后续文章) 程序流程框图:

uC/GUI中文手册下载:http://download.csdn.net/source/466900

uC/FS正式版(内含使用手册)下载:http://download.csdn.net/source/466918 uC/COS中文手册下载:http://download.csdn.net/source/466905 uC/GUI完整实例(超有用):http://download.csdn.net/source/467738

推荐第4篇:软件开发工程师(嵌入式开发)岗位职责

1.设计芯片驱动程序,编写软件概要和详细设计说明书。2.编写驱动代码,并进行单元测试和系统测试。3.配合硬件工程师调试硬件电路。4.单板软件需求分析、设计、编码与测试。

推荐第5篇:嵌入式Linux系统开发教程实验报告

嵌入式实验报告

姓名: 学号: 学院: 日期:

1

实验一 熟悉嵌入式系统开发环境

一、实验目的

熟悉 Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。使用Linux的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。

二、实验内容

本次实验使用 Redhat Linux 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。创建一个新目录,并在其中编写hello.c 和Makefile 文件。学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。

三、实验设备及工具

硬件::UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。

软件:PC 机操作系统REDHAT LINUX 9.0+超级终端(或X-shell)+AMR-LINUX 开发环境。

四、实验步骤

1、建立工作目录

[root@localhost root]# mkdir hello [root@localhost root]# cd hello

2、编写程序源代码

我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:

[root@localhost hello]# vi hello.c 按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc 键进入命令状态,再用命令“:wq!”保存并退出。这样我们便在当前目录下建立了一个名为hello.c的文件。 hello.c源程序: #include int main() { char name[20]; scanf(“%s”,name); printf(“hello %s”,name); return 0; }

3、编写Makefile

要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译。

2 Makefile源程序:

CC= armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS+= –static all: $(EXEC) $(EXEC): $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) clean: -rm -f $(EXEC) *.elf *.gdb *.o 下面我们来简单介绍这个Makefile 文件的几个主要部分: CC 指明编译器

EXEC 表示编译后生成的执行文件名称 OBJS 目标文件列表 CFLAGS 编译参数 LDFLAGS 连接参数 all: 编译主入口

clean: 清除编译结果

注意:“$(CC) $(LDFLAGS) -o $@ $(OBJS)”和“-rm -f $(EXEC) *.elf *.gdb *.o”前空白由一个Tab 制表符生成,不能单纯由空格来代替。

与上面编写 hello.c的过程类似,用vi来创建一个Makefile文件并将代码录入其中。

[root@localhost hello]# vi Makefile

4、编译应用程序

在上面的步骤完成后,我们就可以在hello 目录下运行“make”来编译我们的程序了。如果进行了修改,重新编译则运行: [root@localhost hello]# make clean//编译应用程序 [root@localhost hello]# make//下载调试

注意:编译、修改程序都是在宿主机(本地PC 机)上进行,不能在超级终端下进行。

5、下载调试

在宿主PC计算机上启动NFS服务,并设置好共享的目录,(这里将刚生成的根目录/arm2410cl作为共享目录,以下实验同理)具体配置请参照前面第一章第四节中关于嵌入式Linux 环境开发环境的建立。在建立好NFS共享目录以后,我们就可以进入超级终端中建立开发板与宿主PC机之间的通讯了。

[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56:/arm2410cl /host //超级终端中执行

如果不想使用我们提供的源码的话,可以再建立一个NFS 共享文件夹。如/root/share,

我们把我们自己编译生成的可执行文件复制到该文件夹下,并通过超级终端挂载到开发板上。

[root@localhost hello]# cp hello /root/share //虚拟机中

[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56:/root/share /host //超级终端中 再进入/host目录运行刚刚编译好的hello程序,查看运行结果。

3 [/mnt/yaffs] cd /host //超级终端中 [/host] ./hello hello world (1)在PC计算机上启动NFS 服务,并设置好共享的目录。

启动 Red Hat Linux –>点击“主菜单”->选择“系统设置”->“服务器设置”->“NFS服务器”->“增加”->“基本”下:点击“浏览”选择“/”下的“arm2410cl/”;“确定”;“主机:192.168.0.* ”;“基本权限”选择“读/写”;“确定”。->“常规选项”下:选择:“允许来自高于1024的端口的连接”,其他不选;确定。 (2)在建立好NFS共享目录以后,进入minicom 中建立开发板与宿主PC机之间的通讯

新建终端

[root@localhost root]# minicom//服务器 新建终端

[root@localhost root]#ifconfig eth0 192.168.0.10 //设置主机地址 [root@localhost root]#ifconfig //查看地址 在服务器下:

[/mnt/yaffs] mount -t nfs –o nolock 192.168.0.56:/arm2410cl /var 注意:开发板挂接宿主计算机目录只需要挂接一次便可,只要开发板没有重起,就可以一直保持连接。这样可以反复修改、编译、调试,不需要下载到开发板。

6、实验截图

4

7、测试结果

测试挂载成功,用mplayer xyz.avi命令播放视频 [root@localhost /]#cd /mnt/yaffs/mm [root@localhost /]#mplayer xyz.avi

五、实验心得

本次实验比较简单,旨在让我们熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。实验中我们创建了一个新目录,并在其中编写hello.c和Makefile文件。我们学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置,下载已经编译好的文件到目标开发板上运行。学会使用Linux的armv4l-unknown-linux-gcc编译和基于NFS方式的下载调试,了解嵌入式开发的基本过程。

5 实验二 S3C2410处理器A/D模块硬件设计

一、实验目的

1.熟悉硬件电路设计

2.掌握简单的S3c2410处理器的电路设计。 3.掌握protel软件的使用。

二、实验内容

使用protel 99se 做s3c2410处理器最小系统电路设计,A/D数据采集模块电路设计。

三、实验设备及工具

硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G以上。

软件:PC 机操作系统REDHAT LINUX 9.0、超级终端(或X-shell)、ARM-LINUX 开发环境

五、实验原理

1、A/D 转换器

A/D 转换器是模拟信号源和CPU 之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D 转换是不可缺少的。

A/D 转换器有以下类型:逐位比较型、积分型、计数型、并行比较型、电压-频率型,主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来决定选择何种类型。常用的有以下两种:(1)双积分型的 A/D 转换器;(2)逐次逼近型的 A/D 转换器。

2、A/D 转换的重要指标 (1)分辨率(Resolution)

(2)精度(Accuracy)

(3)ARM 自带的十位A/D 转换器 (4)A/D 转换器在扩展板的连接(A/D 转换器在扩展板的接法如图2.4.2 所示,前三路通过电位器接到3.3v 电源上。)

图 2.4.2 A/D 转换器在扩展板上的接法

6

六、实验步骤

1、阅读理解源码

进入/arm2410cl/exp/basic/04_ad 目录,使用vi 编辑器或其他编辑器阅读理解源代码。

2、编译应用程序

运行make产生ad可执行文件

[root@localhost /]# cd /arm2410cl/exp/basic/04_ad/ [root@localhost 04_ad]# make armv4l-unknown-linux-gcc -c -o main.o main.c armv4l-unknown-linux-gcc -o ../bin/ad main.o -lpthread armv4l-unknown-linux-gcc -o ad main.o -lpthread [root@localhost 04_ad]# ls ad hardware.h main.o Makefile.bak s3c2410-adc.h bin main.c Makefile readme.txt src

3、下载调试

到超级终端窗口,使用 NFS mount 开发主机的/arm2410cl 到/host 目录。 [/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56:/arm2410cl /host [/mnt/yaffs]insmod ad/s3c2410-adc.o [/mnt/yaffs]cd /host/exp/basic/04_ad [/host/exp/basic/04_ad]./ad Pre Enter key exit! a0= 0.0032 a1= 3.2968 a2= 3.2968 我们可以通过调节开发板上的三个黄色的电位器,来查看a0、a

1、a2 的变化。

4、原理图

7

5、实验截图

七、实验心得

通过本次试验,我学会了A/D接口原理,了解实现A/D系统对于硬件要求。阅读ARM芯片文档,掌握ARM的A/D相关寄存器的功能,熟悉ARM系统硬件的A/D相关接口,还了解在Linux环境下对S3C2410芯片的8通道10位A/D模块的硬件设计。

8 实验三

Kernel与root的设计和烧写

一、实验目的

1.掌握Linux内核配置与裁剪的方法 2.理解根文件系统配置。

3.掌握嵌入式系统内核和根文件系统的烧写的过程。

二、实验内容

对嵌入式Linux系统进行裁剪、配置和编译,生成自己需要的操作系统映像文件,并将其烧写到flash中。

三、实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境.

四、实验步骤

1、设计过程:

9

10

2、烧写过程:

(一)、超级终端设置

1、运行Windows 系统下开始→所有程序→附件→通讯→超级终端(HyperTerminal),新建一个通信终端。如果要求输入区号、电话号码等信息请随意输入,出现如图1.5.1 所示对话框时,为所建超级终端取名为arm,可以为其选一个图标。单击“确定”按钮。

11

2、在接下来的对话框中选择ARM 开发平台实际连接的PC 机串口(如COM1),按确定后出现如图1.5.2 所示的属性对话框,设置通信的格式和协议。这里波特率为115200,数据位8,无奇偶校验,停止位1,无数据流控制。按确定完成设置。

3、完成新建超级终端的设置以后,可以选择超级终端文件菜单中的另存为,把设置好的超级终端保存在桌面上,以备后用。用串口线将PC 机串口和平台UART0 正确连接后,就可以在超级终端上看到程序输出的信息了。

(二)、串口下载烧写

在 Windows xp平台下通过超级终端烧写vivi(bootloader)、内核(Kernel)、根文件系

统(root)的步骤如下:

1、格式化flash 打开超级终端,先按住PC 机键盘的Back Space 键,然后启动2410-S,进入vivi,按照以下命令格式化flash,重新分区。

vivi>bon part 0 128k 192k 1216k 4288k:m 64704k 回车

2、烧写vivi 这时已格式化flash,运行的是SDRAM 中的vivi.vivi>load flash vivi x 回车 此时超级终端提示:

Ready for downloading using xmodem...Waiting...

12 点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择协议为Xmodem,选择

镜像文件vivi,点击“发送”,10 秒左右vivi 就烧写到flash 里了.这时要复位2410-S,重新进入vivi>来烧写kernel,root.

3、烧写内核映象zImage vivi>load flash kernel x 回车 出现提示:

Ready for downloading using xmodem...Waiting...点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择镜像文件zImage,协议

为Xmodem,点击“发送”,4 分钟左右zImage 传输完毕,zImage先传输到SDRAM中,再把数据从SDRAM 复制到flash 里,请等待这一过程结束到出现vivi>,再烧写root,否则会导致烧写kernel 失败。

13

4、烧写根文件系统(root) vivi>load flash root x 回车

Ready for downloading using xmodem...Waiting...点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择镜像文件root.cramfs,

协议为Xmodem,点击“发送”,8 分钟左右root.cramfs 烧写完毕;

5、烧写应用程序

用2410-S 实验箱配套网线连接好2410-S 的NIC-1 网口和PC 机的网口,重启2410-S 进

入linux 操作系统的[/mnt/yaffs]下,注意配置IP 在同一网段,执行以下指令: [/mnt/yaffs]ifconfig --查看IP [/mnt/yaffs]ifconfig eth0 192.168.0.111 --配置eth0 IP [/mnt/yaffs]inetd --启动ftp

14

打开ftp 软件FlashFXP(在光盘中/img/flashvivi 目录中提供),点击界面中上部黄色闪

电符号,建立快速连接,输入地址192.168.0.111,用户名:root,密码:无。连接进入ftp 服务,上传“yaffs.tar.bz2”到2410-S 的/var 文件夹下,3 分钟左右上传完毕。

这时不能重启2410-S,否则上传过程白费。接下来在超级终端中输入: [/mnt/yaffs]cd ..--转换到/mnt 下

15 [/mnt]rm -rf /yaffs/* --删除/yaffs 下文件 [/mnt]cd /var --转到var 目录下

[/var]tar xjvf yaffs.tar.bz2 –C /mnt/yaffs --解压yaffs.tar.bz2 到mnt/yaffs 目录下

如图1.5.9 所示,注意大小写(C 为大写),需5 分钟左右

解压缩结束,整个烧写实验就完成了。

五、实验心得

了解了Linux内核与root的知识,能够利用串口通讯下载方式完成它们的烧写过程。

16 实验四 嵌入式软件设计与交叉编译

一、实验目的

1.掌握嵌入式Linux软件设计方法原理 2.掌握Makefile文件设计方法。

3.熟悉Linux下静态库和共享库的设计

二、实验内容

(1)编写一个带输入、输出的由5个文件组成的嵌入式软件; (2)写好makefile文件,并上机调试; (3)用变量指明两种编译器。

三、实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境.

四、程序分析

input.h: #define N 10 void input( char *s);

input.c:

#include #include Void input(char *s) { Printf(“input your name please:”); Scanf(“%s”, s); } output.h #define M 5 Void output(char *s) output.c #include #include Void output(char *s) { Printf(“hello %s!\n”, s); } main.c #include #include #include “input.h”

17 #include “output.h” int main( ) { int i = 0 ; char name[N]; input( name ); for( i=0; i

CC=armv4l-unknown-linux-gcc EXEC=zc OBJS=main.o input.o output.o $(EXEC):$(OBJS) $(CC) -o $(EXEC) $(OBJS) install: $(EXP_INSTALL) $(EXEC) $(INSTALL_DIR) clean: -rm -f $(EXEC) &.o

五、实验结果

pc机上执行时 # make //若已执行过,则用# make clean 清除后再执行# make # ./zc 结果:

[/mnt/yaffs]cd /host/exp/basic/zc/ [/host/exp/basic/zc]./zc input your name,please:zc hello zc! hello zc! hello zc! hello zc! hello zc!

六、实验心得

初步了解了交叉编译原理,GUN开发套件包括一系列开发测试工具,主要组件为Gcc。实验详细说明了基于ARM和Linux的嵌入式系统的交叉编译环境的建立方法,并给出了具体的步骤。实验结果表明,可以在x86平台编译调试ARM平台上运行的程序。并通过实验认识嵌入式系统上C语言编程与普通PC机上C语言编程的不同点,掌握使用交叉编译环境编译嵌入式系统程序的方法。

18 实验五

嵌入式驱动程序设计

一、实验目的

1.学习在LINUX下进行驱动设计的原理。

2.掌握使用模块方式进行驱动开发调试的过程。

二、实验内容

在PC 机上编写简单的虚拟硬件驱动程序并进调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。

三、实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

四、实验步骤

1、在PC(宿主机)上编译调试驱动程序。(1)阅读和理解源代码

进入/arm2410cl/exp/drivers/01_demo,使用vi 编辑器或其他编辑器阅读理解源代码。

(2)编译驱动模块及测试程序

上面介绍了在Makefile 中有两种编译方法,可以在本机上使用gcc 也可以使用交叉编 • 确定

• # KERNELDIR = /arm2410cl/kernel/linux-2.4.18-2410cl • KERNELDIR = /usr/src/linux (3)测试驱动程序

如果使用gcc 编译的话,需要通过下面的命令来建立设备节点,如果使用交叉编译器的话,不需要建立设备节点。 #mknod /dev/demo c 254 0 首先要插入驱动模块demo.o,然后可以用lsmod 命令来查看模块是否已经被插入,在不使用该模块的时候还可以用rmmod 命令来将模块卸载。 • insmod demo.o • lsmod demo.o • ./test_demo

2、使用arm编译器在实验箱调试驱动程序。

五、实验结果分析

1.编译demo.c 为demo.o;编译test_demo.c 为test_demo。

gcc -c demo.c gcc -o test_demo test_demo.c 2.若编译器选择的是gcc(请查看Makefile文件),需要用以下命令建立节点:

#mknod /dev/demo c 254 0 若编译器选择的是armv4l-unknown-linux-gcc 则不需要mknod命令建立节

19 点。

3.使用insmod demo.o插入模块,使用lsmod 列出所有插入的模块。查看demo的插入情况: #insmod demo.o 6.运行test程序测试驱动的各个接口运行情况。

# ./test_demo 结果:

PC机上的运行结果: 实验箱上的运行结果:

7.运行ad程序测试驱动的各个接口运行情况

六、实验心得

掌握了在Linux下常用编译器的使用,进一步掌握了Makefile的编写和使用以及Linux下的程序编译与交叉编译的过程。

20 实验六

触摸屏驱动程序设计

一、实验目的

1、了解在 UP-TECH S2410/P270 DVP平台上实现触摸屏Linux 驱动程序的基本原理。

2、了解 Linux 驱动开发的基本过程。

二、实验内容

以一个简单字符设备驱动程序为原型,剖析其基本结构。进行部分改写之后并编译实现其相应功能。

三、预备知识

1、掌握在 Linux 集成开发环境中编写和调试程序的基本过程。

2、了解 ARM 芯片(本实验是针对ARMS3C2410 系列)的基本结构。

3、了解 Linux 内核中关于设备控制的基本原理。

四、实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪,PC机pentumn500以上, 硬盘40G以上,内存大于128M。 软件::PC 机操作系统REDHAT LINUX 9.0 +超级终端(或X-shell) + AMRLINUX 开发环境

五、实验原理

1、Linux 设备驱动概述

Linux 设备驱动程序属于Linux 内核的一部分,并在Linux 内核中扮演着十分重要的角色。它们像一个个“黑盒子”使某个特定的硬件响应一个定义良好的内部编程接口,同时完全隐蔽了设备的工作细节。用户通过一组标准化的调用来完成相关操作,这些标准化的调用是和具体设备驱动无关的,而驱动程序的任务就是把这些调用映射到具体设备对于实际硬件的特定操作上。

我们可以把设备驱动作为内核的一部分,直接编译到内核中,即静态编译,也可以单独作为一个模块(module)编译,在需要它的时候再动态的把它插入到内核中。在不需要时也可把它从内核中删除,即动态连接。显然动态连接比静态连接有更多的好处,但在嵌入式开发领域往往要求进行静态连接,尤其是像S3C44B0 这种不带MMU 的芯片。但在S3C2410等带MMU 的ARM 芯片中我们依然可以使用动态连接。目前Linux 支持的设备驱动可分为三种:字符设备(character device),块设备(blockdevice),网络接口设备(network interface)。当然它们之间的也并不是要严格的加以区分。

2、Linux 关于字符设备的管理

驱动程序在 Linux 内核中往往是以模块形式出现的。与应用程序的执行过程不同,模块通常只是预先向内核注册自己,当内核需要时响应请求。模块中包含两个重要的函数:init_module 和cleanup_module。前者是模块的入口,它为模块调用做好准备工作,而后者则是在模块即将卸载时被调用,做一些清扫工作。

驱动程序模块通过函数:

21 int register_chrdev(unsigned int major, const char *name, struct file_operations *fops); 来完成向内核注册的。其中unsigned int major 为主设备号,const char *name 为设备名,至于结构指针struct file_operations *fops 它在驱动程序中十分重要。

在我们编写好一个驱动程序模块后,按传统的主次设备号的方法来进行设备管理,则我们应手工为该模块建立一个设备节点。命令: mknod /dev/ts c 254 0

其中/dev/ts 表示我们的设备名是ts,“C”说明它是字符设备,“254”是主设备号,“0”是次设备号。一旦通过mknod 创建了设备文件,它就一直保留下来,除非我们手工删除它。

3、触摸屏的控制

本系统触摸屏的控制是使用的 S3c2410 处理器自带的触摸屏控制器,这部分的开发主要参考S3c2410 处理器的芯片手册的第416 页到第419 页,具体详见流程图。这部分的控制主要是设置触摸屏的采样模式,处理器提供的模式: 1.正常的转换模式

2.手动的x/y 位置转换模式 3.自动的x/y 位置转换模式

我们这里使用的是第3 种转换模式。需要注意的是在完成一次x/y 坐标采样的过程中需要一次模式转换即在点击触摸屏之前是等待中断模式,当有触摸动作产生触摸屏中断以后,在x/y 的坐标采集驱动中设置成自动的x/y 位置转换模式,在完成采集以后再转换回等待中断。 ADC控制寄存器

22 ADC触摸屏控制寄存器

注意:在自动模式,ADC触摸屏控制寄存器要在开始读之前重新配置ADC开始延迟寄存器

23

ADC转换数据寄存器(ADCDAT1)

4.触摸屏相关电路图

24

六、实验步骤

1、改写该驱动程序,在其基础上实现一些你想要的简单功能。由于驱动程序的复杂性,不容易上手且又容易出问题,所以建议你先只对其中的调试信息做一些改动,在运行该驱动程序时看看其在屏幕上的打印信息。在你对整个过程及相关硬件有较多的一些了解之后再动手做一些功能上的调整。

2、结合 ARM-Linux 的移植实验中的相关内容,把改动的驱动程序编译进内核,并下载内核验证结果。你只要把该驱动在必要地方修改后(注意修改前的代码一定要做备份)保存代码,回到内核目录,make bzImage 编译内核,然后下载编译好的内核。

进入exp\basic\04_ad目录,使用vi编辑main.c: #include #include #include #include #include #include #include #include "s3c2410-adc.h" #define ADC_DEV "/dev/adc/0raw" static int adc_fd = -1; static int init_ADdevice(void) { if((adc_fd=open(ADC_DEV, O_RDWR))

25 /* Create the threads */ pthread_create(&th_com, NULL, comMonitor, 0); printf("\nPre Enter key exit!\n"); while( stop==0 ) { for(i=0; i

//采样0~2 路A/D 值 d=((float)GetADresult(i)*3.3)/1024.0; printf("a%d=%8.4f\t",i,d); } usleep(1); printf("\r"); } /* Wait until producer and consumer finish.*/ pthread_join(th_com, &retval); printf("\n"); return 0; }

七、实验结果与分析

26

27

在PC机终端

[ root @ localhost / ]# cd /arm2410cl/exp/basic/04_ad/

28 [ root @ localhost 04_ad]# make armv4l-unknown-linux-gcc -c -o main.o main.c armv4l-unknown-linux-gcc -o ../bin/ad main.o -lpthread armv4l-unknown-linux-gcc -o ad main.o -lpthread [root@ localhost 04_ad]# ls ad hardware.h main.o Makefile.bak s3c2410-adc.h bin main.c Makefile readme.txt src 把makefile文件中cc=gcc改为cc=arm4vl-unknown-linux-gcc用于机箱上, [ root @ localhost 04_ad]# make clean [ root @ localhost 04_ad]# make 新建终端

[root@ localhost root]# minicom [/mnt/yaffs] mount -t nfs 192.168.0.10:/arm2410cl /host [/mnt/yaffs] cd /host/exp/basic/04_ad/ [/host/exp/basic/04_ad] ./ad Pre Enter key exit! a0= 0.6316 a1= 2.3880 a2= 1.9594

七、实验心得

通过实验掌握了S3C2410芯片上的8通道110位AD转换器的工作原理;熟悉了各种A/D转换器原理和性能指标;掌握Linux下A/D设备驱动程序设计的基本方法;掌握了Makefile的编写和使用;学习A/D接口原理,了解实现A/D系统对于系统软件和硬件要求。

29

推荐第6篇:嵌入式Linux系统开发教程实验报告

嵌入式Linux系统开发教程实验报告

组员:武易 金鹏飞 周长升

实验一 熟悉嵌入式系统开发环境

一实验目的

1.熟悉嵌入式系统硬件实验平台 2.掌握超级终端配置方法。

3.掌握嵌入式系统开发环境配置,ARM-Linux下NFS服务器的配置方法 4.掌握常用的 Linux下shell命令

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

(1)掌握嵌入式系统实验平台上的各类借接口的位置;

(2)配置windows的超级终端,熟悉vivi的命令行,bootload、kernel、root和用户程序的介绍;

(3)配置linux的终端,配置网络服、Ip地址,开发目录共享,挂载等。

四实验结果

实验二嵌入式Linux程序设计

一实验目的

1.掌握嵌入式Linux软件设计方法原理 2.掌握Makefile文件设计方法。

3.熟悉Linux下静态库和共享库的设计

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

(1)编写一个带输入、输出的由5个文件组成的嵌入式软件; (2)写好makefile文件,并上机调试; (3)用变量指明两种编译器。

四实验结果

实验三

kernel与root的设计和烧写

一实验目的

1.掌握Linux内核配置与裁剪的方法 2.理解根文件系统配置。

3.掌握嵌入式系统内核和根文件系统的烧写的过程

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

对嵌入式Linux系统进行裁剪、配置和编译,生成自己需要的操作系统映像文件,并将其烧写到flash中。

四实验结果

实验四搭建嵌入式系统开发环境

一实验目的

1.掌握嵌入式开发环境的配置 2.掌握开发工具链的安装与配置。

3.掌握嵌入式系统内核和根文件系统的烧写的过程

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

(1)安装配置嵌入式开发环境; (2)安装与配置工具链; (3)内核和根文件系统的烧写

四实验结果

实验五嵌入式驱动程序设计

一实验目的

1.学习在LINUX 下进行驱动设计的原理

2.掌握使用模块方式进行驱动开发调试的过程

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

在PC 机上编写简单的虚拟硬件驱动程序并进调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。

四实验结果

实验六

S3C2410处理器硬件电路设计

一实验目的

1.熟悉硬件电路设计

2.掌握简单的S3c2410处理器的电路设计。 3.掌握protel软件的使用

二实验设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境

三实验内容

使用protel 99se 做s3c2410处理器最小系统电路设计,A/D数据采集模块电路设计。

四实验结果

推荐第7篇:嵌入式系统开发技术题库2

嵌入式系统开发技术题库2

一、选择题

1:下面关于嵌入式系统逻辑组成的叙述中,错误的是()。 A:嵌入式系统与通用计算机一样,也由硬件和软件两部分组成

B:硬件的主体是CPU和存储器,它们通过I/O接口和I/O设备与外部世界联系 C:嵌入式系统的CPU主要使用的是数字信号处理器 D:嵌入式系统的软件配置有些很简单,有些比较复杂 2:下面关于数字信号处理器的叙述中错误的是()。 A:它是一种适用于数字信号处理的微处理器 B:它的英文缩写是DPS C:它支持单指令多数据(SIMD)并行处理的指令

D:它能显著提高音频、视频等数字信号的数据处理效率

3:片上系统是嵌入式处理器芯片的一个重要品种,下列叙述中错误的是()。 A:SoC已经成为嵌入式处理器芯片的主流发展趋势 B:它是集成电路加工工艺进入到深亚微米时代的产物

C:片上系统使用单个芯片进行数据的采集、转换、存储和处理,但不支持I/O功能 D:片上系统既能把数字电路也能把模拟电路集成在单个芯片上

4:按照软硬件技术复杂程度进行分类,可以把嵌入式系统分为哪三大类?()。 A:高端系统、中端系统和低端系统 B:军用系统、工业用系统和民用系统 C:硬实时系统、准实时系统和非实时系统 D:片上系统、微控制器和数字信号处理器

5:半导体集成电路是微电子技术的核心。下面有关集成电路的叙述中错误的是()。

A:集成电路有小规模、中规模、大规模、超大规模和极大规模等多种,嵌入式处理器芯片一般属于大规模集成电路

B:集成电路的制造大约需要几百道工序,工艺复杂且技术难度非常高

C:集成电路大多在硅衬底上制作而成,硅衬底是单晶硅锭经切割、研磨和抛光而成的圆形薄片 D:集成电路中的电路及电子元件,需反复交叉使用氧化,光刻,掺杂和互连等工序才能制成 6:一幅1024 x 768的彩色图像,每个像素使用16位表示,采用压缩比为5倍的算法压缩图像数据之后,其数据量大约是多少MB?()。 A:0.3 B:0.5 C:1 D:1.5 7:以太网中计算机间以帧为单位进行通信,下列选项中不属于以太网数据帧内容的是()。 A:IP地址 B:MAC地址 C:有效载荷 D:校验信息

8:下面是IP协议中A类IP地址有关规定的叙述,其中正确的是()。 A:它适用于中型网络

B:它适用的网络最多只能连接65534台主机 C:它不能用于多目的地址发送(组播) D:它的二进制表示中最高位一定是“0” 9:对于嵌入式处理器说法正确的是()。 A:ARM处理器采用CISC和RISC相结合的结构 B:嵌入式处理器都采用哈佛结构

C:ARM处理器具有耗电省、功能强、成本低等特点 D:ARM处理器内部的总线标准是PCI Expre 10:以下关于ARM处理器的叙述中,错误的是()。 A:ARM7~ARM11为经典ARM处理器

B:Cortex-A系列为应用Cortex处理器,主要面向高端应用 C:Cortex-M系列为面向移动计算领域的嵌入式处理器 D:Cortex-R系列应用于实时应用的场合

11:关于ARM的工作状态,以下说法正确的是()。 A:ARM处理器的工作状态包括ARM状态和Thumb状态两种 B:ARM状态支持16位指令宽度也支持32位指令宽度

C:Thumb状态或Thumb-2状态下,代码密度低于ARM状态,占用存储空间变大 D:ARM处理器复位后自动进入ARM状态

12:ARM处理器当前运算操所产生的标志位记录在以下哪个寄存器中?()。 A:PSP B:MSP C:SPSR D:CPSR 13:ARM处理器如果R1=0x98001200,已知在小端模式下,内存0x98001204中存放数据0x35, 0x98001205中存放数据0x36, 0x98001206中存放数据0x37, 0x98001207中存放数据0x38, 在指令LDR R0,[R1,#4]执行后,R0中的值为()。 A:0x35363738 B:0x36353837 C:0x38373635 D:0x37383536 14:ARM处理器将R0中一个字的数据,存入由R1指示的内存区域,则使用的指令是()。 A:STR R0,[R1] B:LDR R0,[R1] C:STRH R0,[R1] D:STRB R0,[R1] 15:在以下ARM处理器指令中可让寄存器R1中指定位“清零”的指令操作码为()。 A:MOV B:AND C:ADD D:ORR 16:ARM处理器如果R1=0x00000080,则指令MOV R0,R1, LSL#2执行后,R0的值为()。 A:0x00000200 B:0x00000320 C:0x00000020 D:0x00000040 17:以下ARM处理器的指令或伪指令错误的是()。 A:MOV R1,R2 B:LDR R1,#0x12345678 C:LDR R1,=0x00000020 D:ADC R1,R2,R3 18:ARM处理器在比较指令之后,如果要依据是否相等转移到指定地址L1,则以下指令错误的是()。 A:BEQ L1 B:BNE L1 C:BXEQ L1 D:BLAL L1 19:下面是有关嵌入式系统的最小系统组成的叙述: Ⅰ.嵌入式最小系统包括嵌入式处理器 Ⅱ.嵌入式最小系统包括电源电路 Ⅲ.嵌入式最小系统包括时钟电路 Ⅳ.嵌入式最小系统包括复位电路 上述叙述中,正确的是()。 A:仅Ⅰ和Ⅲ B:仅Ⅰ和Ⅱ C:仅Ⅱ、Ⅲ和Ⅳ D:全部

20:下面关于JTAG的叙述中,错误的是()。 A:JTAG技术是一种嵌入式测试技术

B:大多数ARM嵌入式处理器芯片不包含JTAG接口 C:多个器件可以通过JTAG接口串联在一起进行测试 D:通过芯片的JTAG接口可以实现在线编程功能

21:典型的嵌入式系统硬件由嵌入式最小硬件系统及相关通道或接口组成,若一个嵌入式系统需要完成模拟量输出功能,该功能是由下面列出的嵌入式系统的哪个通道实现的?()。 A:前向通道 B:后向通道 C:人机交互通道 D:相互互连通道

22:基于ARM内核的嵌入式处理器芯片采用系统总线与外围总线两层结构的方式构建片上系统,下面列出的组件中,不与系统总线相连的组件是()。 A:电源管理与时钟控制器 B:DMA控制接口 C:RTC D:中断控制器

23:下面是基于ARM内核的嵌入式芯片中有关GPIO的叙述,其中错误的是()。 A:GPIO作为输入接口时具有缓冲功能 B:GPIO作为输出接口时具有锁存功能 C:GPIO的引脚一般是多功能复用的

D:GPIO一般只具有0态和1态,不具有高阻状态

24:基于ARM内核的嵌入式芯片中包含互连通信组件,下面不属于互连通信组件的是()。 A:PWM B:SPI C:I2C D:Ethernet 25:下面是关于嵌入式系统使用的存储器的叙述:

Ⅰ.嵌入式系统使用的存储器按照其存取特性可分为RAM和ROM Ⅱ.嵌入式系统使用的存储器按照其所处物理位置可分为片内存储器和片外存储器以及外部存储器 Ⅲ.嵌入式系统使用的存储器按照存储信息的类型可分为程序存储器和数据存储器 Ⅳ.新型的铁电存储器FRAM在嵌入式系统中得到了应用 上述叙述中,正确的是()。 A:仅Ⅰ和Ⅱ B:仅Ⅱ和Ⅲ C:仅Ⅰ和Ⅲ D:全部

26:下面关于I2C的叙述中,错误的是()。 A:I2C即集成电路互连总线

B:I2C具有SDA、SCL和ACK共3条信号线

C:I2C传送数据时,每次传送的字节数目没有限制 D:I2C是多主总线

27:下面是关于UART的叙述,其中错误的是:()。

A:ARM芯片中的UART收发信息时,可以采用FIFO模式,也可以采用普通模式 B:UART传送信息的格式以起始位开始,以停止位结束 C:UART传送信息时,一次传送的数据位的长度只能是8位 D:基于UART可组成RS-232接口

28:下面是关于嵌入式系统中使用的键盘的叙述,其中错误的是()。

A:利用嵌入式芯片的GPIO构成线性键盘时,一个按键需要占用一个GPIO引脚 B:采用矩阵键盘结构时,8个GPIO引脚最多能构成12个按键的键盘 C:采用机械式按键设计键盘时,按键按下时会产生抖动 D:矩阵键盘通常用行扫描法或反转法读取按键的特征值

29:uC/OS-II操作系统启动的过程中,Bootloader执行完毕后,调用应用程序主文件(通常是main.c)里的main()函数。main()函数在执行过程中,除了用户函数和硬件初始化函数之外,需要执行以下三个主要的uC/OS-II函数: I.OSStart() II.OSTaskCreate()III.OSInit() 它们的执行顺序是()。 A:I、II、III B:III、I、II C:II、III、I D:III、II、I 30:uC/OS-II系统中的每个任务都处在以下5种状态之一:休眠态、就绪态、运行态、挂起态(等待某一事件发生)和被中断态,以下哪个说法是错误的()。

A:任务处于休眠态,相当于该任务驻留在外存中,但还没有交给内核管理

B:任务处于就绪态,意味着该任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行

C:任务处于运行态,指任务得到了CPU的控制权正在运行之中

D:任务处于被中断态,是指发生中断时执行相应的中断服务,原来正在运行的任务暂时停止运行,进入了被中断状态

31:uC/OS-II总是运行处于就绪态任务中优先级最高的那个任务,以下哪个说法是错误的()。 A:真正实现任务切换的函数是OSCtxSw() B:任务级的调度是由函数OSSched()完成 C:中断级的调度是由函数OSIntExit()完成 D:实现上下文切换的函数是OSSched() 32:uC/OS-II允许中断嵌套,嵌套层数可达多少层?()。 A:32 B:26 C:128 D:255 33:uC/OS-II能够提供周期性时钟信号(即所谓的时钟节拍),用于实现任务的正确延时和超时确认。节拍率应在什么范围内?()。 A:10 Hz~100Hz B:10Hz~1000Hz C:100 Hz~1000Hz D:100 Hz~10000Hz 34:uC/OS-II的事件控制块有4种类型,需要使用4个不同的函数来创建。如下选项中哪一个用于创建事件控制块?()。 A:OSTaskCreate() B:OSThreadCreate() C:OSQCreate( ) D:OSCtxSw() 35:下面关于Linux内核的有关叙述中,错误的是()。

A:进程调度模块负责控制进程对CPU资源的使用,所采取的调度策略是使得各个进程能够平均访问CPU,但并不保证内核能及时地执行硬件操作

B:Linux内存管理模块的功能之一是屏蔽各种硬件内存结构的差异并向上返回统一的访问接口 C:网络接口模块包含网络接口驱动程序

D:支持进程之间各种通信机制,其通信机制主要包括信号、管道、消息队列、信号量、共享内存和套接字

36:关于U-Boot,以下说法错误的是()。

A:U-Boot全称USB Bootloader,通过USB接口完成启动支持多种处理器和操作系统 B:U-Boot支持PowerPC、x8

6、ARM等多种体系结构的处理器

C:U-Boot支持嵌入式Linux、VxWorks、QNX、RTEMS、Windows CE等操作系统 D:U-Boot采用两个阶段完成操作系统的引导加载

37:关于微内核和宏内核操作系统,如下哪一项的说法是错误的?()。 A:VxWorks是典型的微内核结构嵌入式操作系统

B:iOS追根溯源是一个类UNIX操作系统,它属于宏内核架构 C:Android OS是典型的宏内核操作系统

D:一般认为微内核系统的实时性较好,故Symbian归类为强实时嵌入式操作系统 38:以下关于VxWorks操作系统的叙述中,错误的是()。

A:是目前公认为实时性很强、可靠性很高的一种嵌入式实时操作系统 B:在航空航天、通信和国防领域具有广泛的应用

C:属于大型商用操作系统,具有配套的VMWare集成开发环境,为开发者带 来很大方便

D:支持基于抢占式优先级调度的任务管理

39:嵌入式系统开发时,应该根据应用需求来选择相应的开发工具软件。RVDS是一个较常用的开发工具软件,下面的有关叙述中错误的是()。

A:RVDS中包括工程管理器、编译连接器、调试器和指令集仿真器 B:RVDS只支持ARM内核的微处理器芯片 C:RVDS支持对Flash存储器的编程

D:RVDS编译的代码比ADS1.2编译的代码执行效率高

40:若基于Linux操作系统所开发的ARM应用程序源文件名为test.c,那么要生成该程序代码的调试信息,编译时使用的GCC命令正确的是()。 A:arm-linux-gcc -c -o test.o test.c B:arm-linux-gcc -S -o test.o test.c C:arm-linux-gcc -o test test.c D:arm-linux-gcc -g -o test test.c

二、填空题

1:SoC芯片中的CPU绝大多数是以IP核的方式集成在芯片中的,很少再自行设计开发。目前32位嵌入式处理器主要采用的是由____【1】____国一家专门从事RISC处理器内核设计公司设计的____【2】______内核。

2:我国大陆地区目前广泛使用的汉字编码国家标准有____【3】______和GB18030两种,常用汉字采用___【4】____个字节表示。 3:在Internet中负责选择合适的路由,使发送的数据分组(packet)能够正确无误地按照地址找到目的计算机所使用的是___【5】____协议簇中的___【6】____协议。

4:ARM处理器有7种异常,按向量地址从小到大排列的顺序是:__【7】_____、未定义指令UND、软件中断SWI、指令预取中止PABT、数据访问中止DABT、__【8】_____以及快速中断FIQ。

5:在ARM处理器中,R0~R15是通用寄存器,其中作为堆栈指针SP使用的寄存器是___【9】____,作为程序链接寄存器LR使用的是___【10】____。

6:已知ARM处理器的R1=0x12345678, R2=0xFF00FF00,则执行指令ORR R0,R1,R2后,寄存器R0=___【11】____,R1=___【12】____。

7:已知ARM处理器进位标志C=1, R1=1000, R2=99, 执行指令ADDC R0,R1,R2之后,R0=___【13】____, R1=___【14】____。

8:ARM处理器用一条指令完成有条件的无符号数加法运算,并更新CPSR中的状态,条件是如果相等, 要求指令执行R1+R2,结果送R3中,则这条指令为___【15】____;如果条件是大于,要求指令执行R1-R2,结果放R3中,则该指令为___【16】___。

9:为了连接ARM内核与处理器芯片中的其他各种组件,ARM公司定义了总线规范,该规范用4个大写英文字母表示为___【17】____,即先进的微控制器___【18】____体系结构。

10:ARM处理器芯片内部的___【19】____组件包括ADC和DAC,有的还带有比较器等。这对于既需要处理____【20】___信号又需要处理模拟信号的混合系统的设计提供了较好的解决方案。

11:目前有两种主要的闪存技术,一种是___【21】____Flash,其特点是以字节为单位随机存取,另一种是___【22】____Flash,以页(行)为单位随机存取。(填写用英文大写字母表示的简称) 12:如存储器的工作频率为333MHz,数据线宽度为32位,每个周期传输1次数据,则存储器的带宽=___【23】____MB/s。若存储器总线采用串行总线,以10位为一个数据帧(包含一个字节的存储数据),则总线带宽=总线频率/___【24】____。

13:SPI的信号线MISO称为____【25】___数据线, MOSI称为___【26】____数据线。 14:响应时间(Response Time)是计算机从识别一个外部事件到做出响应的时间。在RTOS运行过程中响应时间是重要指标之一,其具体指标包括:___【27】____延迟时间和___【28】____切换时间。 15:uC/OS-II 是目前常用的嵌入式操作系统之一,其内核只提供____【29】___调度、任务间通信与同步、任务管理、时间管理和___【30】____管理等基本功能,资源消耗非常小。

16:具有操作系统的嵌入式系统加电后最初执行的操作称为引导或者自举(Boot),对应的程序称为引导程序,或者引导加载程序(Bootloader)。引导加载程序主要完成___【31】____、外设存在自检、内存地址映射、初始化外围设备、内存寻址定位、加载并启动___【32】____。 17:由于Bootloader的实现依赖于CPU的体系结构,因此大多数Bootloader都分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,且使用___【33】____语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和___【34】____性。 18:RTLinux基本的设计理念就是“架空”Linux内核,以便让其他实时进程能尽快地被执行。RTLinux开发者并没有针对实时操作系统的特性而重写Linux的内核,而是将Linux的内核代码做一些修改,将Linux的任务以及Linux内核本身作为一个___【35】____优先级的任务,而实时任务作为最___【36】____优先级的任务。

19:嵌入式系统开发时,由于受到目标机资源的限制,需要建立一个___【37】____与目标机组成的调试架构来完成开发工作。若目标机为裸机环境时,通常需要通过___【38】____接口来完成硬件环境测试及初始软件的调试和下载。

20:基于嵌入式WEB的应用系统中,构件设计阶段需要设计支持以太网通信的电路,包括以太网控制电路及以太网____【39】___电路。若选用的以太网控制芯片为AX88796芯片,并用S3C2410芯片的nGCS2引脚连接到AX88796芯片的片选引脚上(即CS引脚上,CS低电平有效),那么,AX88796芯片内部寄存器的读/写地址,其首地址是___【40】____。

三、综合题

2:

1、某机械设备的控制器,其基本功能要求有: 需要有8个数字量输入,用于采集设备的状态信息;且需要8个数字量输出,用于控制设备动作。 具备一个RS-232接口,可以和上位机连接,接收上位机发送的命令及参数。 需要提供一个基准定时信号,定时时间间隔为0.01秒。 需要彩色LCD显示器,用于显示状态信息等。 根据上述功能要求的描述,若采用S3C2410芯片为核心来构建该机械设备控制器的硬件平台,请完善下面的叙述和C语言程序(需要使用的控制寄存器的格式见题后说明)。

(1)若硬件设计时采用GPIO端口E的GPE0~GPE7引脚作为8个数字量输出,那么软件设计时其初始化语句是:rGPECON=(rGPECON|0x00005555)&___【1】____。若软件设计时需要通过GPE5引脚输出“1”来驱动执行机构动作,那么语句是:rGPEDAT= rGPEDAT | ___【2】____。(注:rGPECON是端口E的控制寄存器所对应的变量,rGPEDAT是端口E的数据寄存器所对应的变量)

(2)硬件设计时,选用UART0来完成RS-232接口电路设计。在软件设计时,其初始化程序中波特率设置为9600bps,数据格式设置为:8位数据位、奇校验、1位停止位。请补充完善下面的UART0初始化函数(注:主频参数为PCLK): void UART0_Init() { rGPHCON=(rGPHCON&0xFFFFFF00)|___【3】____; //端口H相应引脚功能初始化 rUFCON0=0x0; //FIFO不使能 rUMCON0=0x0; rULCON0=___【4】____; //设置线路控制寄存器 rUCON0= 0x145; //设置控制寄存器

rUBRDIV0=( (int)(PCLK/___【5】____) 1); //设置波特率,小数采用四舍五入 } (3)按照上面UART0初始化函数所设置的通信速率,每秒钟最多能传输___【6】____个字节的信息。若上位机有大小为4KB的初始参数需要下载到控制器中,那么,约需传输____【7】___秒才能完成下载(1K=1024,精确到小数点后面1位数字)。

(4)系统中所需要的0.01秒基准定时时间选用S3C2410芯片内部的Timer0部件来产生。若系统的主频参数PCLK为264MHz,分频器值选择为16,预分频系数选择为3,那么,Timer0的计数常数为___【8】____。软件设计时,设计了如下的Timer0初始化函数,请补充完善。(注:下面程序中⑨、⑩、⑿用8位十六进制数表示,⑾用4位十六进制数表示) void Timer0Int(void) { //设置定时器配置寄存器0(TCFG0)

rTCFG0=___【9】____; //Timer0预分频系数选择为3,该寄存器中其它无关位均为0 //设置定时器配置寄存器1(TCFG1)

rTCFG1=___【10】___; // Timer0分频器值为16,该寄存器中其它无关位均为0 //设置计数常数

rTCNTB0=___【11】____; //设置控制寄存器TCON rTCON=___【12】____;//更新TCNTB0和TCMPB0,该寄存器中其它无关位均为0 rTCON=0x00000009;//设置Timer0自动装载,并启动 } (5)彩色LCD显示屏的硬件接口电路由S3C2410的专用GPIO端口__【13】_____和端口___【14】____相关引脚配以驱动电路来设计。软件设计时,需要通过设置它们控制寄存器的值分别为___【15】____和____【16】___来确定它们的引脚功能。

(6)系统的软件可以设计为在无操作系统的环境下运行。设计者自行设计系统的启动引导程序,在该程序中完成异常向量设置、堆栈指针设置以及必要的硬件初始化。ARM9体系结构中规定的IRQ异常所对应的异常向量地址为___【17】____。Timer0部件所产生的0.01秒基准时间到时将引起IRQ异常。由于IRQ异常向量地址与下一个异常向量地址之间间隔为___【18】____个字节,因此,通常在IRQ异常向量地址处设计一条转移指令。堆栈指针的设置需按工作模式来进行。设置IRQ模式下的堆栈指针,需在R0“清0”后用指令ORRR1,R0,#0x12|___【19】____和MSR CPSR_CXSF,R1来使CPU核进入IRQ模式,然后再给SP寄存器赋值作为该模式下的堆栈指针。这些初始化工作完成后,即可通过指令___【20】____来引导应用程序的主函数main()。 说明:下面是试题解答时需要用到的寄存器格式及相关说明。 1)端口C的控制寄存器(GPCCON) 引脚GPCCON的位描述

GPC15[31:30]00=输入,01=输出,10=VD7,11=保留 GPC14[29:28]00=输入,01=输出,10= VD6,11=保留 GPC13[27:26]00=输入,01=输出,10= VD5,11=保留 GPC12[25:24]00=输入,01=输出,10= VD4,11=保留 GPC11[23:22]00=输入,01=输出,10= VD3,11=保留 GPC10[21:20]00=输入,01=输出,10= VD2,11=保留 GPC9[19:18]00=输入,01=输出,10= VD1,11=保留 GPC8[17:16]00=输入,01=输出,10= VD0,11=保留 GPC7[15:14]00=输入,01=输出,10=LCDVF2,11=保留 GPC6[13:12]00=输入,01=输出,10= LCDVF1,11=保留 GPC5[11:10]00=输入,01=输出,10=LCDVF0,11=保留 GPC4[9:8]00=输入,01=输出,10=VM,11=IIS数据输出

GPC3[7:6]00=输入,01=输出,10=VFRAME,11= IIS数据输入 GPC2[5:4]00=输入,01=输出,10=VLINE,11=保留 GPC1[3:2]00=输入,01=输出,10=VCLK,11=保留 GPC0[1:0]00=输入,01=输出,10=LEND,11=保留 2)端口D的控制寄存器(GPDCON) 引脚GPDCON的位描述

GPD15[31:30]00=输入,01=输出,10=VD23,11=保留 GPD14[29:28]00=输入,01=输出,10= VD22,11=保留 GPD13[27:26]00=输入,01=输出,10= VD21,11=保留 GPD12[25:24]00=输入,01=输出,10= VD20,11=保留 GPD11[23:22]00=输入,01=输出,10= VD19,11=保留 GPD10[21:20]00=输入,01=输出,10= VD18,11=保留 GPD9[19:18]00=输入,01=输出,10= VD17,11=保留 GPD8[17:16]00=输入,01=输出,10= VD16,11=保留 GPD7[15:14]00=输入,01=输出,10= VD15,11=保留 GPD6[13:12]00=输入,01=输出,10= VD14,11=保留 GPD5[11:10]00=输入,01=输出,10= VD13,11=保留 GPD4[9:8]00=输入,01=输出,10= VD12,11=保留 GPD3[7:6]00=输入,01=输出,10= VD11,11=保留 GPD2[5:4]00=输入,01=输出,10= VD10,11=保留 GPD1[3:2]00=输入,01=输出,10= VD9,11=保留 GPD0[1:0]00=输入,01=输出,10= VD8,11=保留 3)端口E的控制寄存器(GPECON) 引脚GPECON的位描述

GPE15[31:30]00=输入,01=输出,10=IICSDA,11=保留 GPE14[29:28]00=输入,01=输出,10=IICSCL,11=保留 GPE13[27:26]00=输入,01=输出,10=SPICLK0,11=保留 GPE12[25:24]00=输入,01=输出,10=SPIMOSI0,11=保留 GPE11[23:22]00=输入,01=输出,10=SPIMISO0,11=保留 GPE10[21:20]00=输入,01=输出,10=SSDAT3,11=保留 GPE9[19:18]00=输入,01=输出,10=SSDAT2,11=保留 GPE8[17:16]00=输入,01=输出,10=SSDAT1,11=保留 GPE7[15:14]00=输入,01=输出,10=SSDAT0,11=保留 GPE6[13:12]00=输入,01=输出,10=SDCMD,11=保留 GPE5[11:10]00=输入,01=输出,10=SDLCK,11=保留

GPE4[9:8]00=输入,01=输出,10=IISSDO,11=IIS数据输出 GPE3[7:6]00=输入,01=输出,10=IISSI,11= IIS数据输入 GPE2[5:4]00=输入,01=输出,10=CDCLK,11=保留 GPE1[3:2]00=输入,01=输出,10=IISCLK,11=保留 GPE0[1:0]00=输入,01=输出,10=IISLRCK,11=保留 4)端口H的控制寄存器(GPHCON) 引脚GPHCON的位描述

GPH10[21:20]00=输入,01=输出,10=CLKOUT1,11=保留 GPH9[19:18]00=输入,01=输出,10= CLKOUT0,11=保留 GPH8[17:16]00=输入,01=输出,10=UEXTCLK,11=保留 GPH7[15:14]00=输入,01=输出,10=RXD2,11=保留 GPH6[13:12]00=输入,01=输出,10=TXD2,11=保留 GPH5[11:10]00=输入,01=输出,10=RXD1,11=保留

GPH4[9:8]00=输入,01=输出,10=TXD1,11=IIS数据输出 GPH3[7:6]00=输入,01=输出,10=RXD0,11= IIS数据输入 GPH2[5:4]00=输入,01=输出,10=TXD0,11=保留 GPH1[3:2]00=输入,01=输出,10=nRTS0,11=保留 GPH0[1:0]00=输入,01=输出,10=nCTS0,11=保留 5)UART线路控制寄存器(ULCONn n可以是0、

1、2) ULCONn的位[7][6][5:3][2][1]描述保留 值为0确定红外模式 0=正常操作模式

1=正常操作模式确定校验类型 0xx=无校验 100=奇校验

101=偶校验确定停止位数 0=1位停止位

1=2位停止位确定数据位 00=5位01=6位

10=7位11=8位6)TCFG0寄存器 TCFG0的位功能描述初始状态值

[31:24]保留0x00[23:16]在此不用0x00 [15:8]确定Timer2,Timer3,Timer4的预分频系数0x00[7:0]确定 Timer0,Timer1的预分频系数0x007)TCFG1寄存器 TCFG1的位功能描述初始状态值[31:24]保留0x00 [23:20]在此不用0b0000 [19:16]确定Timer4的分频器值0000=2 0001=4 0010=8 0011=16 [15:12]确定Timer3的分频器值0000=2 0001=4 0010=8 0011=16 [11:8]确定Timer2的分频器值0000=2 0001=4 0010=8 0011=16 [7:4]确定Timer1的分频器值0000=2 0001=4 0010=8 0011=16 [3:0]确定Timer0的分频器值0000=2 0001=4 0010=8 0011=16 说明:设置TCFG0、TCFG1可以确定预分频器系数、分频器值,如:通过设置TCFG0为0x0000001F,Timer0的预分频器系数选择为31,设置TCFG1为0x00000001,Timer0的分频器值选择为4。通过下面公式计算定时器的计数常数:

定时器输入时钟频率=PCLK/(预分频系数+1)/分频器值 计数常数=定时时间间隔/(1/定时器输入时钟频率) 预分频系数的范围为0~255,分频器值的取值范围为

2、

4、

8、16。6)TCON寄存器(注:此处不用的位被省略,其值默认为0x0000000)

TCON的位功能描述初始状态值厖0x0000000[3]确定Timer0的自动装载功能 1=自动装载0=一次停止0b0[2]确定Timer0的输出反转位 1=TOUT0反转0=TOUT0不反转0b0[1]确定Timer0的更新

1=更新TCNTB0和TCMPB0 0=不更新0b0[0]确定Timer0的启动/停止 1=启动0=停止0b0

第套2参考答案

一、选择题答案

1-5:CBCAA 6-10:AADCC 21-25:BCDAD 26-30:BCBDA

11-15:DDCAB 16-20:ABDDB 31-35:DDACA 36-40:ADCBD

二、填空题答案

1:英 2:ARM 3:GB2312 4:2 5:TCP/IP 6:IP 7:复位

8:外部中断请求 9:R13 10:R14

三、综合题答案 11:0xFF34FF78 12:0x12345678 13:1100 14:1000 15:ADDCEQ R3,R1,R2 16:SUBHIS R3,R1,R2 17:AMBA 18:总线 19:模拟 20:数字

21:NOR 22:NAND 23:1332 24:10

25:主机输入从机输出26:主机输出从机输入27:中断 28:任务 29:任务 30:存储

31:加电自检 32:操作系统 33:汇编 34:可移植 35:低 36:高 37:宿主机 38:JTAG 39:驱动

40:0x10000000

1:0xFFFF5555 2:0x0020 3:0x000000AA 4:0x23 5:(9600×16) + 0.5 6:872 7:4.7 8:41250 9:0x00000003 10:0x00000003 11:0xA122 12:0x00000002 13:C 14:D 15:0xAAAAAAAA 16:0xAAAAAAAA 17:0x00000018 18:4 19:0xC0 20:BL_main

推荐第8篇:嵌入式工程师

什么是嵌入式工程师?与JAVA等通常的软件工程师有什么区别?

嵌入式软件指嵌入在硬件中的非PC操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造\嵌入式系统软件\嵌入式电子设备研发和制造。嵌入式软件主要分为三类:嵌入式操作系统、嵌入式支撑软件、嵌入式应用软件。从事该方面研发的人员即为嵌入式工程师。与其他的软件工程师相比,嵌入式分为操作系统和硬件两个方面,就业的方向更广、更深,就业机会和入职待遇比普通软件工程师好。

嵌入式工程师月薪有多少?

移动通信行业是嵌入式软件最重要的应用领域之一,手机用嵌入式软件几乎占到了整个嵌入式软件应用规模的60%。到了3G时代,手机、数字电视、信息家电、网络电话、汽车电子、医疗电子等都将是嵌入式软件的重要应用领域。

人力资源专家表示,嵌入式软件开发是未来几年最热门和最受欢迎的职业之一。权威部门统计,我国目前嵌入式软件人才缺口每年为20万人左右,未来随着“三网融合”不断提速,3G网络全面铺开,这一数字还将成倍增长。

根据业内发布的薪资报告,具有10年工作经验的高级嵌入式软件工程师年薪在30万元左右。即使是初级的嵌入式软件开发人员,平均月薪也在5000元左右,中高级的嵌入式软件工程师月薪平均已超过万元。

嵌入式工程师市场行情怎么样?嵌入式工程师的未来发展如何?

日前,记者从国内最大的IT人才服务机构东方标准获悉,由于日本对从事嵌入式系统开发的实用型软件工程师的需求长期居高不下,东方标准国际软件工程师(嵌入式Linux/日语)培训班的学员还没结业,便已被多家日本软件企业抢先高薪“预订”。

据介绍,目前嵌入式系统已普遍应用于无线通讯、工业自动化、汽车电子、医学科技、消费电子等领域,像常见到的手机、PDA、机顶盒、高清电视(HDTV)、智能家电、医疗仪器、航天航空设备等采用的都是典型的嵌入式系统。

近年来,嵌入式系统应用在全球范围内取得了长足的进展。嵌入式产业已经成为带动IT发展的新的增长点。作为世界上最先进的消费电子产品生产大国,日本的嵌入式系统产业的发展在全球处于领先地位。截止到2006年,日本已经有将近11万家公司从事嵌入式领域内的开发业务,嵌入式软件工程师超过19万人,但人才缺口也接近10万人。

造成目前国内外从事嵌入式开发人才稀缺的原因,一方面是由于这一领域入门门槛较高,不仅要懂较底层软件,对软件专业水平要求较高,而且必须懂得硬件的工作原理,所以

非专业IT人员很难切入这一领域;另一方面,这一领域较新,很多软硬件技术出现时间不长或正在出现,掌握这些新技术的人少。据东方标准日本分公司介绍,嵌入式人才稀缺,身价自然就高,经验与薪水也成正比。在日本从事嵌入式开发工作的工程师年薪普遍都在4万美元左右。如果日语能力强,或者如果国内有很丰富的工作经验,或者如果学历比较高,薪金会更高些。

如何才能成为嵌入式工程师?

(1)首先学嵌入不是为了跟风,而是为了逐浪。不是要看大家都去做 这一行才去做。是真的喜欢,这样才能精,才能做到“逐浪”!

(2)成功的历程是漫长、艰辛的,要有一颗艰韧不拔的心:P

(3)文章中说的学习过程和资料大致差不多。但可惜的是在我花了很 长时间入门后才发现这篇文章,要不那短时间会缩减不少。

个人觉得需要注意的一点是:文中提到的步骤不是按步就班的,根据 个人的情况补全即可:P

近来嵌入式挺火,于是大家都往这里挤。我想提醒大家的是,嵌入式马上也会成为如今的软件业。在你进来之前请先考虑清楚。但只要我们真的学精了一样东西,不管它将来变成什么样,哪怕最后只剩下一个人,那个人也一定就是你自己。

很多人以为搞嵌入式就是随便找本书看看,在电脑上编几个程序就完事。非也,其实嵌入式的门槛是比较高的。具体如下:

1、您得有一定数量的Money。

(1)、开发板贵

(2)、培训费更贵

(3)、开发平台是贵得不能再贵。(除非您只是想玩玩而已)

2、需要学习的东西多。(1)、window环境编程;(2)、Linux环境编程;(3)、单片机

3、最后也是最重要的一点,你得有坚韧不拔之志和一颗平常之心。

(1)、自信 坚强 积极 勤快 (注:好的自信是自觉的!)

(2)、成功其实就是成为最好的您自己

嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,东雪终将化去,春风定会吹来。具体步骤如下:

1、《C语言》第二版 谭浩强 ; 《C程序设计语言》第二版 徐宝文译机戒工业出版社你能区分开指针数组和数组指针吗?你知道函数指针吗?

你能区分开定义一个变量时系统给它分配的空间与用malloc()函数给一个变量分配的空间有什么不一样吗?

2、《数据结构》C语言版黄国愉、叶乃青编 清华大学出版社

你能合上书本,用C语言实现书中的单链表、双链表数据结构吗?

3、《实用C++程序设计》第二板 中国电力出版社 Steve_Oualline著

此阶段主要是学习其面向对象的编程思想,加深对C语言和数据结构的理解。

4、学习单片机,最好能找个前辈带一带。

你能用51单片机做出一样实际的东西吗?即使它再简单!

要注意加深对中断的理解。

5、学习ARM单片机。

(1)、细读《ARM微控制器基础与实战》周立工编写 (注:即使你不用书中的开发板)

(2)、细读相关芯片的原版英文文档。如:arm920TE.pdfS3C2410_1.2.pdf

6、学习uCOS!!操作系统。

(1)、细读《嵌入式实时操作系统uC/OS-!!》第二版 召贝贝译

你能把uCOS!!移植到自己的平台上吗?

(2)、能编写在uCOS!!操作系统环境下运行的针对具体硬件的驱动程序

7、熟悉Linux环境,学习Linux环境编程,学习交叉编程

(1)、细读《linux命令大全.pdf》

(2)、细读《GNU Make 使用手册(中译版).pdf》

(3)、学习创建交叉编程环境.

8、学习Linux操作系统。

(1)、《UNIX环境高级编程》

(2)、细读“joyfire 笔记”,可在“[url][/url]”网站的好书下载栏目获取

(3)、细读《linux内核完全注释》

(4)、细读《understanding the linux kernel 2》

(5)、利用源代码阅读利器工具"Source Insight"进行真正的linux内核原码刨析

(6)、最后进行内核移植,并能编写在linux操作系统环境下运行的针对具体硬件的驱动程序

9、学习Linux设备驱动编写。可参考《Linux设备驱动程序》

10、复习C++,学习用QT进行图形界面编程

(1)、细读《QT编程宝典》

(2)、学会通过查看QT电子文档进行QT GUI实地编程

(3)、学习交叉编程.(其实就是把命令qmake变为tmake)

11、当然,你也可学习一下PCB的制作和设计一个自己的CPU(即软壳)

至此,你已学完嵌入式的整流程!但谨记:一个有思想的人才真是一个力量无边的人;有容乃大,能予方强!

推荐第9篇:嵌入式系统开发需要学的东西

嵌入式开发都需要学习什么

[ 643 查看 / 0 回复 ] 返回列表

mzx05128027 2008-10-28 16:45 |只看楼主 1#

字体大小: t T

组别:金牌会员

o 帖子:379

o 精华:0

o 积分:1453

5o 性别: 保密

o 在线时间:40

o 注册时间: 2008-07-25

o 最后登录: 2011-04-22o

访问E空间

这是一个初学者常问的问题,也是初学者问嵌入式该如何入门的根源。我感觉有两个方面,偏硬和偏软.我不认为嵌入式开发软件占绝对比重,相反,软硬件都懂,才是嵌入式高手所应该追求的,也是高手的必由之路。硬件道路:第一步: pcb设计,一般为开发板的电路裁减和扩充,由开发板原理图为基础,画出PCB和封装库,设计自己的电路。第二步: SOPC技术,一般为FPGA,CPLD开发,利用VHDL等硬件描述语言做专用芯片开发,写出自己的逻辑电路,基于ALTER或XILINUX的FPGA做开发。第三步: SOC设计,分前端,后端实现,这是硬件设计的核心技术:芯片设计.能做到这步,已经不属于平凡的技术人员。软件道路:第一步:bootloader的编写,修改, 通过这步熟悉ARM硬件结构,学习ARM汇编语言,阅读ARM的芯片手册,感觉就是像操作51单片机一样操作ARM芯片.这一步最好的两个参考资料就是:芯片手册和bootloader源代码。第二步:系统移植, 驱动开发,我只做过linux方向,所以也推荐学习嵌入式linux系统,作为标准体系,他开源而且可以获得大量学习资料.操作系统是整个计算机科学的核心,熟悉kernel实属不易,kernel, 驱动开发的学习,没有什么捷径,只有多读代码,多写代码,熟悉系统API..understandinglinux kernel, linux device driver 都是不可多得的好书,值得一看。第三步:应用程序的编写,各种GUI的移植,qt,minigui都被大量采用,两种思想都类似,熟悉一种就可以。软件道路中,驱动,系统应该是最深入的部分,不是短时间可以掌握的,需要有勇气和耐心。嵌入式开发,软硬结合,因为硬件条件比PC差很多,所以肯定会遇见不少问题,因此实践的勇气更加重要.有问题就解决问题,无数次的实验,也许是解决问题的必由之路。硬件道路方面,是一个技术提升,整体层次的提升,致力于硬件开发的朋友可以关注下。软件道路方面,作者的三步基本是按照一个嵌入式产品的开发过程来写的,也就是说,一个产品的成型基本是(在产品可行性分析通过后)先编写好bootloader,然后完成操作系统的移植,接着把嵌入式产品需要的驱动程序开发出来,最后进行顶层的应用程

序开发。开发过程中遇到问题可能需要回过头来做某些修改,这就另当别论了。但产品的开发过程是开发过程,初学者学习还是应该由易到难的,所以我们推荐按应用-系统-驱动这样的步骤来学习。应用、系统、驱动可以说是嵌入式开发的三个方向,有的朋友工作中可能只接触其中的某一个方向(比如只做应用开发或者只做驱动开发...),这样可以选择某一方向针对性地学习一下,而有的朋友工作中可能需要负责多个方向的开发,那他需要多个方向全部掌握才行。但人都是往高处走的,即便你工作只针对某一方向,但你处于这个行业中,你对其他方向的知识就需要有基本的了解,这种了解对个人职业生涯的发展也会有很大帮助的。嗯,有这样的牛人,他会负责一个嵌入式产品的整个开发过程,软件硬件方面都一个人包办,而且软硬方面的技术实力都很强。关于专才好还是通才好,这里不做讨论哈,但有能力,多学总是不吃亏的。根据自己的学习能力选择自己的发展方

向:)

推荐第10篇:嵌入式软件工程师

嵌入式软件工程师

目录

1 简介 2 待遇 3 职业要求 4 发展前景 5 职业发展

1 简介 2 待遇 3 职业要求 4 发展前景

5 职业发展

1 简介

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。

嵌入式软件工程师就是编写嵌入式系统的工程师。 2 待遇

IBM、微软、华为、Yahoo、联想、搜狐、亚信、花旗...2010\'应届毕业生就业安置计划火热启动:先实训后上岗,转正年薪50000元。 3 职业要求

应具备哪些能力

最直接的方法,就是去根据各公司,招聘网站的嵌入式软件工程师的应聘要求来分析

我帮你总结下:

1.最重要的是C语言编程,以及C++,这个与你读程,应用,开发项目,做系统移植息息相关;

2.操作系统: LINUX,WINCE等,至少学习过一种,(目前主流的还是Linux)并且还需要对些基础知识有蛮多的了解;

3.对ARM,FPGA,DSP等这些硬件比较了解。(目前主流的是ARM,像三星,华为,小米等大型的生产厂商最底层的硬件用的都是ARM)

这是最常规的条件

当然,最主流的一般就是LIUNX.同时具备一些基本素质,像英语能力,有相关的项目经验,也很重要

推荐: 你可以去按照招聘要求分析,也可以按照培训机构的培训目的,方向,内容来分析得知,像海同科技就是蛮不错的.算得上是业内的领军企业.4 发展前景

嵌入式领域较新,发展非常快,很多软硬件技术出现的时间都不太长(如ARM处理器、嵌入式操作系统、LINUX操作系统),大多数人没有条件接触或进入嵌入式行业,更谈不上能有机会接受专业人士的指导。因此,踏进这个行业的难度比较大,嵌入式人才稀缺,身价自然也水涨船高。

权威部门统计,我国嵌入式人才缺口每年50万人左右。根据前程无忧网发布的调查报告,嵌入式软件开发是未来几年最热门和最受欢迎的职业之一,具有10年工作经验的高级嵌入式工程师年薪在30万元左右。即使是初级的嵌入式软件开发人员,平均月薪也达到了3000—5000元,中高级的嵌入式工程师月薪平均超过10000元。 做软件实际上有高下之分,开发语言从机器语言、汇编到C、C++,再到红透半边天的Java、C#等,该学哪种呢?为什么有些开发者工资低,而有些开发者千金难求?为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要10k的薪水?

还是门槛,比如月薪15k的Linux嵌入式开发职位,门槛就有 Linux系统、Shell编程、Linux开发环境、C语言、ARM硬件平台、数据结构、Linux内核、驱动程序等,粗略数数就有8道关口,他需要非常熟悉整个的计算机体系,能做出实际的产品,而Java的开发者却仅仅是会使用名叫Java的语言工具,始终高高飘在众多层次之上,开发项目非常快,甚至可以不知道OSI模型,很可能自始至终都是软件蓝领。

嵌入式开发本身也有高下之分,至少包含嵌入式应用程序工程师和底层的驱动内核工程师两种。前者同样是使用现成工具进行简单劳动,比如使用J2ME开发小游戏或者进行一些界面开发,而后者是根据芯片具体情况把操作系统(如Linux)移植到上面,同时编写必要的驱动程序,改写相应的内核代码。很显然后者是一个公司真正的技术核心。而技术核心的工资很可能是其他开发者的数倍。

嵌入式开发突出强制和项目,学习不仅仅是学习几项技术,而是构建你的知识体系。比如学习嵌入式开发,就要从基础Linux,C语言,数据结构开始,到ARM,汇编,Linux内核、驱动等,更重要的是更多的项目练习,设计至少5个项目,多达10000行强制核心代码的编写可以让你真正获得知识。为进入外企或者出国做准备。

未来的几年内,随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。美国著名未来学家尼葛洛庞帝99年1月访华时预言,4~5年后嵌入式智能(电脑) 工具将是PC和因特网之后最伟大的发明。我国著名嵌入式系统专家沈绪榜院士98年11月在武汉全国第11次微机学术交流会上发表的《计算机的发展与技术》一文中,对未来10年以嵌入式芯片为基础的计算机工业进行了科学的阐述和展望。1999年世界电子产品产值已超过12000亿美元,2000年达到13000亿美元,预计2005年,销售额将达18000亿美元。一些先进的PDA在显示屏幕上已实现汉字写入、短消息语音发布,日用范围也将日益广阔。对于企业专用解决方案,如物流管理、条码扫描、移动信息采集等,这种小型手持嵌入式系统将发挥巨大的作用。自动控制领域,不仅可以用于ATM机,自动售货机,工业控制等专用设备,和移动通讯设备结合、GPS、娱乐相结合,嵌入式系统同样可以发挥巨大的作用。 5 职业发展

从个人整体发展来说,如果想创业,做自已的产品,嵌入式软件开发可以开发出专利产品。

另一个发展路径是:积累丰富开发经验的嵌入式软件开发工程师可以向嵌入式系统开发工程师发展,从而晋升为产品研发经理或IT项目经理。对测试理论和方法有一定了解的嵌入式软件开发工程师还可以转作嵌入式系统测试工程师,最终也可发展为IT项目经理

第11篇:嵌入式软件开发工程师

嵌入式软件开发工程师

岗位职责岗位职责:

1、开发维护光网络产品嵌入式软件;

2、按照研发流程要求,完成软件的详细设计,代码实现,单元测试,集成测试;

3、对开发的软件质量和进度负责。

福利待遇:

1、五险一金(养老保险、医疗保险、失业险、工伤险、生育险,住房公积金);

2、年终奖及过节费;

3、提供各种培训机会;

4、公司设有员工宿舍、食堂免费三餐及图书馆;

5、定期为员工安排健康体检;

6、组织各种大型集体活动增加团队凝聚力(如:旅游、运动会、年度联欢、体育比赛等)。

岗位要求任职要求:

1、通信、计算机、电子、软件工程等相关专业本科以上学历;

2、熟练掌握RTOS(WINCE、Linux等)之上的嵌入式软件开发;

3、熟悉数据通信原理,熟悉VLAN,STP等相关二层协议;

4、从事过以太网、光通讯产品开发经验者优先,

5、有通信、计算机网络协议开发经验者优先(包括路由器、交换机、IP语音网关等设备的开发经验);

6、够熟悉使用51系列、ARM系列微处理器,熟悉TCPIP、SNMP协议技术者优先;

7、有自组网mesh设备开发经验优先考虑;

8、具有强烈的责任心及团队合作精神,具有较强的沟通及协调能力。

第12篇:嵌入式工程师介绍

嵌入式工程师介绍

职位介绍 嵌入式工程师做嵌入式系统 设计 和 开发,包括硬件系统的建立和相关软件开发、移植、调试等工作。

工作内容

嵌入式分为“操作系统”和“硬件”两个方面,就业的方向更广、更深,就业机会和入职待遇比普通软件工程师好。

开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。

从事嵌入式操作系统和应用软件的开发,嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作。

目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件。

职位要求

具有C/C++语言、汇编语言、操作系统等基础。

熟悉模拟电子技术和数字电子技术 等硬件知识。

了解处理器体系结构。

职业发展路径

从个人整体发展来说,如果想创业,做自已的产品,嵌入式软件开发可以开发出专利产品。

另一个发展路径是:积累丰富开发经验的嵌入式软件开发工程师可以向嵌入式系统开发工程师发展,从而晋升为产品研发经理或IT项目经理。对测试理论和方法有一定了解的嵌入式软件开发工程师还可以转作嵌入式系统测试工程师,最终也可发展为IT项目经理。

前景分析

嵌入式领域较新,目前发展非常快,很多软硬件技术出现的时间都不太长(如ARM处理器、嵌入式操作系统、LINUX操作系统),大多数人没有条件接触或进入嵌入式行业,更谈不上能有机会接受专业人士的指导。

因此,踏进这个行业的难度比较大,嵌入式人才稀缺,身价自然也水涨船高。

权威部门统计,我国嵌入式人才缺口每年50万人左右。根据前程无忧网发布的调查报告,嵌入式软件开发是未来几年最热门和最受欢迎的职业之一,具有10年工作经验的高级嵌入式工程师年薪在30万元左右。即使是初级的嵌入式软件开发人员,平均月薪也达到了3000—5000元,中高级的嵌入式工程师月薪平均超过10000元。 做软件实际上有高下之分,开发语言从机器语言、汇编到C、C++,再到红透半边天的Java、C#等,该学哪种呢?为什么有些开发者工资低,而有些开发者千金难求?为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要10k的薪水?

还是门槛,比如月薪15k的Linux嵌入式开发职位,门槛就有 Linux系统、Shell编程、Linux开发环境、C语言、ARM硬件平台、数据结构、Linux内核、驱动程序等,粗略数数就有8道关口,他需要非常熟悉整个的计算机体系,能做出实际的产品,而Java的开发者却仅仅是会使用名叫Java的语言工具,始终高高飘在众多层次之上,开发项目非常快,甚至可以不知道OSI模型,很可能自始至终都是软件蓝领。

嵌入式开发本身也有高下之分,至少包含嵌入式应用程序工程师和底层的驱动内核工程师两种。前者同样是使用现成工具进行简单劳动,比如使用J2ME开发小游戏或者进行一些界面开发,而后者是根据芯片具体情况把操作系统(如Linux)移植到上面,同时编写必要的驱动程序,改写相应的内核代码。很显然后者是一个公司真正的技术核心。而技术核心的工资很可能是其他开发者的数倍。

嵌入式开发突出强制和项目,学习不仅仅是学习几项技术,而是构建你的知识体系。比如学习嵌入式开发,就要从基础Linux,C语言,数据结构开始,到ARM,汇编,Linux内核、驱动等,更重要的是更多的项目练习,设计至少5个项目,多达10000行强制核心代码的编写可以让你真正获得知识。为进入外企或者出国做准备。

未来的几年内,随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。美国著名未来学家尼葛洛庞帝99年1月访华时预言,4~5年后嵌入式智能(电脑) 工具将是PC和因特网之后最伟大的发明。我国著名嵌入式系统专家沈绪榜院士98年11月在武汉全国第11次微机学术交流会上发表的《计算机的发展与技术》一文中,对未来10年以嵌入式芯片为基础的计算机工业进行了科学的阐述和展望。1999年世界电子产品产值已超过12000亿美元,2000年达到13000亿美元,预计2005年,销售额将达18000亿美元。目前一些先进的PDA在显示屏幕上已实现汉字写入、短消息语音发布,日用范围也将日益广阔。对于企业专用解决方案,如物流管理、条码扫描、移动信息采集等,这种小型手持嵌入式系统将发挥巨大的作用。自动控制领域,不仅可以用于ATM机,自动售货机,工业控制等专用设备,和移动通讯设备结合、GPS、娱乐相结合,嵌入式系统同样可以发挥巨大的作用。

第13篇:嵌入式工程师求职信

尊敬的XXX总经理先生:

我从贵公司的门户网站得知贵公司正要招聘一名有技能的嵌入式工程师,我个人的条件和是实习经历是我有信心来申请这一职位。

我是一名即将毕业的计科系嵌入式专业的本科生,届时我将获得计算机学士学位、嵌入式工程师证…,大学四年,奠定了我扎实的专业理论基础,较好的组织能力,务实的工作作风;深入企业学习,更是进一步增强了实践能力。

大学期间,我除了认真学习专业理论知识外,对法律、投资理财的非专业知识也多有学习,相信会给企业带来别样的收益,我能熟练操作Linus、WindowsXP操作系统和Office、WPS办公自动化软件、利用C语言进行程序编写,并且自学了Fireworks、Flash网页制作软件,以及Photoship图像处理方法,我具备一个嵌入式工程师所必须的技术要求,可以胜任嵌入式工程师的工作。

在校期间我担任校学生会组长、部长等职,多次参与组织校庆、联欢等一系列活动,送到领导、老师、同学的一致好评。在专业课考试中屡次获得单科第一,曾获得院奖学金,并在毕业时获学院2010届优秀毕业生设计。

我很高兴有这样一个机会,我可以可你面谈吗?这是我的简历和名片,您如果要和我面谈,请写信或打电话给我。

祝您感恩节快乐、工作顺利。您

的朋友:x x x

2010年11月25日

第14篇:嵌入式软件开发工程师

嵌入式软件开发工程师:将软硬件完美结合

嵌入式软件开发工程师——职业概述

嵌入式软件开发工程师是利用嵌入式技术设计、开发、维护、管理符合功能、性能要求的软件产品的工作人员。他们为改变人们的生活创造了种种便利条件,他们开发的各种软件正在不同的嵌入式系统中为人们的生活和工作“不辞辛苦”地运行着。

嵌入式软件开发工程师——职业大揭秘

揭秘一工作内容

1.从事数据产品嵌入式(底层)软件开发和设计工作;

2.进行数据产品相关软件子系统的方案设计;

3.进行数据产品相关的技术交流、标准及专利相关工作;

4.进行嵌入式软件系统的需求分析和模块设计;

5.对客户的软件技术进行支持。

揭秘二职业要求

在专业方向和学历水平上,嵌入式软件开发工程师应具有本科及以上学历,计算机、电子、通信及相关专业毕业。而具体的实践经验和工作能力方面,精通C/C++语言,有扎实的编程基础和一定的编程经验;熟悉软件项目的一般开发流程;熟悉ARM或其他微处理器架构;除此之外,良好的沟通和团队协作能力也是必不可少的。

揭秘三职业前景

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统产品正不断渗透进各个行业,作为包含在这些硬件产品中的特殊软件形态,其产业增幅不断加大,而且在整个软件产业中所占的比重日趋提高。

据预测,在未来的几年内,嵌入式系统的发展将会为几乎所有的电子设备注入新的活力,加上Internet的迅速发展和廉价微处理器的出现,嵌入式系统将在我们的日常生活里形成一个更大的应用领域。

家电的智能化也为嵌入式开辟了广阔的空间,像我们平常常见的手机、PDA、电子字典、可视电话、VCD/DVD/MP3Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(SetTopBox)、高清电视(HDTV)、游戏机、智能玩具、交换机、

路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等都可以应用在嵌入式系统中。

揭秘四薪酬水平

手机和3G成为业内焦点后,在就业市场上嵌入式软件工程师开始紧俏,其工资水平也相应攀高,比其他IT业界同行大约高出50%。初入门的开发人员平均月薪一般都在5000元左右,有3年以上经验者年薪大都在10万元以上,有10年工作经验的高级嵌入式工程师年薪可达30万元左右。在一些大城市,比如北京,一个成熟的嵌入式软件工程师平均月薪在8000~10000元之间。嵌入式软件开发工程师职业发展“路在何方”

嵌入式学院负责人、北京华清远见嵌入式培训中心总经理季久峰认为,从事嵌入式工作有两大优势:一是工作强度相对较低。做嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事,所开发的产品通常是通用的,不会因客户的不同而修改,一个产品型号开发完了,往往还有较长一段空闲时间进行充电和休整;二是职业发展相对顺利,从事嵌入式软件的人,所涉及的专业技术范围终究有限,经验的培养,指日可待。

以上都是针对求职工作而言的,若对于个人整体发展来说,如果想创业,做自己的产品,那么嵌入式就是一个不错的主意,嵌入式软件不会像应用软件那样容易被盗版,而如果开发出专利产品,年薪将不止10万元。

积累丰富开发经验的嵌入式软件开发工程师可以向嵌入式系统开发工程师发展,进而晋升为产品研发经理或IT项目经理。对测试理论和方法有一定了解的嵌入式软件开发工程师还可以转做嵌入式系统测试工程师,最终也可发展为IT项目经理。

嵌入式软件开发工程师的发展路径电子技术研发工程师:电子新技术的开拓者

第15篇:嵌入式linux工程师

第一阶段——嵌入式Linux软件工程师 (3周) 职场定位:Linux Development Engineer for Software Engineering

本期目标:嵌入式系统是现在最热门的计算机应用领域之一,嵌入式C语言在其中起着至关重要的作用。一个精通C语言程序设计的程序员,可以很容易地进入Linux、WinCE、Vxworks等嵌入式操作系统下的软件开发工作。本阶段学习目标是掌握C语言基本知识、C编程语法基础和Linux操作系统的使用,并熟练掌握嵌入式Linux的开发环境,为将来的编程工作打基础。

1、Linux操作系统使用——要求精通

本课程从零起点,讲解Linux操作系统的概念和安装方法,详细介绍Linux下的基本命令、管理配置和编辑器,包括VI编辑器,GCC编译器,GDB调试器和 Make 项目管理工具等知识。

2、嵌入式Linux C语言高级编程——要求精通

C语言是嵌入式领域最重要也是最主要的编程语言,本课程将在学员C语言基础知识之上,通过大量编程实例重点讲解C语言的高级编程知识,包括函数与程序结构、指针、数组、常用算法、库函数的使用等知识,另外,本节还重点讲解数据结构的基础内容,包括链表、队列、栈、树、哈希表、图等内容。

3 C++面向对象编程——要求掌握

C++是Linux应用开发主要语言之一,本节重点让学员掌握面向对象编程的基本思想,以及C++语言的基础内容,为后面的课程做好铺垫。

4、嵌入式Linux项目开发流程——要求掌握

本课程主要让学员从宏观了解嵌入式Linux开发环境搭建和项目开发流程,让学员建立起整体架构的概念,包括嵌入式产品需求分析和选型、硬件平台、移植、启动代码、驱动开发、系统部署等整个过程。

第二阶段——嵌入式Linux系统工程师(8周) 职场定位:Linux Development Engineer for Embedded Systems

证书:微软嵌入式工程师认证证书,

红帽公司《Linux应用开发工程师证书》

本期目标:参加本期培训的学员应该掌握嵌入式C语言编程技巧。嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分,也是企业人才需求最广

的一部分。本期学习的主要目标是精通嵌入式Linux下的程序设计,熟悉嵌入式Linux开发流程,强化学员对Linux应用开发的理解和编码调试的能力,同时掌握bootloader和kernel的移植技能,了解ARM体系结构和编程,具备ARM硬件接口的基础知识,并了解Linux内核开发相关内容,初步掌握Linux下的驱动程序开发方法。另外,本期课程还会让学员了解另外一个比较重要的嵌入式操作系统:Windows CE,使学员在掌握嵌入式Linux的同时,也了解Windows CE的开发方法,拓展学员的知识面,丰富学员的知识结构。最后通过几个典型的企业全真案例,进一步巩固本期课程内容,使学员真正学以致用。

5、嵌入式 Linux高级应用编程 ——要求精通

嵌入式Linux应用开发是嵌入式Linux中最重要的一部分,也是就业面最广的方向。本课程的主要目标是精通嵌入式Linux下的程序设计,精通嵌入式Linux开发环境,强化学员对Linux应用开发的理解和编码调试的能力,包括系统编程、文件I/O、多进程和多线程、网络编程、GUI图形界面编程、数据库。

6、ARM处理器编程——要求掌握

ARM是嵌入式领域最主要的CPU处理器,了解ARM处理器的基础知识将为后面课程的底层开发打好坚实基础,本课程内容包括ARM处理器体系结构、编程环境、指令集、寻址方式、调试、汇编和混合编程等方面的内容,为后面移植课程的学习打好基础。学完此课程学员可获得ARM公司全球统一授权培训证书。

7、ARM硬件接口开发——要求了解

本课程重点介绍ARM的常用接口开发及硬件电路设计基础(包括IO、串口、看门狗、实时时钟、SPI、IIC、扫描键盘、FLASH操作等),为以后的设备驱动的学习打好基础。

8、嵌入式Linux系统开发——要求精通

系统开发是嵌入式Linux底层开发必备的基本技能,本课程将教会学员在硬件电路板做好的情况下,如何从零开始搭建嵌入式Linux运行环境,内容包括内核裁减、内核移植、交叉编译、内核调试、启动程序Bootloader编写、根文件系统制作和集成部署Linux系统等整个流程。

9、嵌入式Linux内核开发——要求了解

本课程是驱动开发的基础课程,深入内核细节,了解Linux相关运行机理,为后面的驱动开发打好理论基础,内容包括内核源码结构、内存管理、进程管理、中断管理、系统调用、内核同步、时钟和定时器管理、信号、调度、进程间通信、文件系统和I/O设备管理等方面的内容。

10、嵌入式Linux驱动开发基础——要求掌握

介绍嵌入式Linux驱动开发相关概念及开发流程,了解驱动涉及到的关键技术点,并重点学习字符设备驱动开发,包括串口、I/O、看门狗、实时时钟、SPI、IIC、扫描键盘、A/D转换、定时器等接口的驱动开发,为第三期课程深入学习驱动高级开发打好基础。

11、WinCE操作系统开发基础——要求了解

Windows CE是目前另外一个最主流的嵌入式操作系统,嵌入式学院利用自身在Windows CE系统方面的教学优势,使学员了解Windows CE应用开发和系统开发的特点,并对比Linux操作系统,让学员了解目前主流嵌入式OS的异同点,增进对嵌入式OS开发的理解,拓展学员知识面,增加就业渠道。学完此课程学员可获得Microsoft公司全球统一授权培训证书。

12、综合案例的实战训练——要求精通

在第二阶段课程中,为了帮助学员充分有效地掌握核心知识点在企业中的具体应用,并开始逐步按照企业需求、流程和规范进行实战训练,在嵌入式Linux应用开发、系统内核开发的课程讲授过程中全部采用项目驱动的方式,将来自合作企业的全真案例贯穿于课程中,实现的功能包括:基于本机多进程的聊天工具、基于QT的即时通讯系统、基于ARM的温控系统、汽车防盗系统及基于QT的多媒体播放器等。通过这种方式带领学员分析企业岗位的真实技术需求,进行案例演练,从而快速掌握相关的技能和开发技巧。

第三阶段——嵌入式Linux驱动工程师(5周)

职场定位:Embedded Linux Driver Development Engineer

证书:嵌入式学院《嵌入式Linux工程师职业资格证书》,

ARM公司全球统一认证证书,

Atmel公司全球统一《Atmel嵌入式工程师认证证书》,

工业和信息化部《国家信息技术应用技能嵌入式Linux工程师认证证书》本期目标:参加本期培训的学员应该掌握嵌入式Linux应用开发和系统开发能力。本期学习的主要目标是掌握嵌入式产品开发从需求分析到详细设计整个过程的开发内容,深入掌握Linux驱动程序开发技巧,能够熟练的移植或编写设备驱动。同时,本期课程还重点讲解嵌入式Linux在3G领域的典型应用--3G手机Android操作系统,全面了解Android系统的开发过程和行业前景,在专业讲师的带领下,实战体验Android应用程序的开发及系统移植。最后,本期将重点花一个月时间,让学员从零开始完整完成一个真实项目的设计,使学员在巩固所学内容的同时,迅速积累项目设计经验,达到并超过企业用人需求,另外,通过实

际项目案例,可以发现学员知识薄弱环节进行重点加强。目前嵌入式学院提供的真实项目包括:远程视频监控系统、商用POS机、汽车导航GPS、个人娱乐系统PMP,每期学员可完整完成其中一个项目。

13、嵌入式Linux驱动高级开发——要求精通驱动开发是嵌入式Linux开发难度最高的内容,也是目前嵌入式行业最紧缺的人才之一。有了前面课程知识的铺垫,本课程将重点讲解嵌入式Linux下常用接口驱动的编写方法,内容包括:

1、flash驱动:掌握在linux环境下驱动常见flash存储器(nor flash、nand flash);

2、块设备驱动:掌握块设备驱动的原理、学会ramdisk的编写;

3、网卡驱动:掌握网卡设备的编写原理、能够熟练移植各种网卡驱动。在对网卡硬件寄存器熟悉的基础上,有能力为其编写出完善的网卡驱动;

4、液晶驱动:掌握frambuffer驱动的原理。有能力在有控制器的嵌入式平台上参考液晶手册实现各种常见液晶驱动;

5、sd卡驱动:掌握sdio接口操作,熟悉sd卡驱动驱动的原理;

6、usb设备驱动:了解usb主机设备驱动的结构及编程方式。

14、嵌入式Linux在3G领域的典型应用--3G手机Android操作系统——要求了解

介绍嵌入式Linux在3G领域的典型应用Android系统,了解Android系统如何由嵌入式Linux衍生出来的,以及Android系统和嵌入式Linux系统差异化,了解Android系统的体系结构、开发特点以及关键技术点,并重点学习ARM对Android系统的支持现状,掌握ARM平台上的Android相关开发工具和解决方案,重点讲解Android系统在ARM平台上的移植过程,介绍Android系统底层驱动开发和嵌入式Linux驱动开发的差异化,最后介绍ARM+Andriod平台组合的行业应用前景,使学员全面了解Android系统的开发过程及发展前景。

15、Android应用程序开发——要求了解 主要针对目前嵌入式设备上另外一个主流的应用程序开发平台Android,包括Android体系结构和原理,Android应用程序开发工具的使用,在成功移植Android的平台上开发和部署应用程序,进而验证嵌入式Linux系统移植后的稳定性等。以帮助学员进一步拓展和补充嵌入式应用开发的相关内容。

16、嵌入式Linux项目实践——要求掌握 本课程将通过一个真实完整的项目案例,让学员了解真实项目的开发流程,让学员知道如何将所学知识应用到项目开发中。本课程将模拟真实项目的管理过程,培养学员项目团队协同开发能力,项目文档编写能力和新知识的学习能力,为下一步就业做好知识上和心理上的充分准备。目前学员在嵌入式学院可完成的真实项目包括:远程视频监控系统、商用POS机、汽车导航GPS、个人娱乐系统PMP、3G智能机器人,学员可在嵌入式学院学习期间独立完成其中一个项目。

第16篇:嵌入式工程师step by step

嵌入式工程师step by step[转]

推荐近来嵌入式挺火,于是大家都往这里挤。我想提醒大家的是,嵌入式马上也会成为如今的软件业。在

你进来之前请先考虑清楚。但只要我们真的学精了一样东西,不管它将来变成什么样,哪怕最后只剩下一

个人,那个人也一定就是你自己。很多人以为搞嵌入式就是随便找本书看看,在电脑上编几个程序就完事。

非也,其实嵌入式的门槛是比较高的。具体如下:

1、您得有一定数量的Money。

(1)、开发板贵(2)、培训费更贵 (3)、开发平台是贵得不能再贵。(除非您只是想玩玩而已)

2、需要学习的东西多。(1)、window环境编程;(2)、Linux环境编程;(3)、单片机

3、最后也是最重要的一点,你得有坚韧不拔之志和一颗平常之心。

(1)、自信 坚强 积极 勤快 (注:好的自信是自觉的!)(2)、成功其实就是成为最好的您自己嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,东雪终将化去,

春风定会吹来。具体步骤如下:

1、《C语言》第二版 谭浩强 ; 《C程序设计语言》第二版 徐宝文译机

戒工业出版社

你能区分开指针数组和数组指针吗?你知道函数指针吗?你能区分开定义一个变量时系统给它分配的

空间与用malloc()函数给一个变量分配的空间有什么不一样吗?

2、《数据结构》C语言版黄国愉、叶乃青编 清华大学出版社

你能合上书本,用C语言实现书中的单链表、双链表数据结构吗?

3、《实用C++程序设计》第二板 中国电力出版社 Steve_Oualline著

此阶段主要是学习其面向对象的编程思想,加深对C语言和数据结构的理解。

4、学习单片机,最好能找个前辈带一带。

你能用51单片机做出一样实际的东西吗?即使它再简单!要注意加深对中断的理解。

5、学习ARM单片机。

(1)、细读《ARM微控制器基础与实战》周立工编写 (注:即使你不用书中的开发板)

(2)、细读相关芯片的原版英文文档。如:arm920TE.pdfS3C2410_1.2.pdf

6、学习uCOS!!操作系统。

(1)、细读《嵌入式实时操作系统uC/OS-!!》第二版 召贝贝译

你能把uCOS!!移植到自己的平台上吗?

(2)、能编写在uCOS!!操作系统环境下运行的针对具体硬件的驱动程序

7、熟悉Linux环境,学习Linux环境编程,学习交叉编程

(1)、细读《linux命令大全.pdf》(2)、细读《GNU Make 使用手册(中译版).pdf》

(3)、学习创建交叉编程环境.

8、学习Linux操作系统。

(1)、《UNIX环境高级编程》(2)、细读“joyfire 笔记”,可在“”网站的好书下载

栏目获取(3)、细读《linux内核完全注释》(4)、细读《understanding the linux kernel 2》

(5)、利用源代码阅读利器工具"Source Insight"进行真正的linux内核原码刨析

(6)、最后进行内核移植,并能编写在linux操作系统环境下运行的针对具体硬件的驱动程序

9、学习Linux设备驱动编写。可参考《Linux设备驱动程序》

10、复习C++,学习用QT进行图形界面编程

(1)、细读《QT编程宝典》

(2)、学会通过查看QT电子文档进行QT GUI实地编程

(3)、学习交叉编程.(其实就是把命令qmake变为tmake)

11、当然,你也可学习一下PCB的制作和设计一个自己的CPU(即软壳)

至此,你已学完嵌入式的整流程!但谨记:一个有思想的人才真是一个力量无边的人;有容乃大,能

予方强

第17篇:嵌入式工程师简历

电话:

QQ:

Email:

地址:

基本信息

姓名:出生日期:

性别:毕业院校:

专业:

求职意向

目标职位:嵌入式工程师

期望薪资:3500

期望地区:广州

到岗时间:2012年6月

实践经历:

2011年5月至8月,参加广州**电子科技有限公司ARM+Linux课程培训。

职业技能:

1 精通Linux基本命令,VIM,Linux各种服务配置,Shell编程。

2 精通Linux C编程,如字符串,指针,结构体,位运算,链表,文件,静态库,动态库等。 3 精通Linux高级编程,如文件IO,多进程,多线程,信号,进程间通信,网络编程等。

4 精通Linux C++编程,如类与对象,构造函数与析构函数,继承与派生类,运算符重载,输入/输入类库等。

第18篇:嵌入式工程师要求

岗位职责:

1.负责公司新产品相关的嵌入式软件开发和公司既有产品的设计改进;

2.负责提交开发过程的技术文件,包括研发计划、软件流程图、软件协议、源代码等;

3.负责解决产品生产和工程应用的技术问题。

岗位要求:

1.电子、通信或计算机类相关专业,本科及以上学历,两年及以上嵌入式软件开发经验;

2.熟练掌握C/C++语言开发;

3.有linux多线程编程、网络编程、QT编程及驱动程序开发相关经验;

4.熟悉MCS-

51、PIC、AVR、ARM7/M3其中至少一种软件开发

5.有一定的硬件基础,要求至少能看懂原理图,熟悉常用接口,如:I2C、SPI、RS232/RS485;

6.有硬件设计经验者优先

7.有良好的软件编程习惯,能撰写相关的技术文档;

8.能够熟练阅读理解英文技术资料,有较强的学习能力;

9.责任心强,工作细致,有质量意识,良好的沟通能

第19篇:嵌入式开发工程师

任职要求:

1、大学本科及以上学历,2年以上工作经验,计算机电子通讯类专业毕业;

2、能够熟练使用POWER PCB或PROTEL或ORCAD等电路设计软件进行PCB设计;

3、熟悉电子元器件,能独立设计数字及模拟电路,拥有单片机开发工作经验,懂得RF433\\无线及红外遥控等相关知识;

4、熟练使用C语言,有嵌入式开发工作开发及智能家居防盗报警产品经验者优先。

岗位职责:

1、新产品项目设计开发工作;

2、为相关部门及项目提供技术支持;

3、产品售后返修分析,品质不断提升性能改进;

4、组织对新研发产品的制样、验证、试产、量产等工作的确认与审核。

第20篇:嵌入式Linux底层驱动软件工程师岗位职责

1.负责按照总体设计完成模块详细设计说明书。2.完成模块代码编写、内部测试工作。3.协助硬件设计人员及应用软件设计人员进行系统开发与调试。4.根据技术支持需求进行软件代码维护。5.编写相关技术文档,并对有关人员进行培训。

嵌入式系统开发工程师岗位职责
《嵌入式系统开发工程师岗位职责.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档