嵌入式软件笔试题.docx

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
,. ,. 凹凸笔试题目(嵌入式软件开发) 2007-02-07 Embedded Software Design Engineer 读程序段,回答问题 int main(int argc,char *argv[]) { int c=9,d=0; c=c++%5; d=c; printf(d=%d\n,d); return 0; } 写出程序输出 在一个可移植的系统中这种表达式是否存在风险? why? #include stdio.h int 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,c,d) 在内存中的布局(eg. stack,heap,data section,bss section),最好用图形方式描述。 中断是嵌入式系统中重要的组成部分,这导致了许多编译开发商提供一种扩展:让标准 C 支持中断,产生了一个新的关键字 interrupt。下面的代码就使用了 interrupt 关键字去定义了一个中断服务子程序(ISR),请评论以下这段代码。 interrupt double compute_area(double radius) { double area = PI * radius *radius; printf(nArea = %f, area); return area; } C/C++基础知识问题 关键字 volatile 在编译时有什么含义?并给出三个不同使用场景的例子(可以伪代码或者文字描述)。 C 语言中 static 关键字的具体作用有哪些 ? 请问下面三种变量声明有何区别?请给出具体含义int const *p; int* const p; int const* const p; 嵌入式系统相关问题 对于整形变量 A=0请画出在 little endian 及 big endian 的方式下在内存中是如何存储的。 在 ARM 系统中,函数调用的时候,参数是通过哪种方式传递的? 中断(interrupt,如键盘中断)与异常(exception,如除零异常)有何区别? 5 设周期性任务 P1,P2,P3的周期为 T1,T2,T3分别为100,150,400;执行时间分别为20,40, 100。请设计一种调度算法进行任务调度,满足任务执行周期及任务周期。 6 优先级反转问题在嵌入式系统中是一中严重的问题,必须给与足够重视。 首先请解释优先级反转问题 很多 RTOS 提供优先级继承策略(Priority inheritance)和优先级天花板策略(Priority ceilings) 用来解决优先级反转问题,请讨论这两种策略。 参考答案: 1 5 存在风险,因为 c=c++%5;这个表达式对 c 有两次修改,行为未定义,c 的值不确定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=2,b=100,c=2,d=6,e=5 a)ISR 不能返回一个值; b)ISR 不能传递参数; 浮点一般都是不可重入的; printf 函数有重入和性能上的问题。 a) 用 volatile 关键字定义变量,相当于告诉编译器,这个变量的值会随时发生变化,每次使用时都需要去内存里 重新读取它的值,并不要随意针对它作优化。建议使用 volatile 变量的场所: 并行设备的硬件寄存器 一个中断服务子程序中会访问到的非自动变量(全局变量) 多线程应用中被几个任务共享的变量 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数 访问。它是一个本地的全局变量。 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数 被限制在声明它的 模块的本地范围内使用。 static

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档