嵌入式软件工程师知识要点.doc_第1页
嵌入式软件工程师知识要点.doc_第2页
嵌入式软件工程师知识要点.doc_第3页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式软件工程师知识要点数据结构(C语言)部分常考的知识点:1、局部变量能、全局变量和静态变量2、堆和栈 3、Const、volatile、define、typedef的用途4、链表(比如链表的插入、删除和排序)5、排序(考查冒泡法的较多)6、可重入函数 、malloc函数7、指针(常考函数指针,函数指针,数组指针,指针数组和其他的应用),结构体和共用体8、include和include“filename.h”的区别。 操作系统部分常考的知识点:1、中断和异常2、进程和线程3、进程的同步机制,进程通信和进程的死锁4、优先级反转和优先级继承问题5、makefile文件一些嵌入式开发的网址:国外站点Linux设备网站,由Rick Lehrbaum创建和维护,是一个嵌入式Linux入门网站,其中包含嵌入式Linux行业的每日新闻、完整系列的快速参考指南、由重要开发者撰写的大量文章,还包括一个交互论坛。/下载嵌入式Linux交叉编译工具链的好地方SnapGear Embedded Linux Distribution Home Page/snapgear/index.html/pub/uClinux/.lf-tools/gcc-3/嵌入式Linux联盟(ELC),一个非盈利性的厂商中立的同业工会,其目标是在整个嵌入式、应用和设备市场中发展和推广LBeyond Logic公司主页,提供了许多嵌入式Linux系统开发的资料。嵌入式Linux期刊(ELJ,Embedded Linux Journal),主要关注Linux和其他开源软件在嵌入式系统中的应用。 其中有很多业界领导者为ELJ撰写文章。有几本写嵌入式Linux系统的书/ELSweb/booklinks.html有关PowerPC体系的嵌入式www.denx.de/e/index1.phpIXP4XX Open Source Developers Guide/uClinux/ARM项目http:/adam.kaist.ac.kr/hschoe/notice.html个人主页一个业余爱好者代礼周的个人主页,都是实践出来的/index.htmD_J嵌入式个人主页,有很多资料!/wangzhuo/index.htmlrenbagshoes的个人主页,有些资料可能你会用的到!嵌入式Linux操作系统小型化的嵌入式Linux版本uClinux 在没有 MMU 的系统上运行的 Linux。目前支持 Motorola 68K、MCF5206 和MCF5207 ColdFire 微处理器。/index.htmlEtlinux 设计用于在小型工业计算机,尤其是 PC/104 模块上运行的 Linux 的完全分发版sa.it/etlinux/index.htmlTiny Linux 可以运行在 386 上的 Linux 分发版。/en/ThinLinux 面向专用的照相机服务器、X-10 控制器、MP3 播放器和其它类似的嵌入式应用的最小化的 Linux 分发版。LRP(Linux Route Project)Peeweelinux一个小的嵌入式Linux发行版/projects/peeweelinux具有实时扩展功能的嵌入式Linux版本RT-Linux主页RTAIEL/IXSRT-Linux嵌入式GUIMicrowindows由Century Software的CEO Greg Haerr主持开发的一个公开源码(LGPL)的项目。Microwindows致力于为一些小型设备和平台提供现代图形窗口环境。Microwindows支持许多硬件平台,移植性很强。Microwindows的主要目的之一便是运行在嵌入式Linux上,并且提供了基于Win32/X的两套API接口。MiniGUI由原清华大学教师魏永明先生开发,是中国人做的得较好的自由软件之一。MiniGUI 是一种面向嵌入式系统或者实时系统的公开源码(LGPL)的图形用户界面支持系统。它主要运行于Linux控制台,实际可以运行在任何一种具有POSIX线程支持的POSIX兼容系统上。飞漫软件的MiniGUI项目/company/cindex.shtmlQt/Embedded是著名的QT库开发商Trolltech正在进行的面向嵌入式系统的QT版本。Qt/Embedded对于各种硬件接口到GUI工具包提供了完整的图形栈。Qt/Embedded的API同Qt/X11和Qt/Windows的相同,但它并不是基于X11库的。Qt/Embedded是公开源码(LGPL)项目。OpenGUI基于一个用汇编实现的x86图形内核,提供了一个快速的、32位的、高层的C/C+图形接口。OpenGUI也是一个公开源码(LGPL)项目。OpenGUI提供了二维绘图原语,消息驱动的API和BMP文件格式支持。http:/www.tutok.sk/fastglPicoGUI是一个可以工作在包括手持式设备等各种硬件上的小型的、可移植的、基于客户/服务器结构的GUI。同X Window系统一样,它具有客户服务器结构的灵活性,但又不同于X Window系统,它将字体、BMP文件、控件以及一些应用程序所需要的其它的一些资源直接集成在服务器。虽然减少了系统的灵活性,但在速度上有了很大的提高,并且减小了程序大小。Tiny-X是一个为嵌入式系统而开发的紧缩型的X Window服务器。它由SuSE赞助,由XFree86的核心成员Keith Packard开发。Tiny-X的目标是可以在小内存或几乎无内存的情况下良好运行。http:/www.pps.jussieu.fr/jch/software/kdrive.html 凹凸笔试题目(嵌入式软件开发)20070207Embedded Software Design Engineer1 读程序段,回答问题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?#include stdio.hint a=0;int b;static char c;int main(int argc,char *argv)char d=4;static short e;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),最好用图形方式描述。2 中断是嵌入式系统中重要的组成部分,这导致了许多编译开发商提供一种扩展:让标准C支持中断,产生了一个新的关键字_interrupt。下面的代码就使用了_interrupt关键字去定义了一个中断服务子程序(ISR),请评论以下这段代码。_interrupt double compute_area(double radius)double area = PI * radius *radius;printf(nArea = %f, area);return area;3 C/C+基础知识问题a) 关键字volatile在编译时有什么含义?并给出三个不同使用场景的例子(可以伪代码或者文字描述)。b) C语言中static关键字的具体作用有哪些 ?c) 请问下面三种变量声明有何区别?请给出具体含义int const *p;p是一个指向常整型变量的指针。int* const p;p是一个指向整型变量的常数执政。int const* const p;4 嵌入式系统相关问题a) 对于整形变量A=0x12345678,请画出在little endian及big endian的方式下在内存中是如何存储的。b) 在ARM系统中,函数调用的时候,参数是通过哪种方式传递的?c) 中断(interrupt,如键盘中断)与异常(exception,如除零异常)有何区别?5 设周期性任务P1,P2,P3的周期为T1,T2,T3分别为100,150,400;执行时间分别为20,40,100。请设计一种调度算法进行任务调度,满足任务执行周期及任务周期。6 优先级反转问题在嵌入式系统中是一中严重的问题,必须给与足够重视。a) 首先请解释优先级反转问题b) 很多RTOS提供优先级继承策略(Priority inheritance)和优先级天花板策略(Priority ceilings)用来解决优先级反转问题,请讨论这两种策略。 参考答案:1 5存在风险,因为c=c+%5;这个表达式对c有两次修改,行为未定义,c的值不确定int a=0; / data sectionint b; / data sectionstatic char c; / BSSint 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=2,b=100,c=2,d=6,e=5 2 a)ISR不能返回一个值;b)ISR不能传递参数;c)浮点一般都是不可重入的;d)printf函数有重入和性能上的问题。 3 a) 用volatile关键字定义变量,相当于告诉编译器,这个变量的值会随时发生变化,每次使用时都需要去内存里重新读取它的值,并不要随意针对它作优化。建议使用volatile变量的场所:(1) 并行设备的硬件寄存器(2) 一个中断服务子程序中会访问到的非自动变量(全局变量)(3) 多线程应用中被几个任务共享的变量b) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝c) 一个指向常整型数的指针 一个指向整型数的常指针 一个指向常整型数的常指针4 a) 0x12345678little endian big endian 刚好反过来高地址- 0x12 低地址- 0x12 0x34 0x34 0x56 0x56低地址- 0x78 高地址- 0x78b)参数4的通过压栈方式传递c) 异常:在产生时必须考虑与处理器的时钟同步,实践上,异常也称为同步中断。在处理器执行到由于编程失误而导致的错误指令时,或者在执行期间出现特殊情况(如缺页),必须靠内核处理的时候,处理器就会产生一个异常。所谓中断应该是指外部硬件产生的一个电信号,从cpu的中断引脚进入,打断cpu当前的运行;所谓异常,是指软件运行中发生了一些必须作出处理的事件,cpu自动产生一个陷入来打断当前运行,转入异常处理流程。异步与同步的区别5 6 高优先级

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论