- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
凹凸笔试题目(嵌入式软件开发)
2007-02-07
Embedded Software Design Engineer
1 读程序段,回答问题
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.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) 编 译 器 如 果 安 排 各 个 变 量 (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;
int* const p;
int const* const p;
4 嵌入式系统相关问题
a) 对于整形变量 A=0 请画出在 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
文档评论(0)