没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
Embedded Software Design Engineer
1 读程序段,回答问题
{
c=c++%5;
}
b) 在一个可移植的系统中这种表达式是否存在风险?why?
{
b=100;
c=(char)++a;
e=(++d)++;
printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e);
}
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;
a) 关键字 volatile 在编译时有什么含义?并给出三个不同使用场景的例子(可以伪代码或者文字
描述)。
b) C 语言中 static 关键字的具体作用有哪些 ?
c) 请问下面三种变量声明有何区别?请给出具体含义
int const *p;
a) 对于整形变量 A=0x12345678,请画出在 little endian 及 big endian 的方式下在存中是如何
存储的。
5 设周期性任务 P1,P2,P3的周期为 T1,T2,T3分别为100,150,400;执行时间分别为20,40,100。
请设计一种调度算法进行任务调度,满足任务执行周期及任务周期。
b) 很多 RTOS 提供优先级继承策略 (Priority inheritance) 和优先级天花板策略 (Priority
ceilings)用来解决优先级反转问题,请讨论这两种策略。
存在风险,因为 c=c++%5;这个表达式对 c 有两次修改,行为未定义,c 的值不确定
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
c)浮点一般都是不可重入的;
d)printf 函数有重入和性能上的问题。
3 a) 用 volatile 关键字定义变量,相当于告诉编译器,这个变量的值会随时发生变化,每次使
建议使用 volatile 变量的场所:
(1) 并行设备的硬件寄存器
(3) 多线程应用中被几个任务共享的变量
在模块(但在函数体外),一个被声明为静态的变量可以被模块所用函数访问,但不能被模
在模块,一个被声明为静态的函数只可被这一模块的其它函数调用。那就是,这个函数被限
static 全局变量与普通的全局变量有什么区别:static 全局变量只初使化一次,防止在其
static 局部变量和普通局部变量有什么区别:static 局部变量只被初始化一次,下一次依
static 函数与普通函数有什么区别:static 函数在存中只有一份,普通函数在每个被调用
0x56
b)参数<=4时候,通过 R0~R3传递,>4的通过压栈方式传递
c) 异常:在产生时必须考虑与处理器的时钟同步,实践上,异常也称为同步中断。在处理器执
行到由于编程失误而导致的错误指令时,或者在执行期间出现特殊情况 (如缺页),必须靠核处理
的时候,处理器就会产生一个异常。
所谓中断应该是指外部硬件产生的一个电信号,从 cpu 的中断引脚进入,打断 cpu 当前的运行;
所谓异常,是指软件运行中发生了一些必须作出处理的事件, cpu 自动产生一个陷入来打断当前
6 高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的
现象叫做优先级反转
优先级继承策略(Priority inheritance):继承现有被阻塞任务的最高优先级作为其优先级,任
务退出临界区,恢
优先级天花板策略(Priority ceilings):控制访问临界资源的信号量的优先级天花板。
优先级继承策略对任务执行流程的影响相对教小,因为只有当高优先级任务申请已被低优先级
任务占有的临界资源
char 一个字节 1 byte
float 四个字节4 byet
double 八个字节 8 byte
long double 十个字节 10 byte
pointer 两个字节 2 byte(注意,16位系统,地址总线只有16位)
第1题: 考查对volatile 关键字的认识
#include<setjmp.h>
{
printf("%d ", b);
longjmp(buf , 1);
}
请问,这段程序的输出是
(a) 3
(b) 5
(c) 0
(d) 以上均不是
第2题:考查类型转换
struct node
{
struct node s= { 3, 5,6 };
struct node *pt = &s;
这段程序的输出是:
(a) 3
int val;
val =1;
val = val * foo(x*x , n/2);
剩余20页未读,继续阅读
若♡
- 粉丝: 6368
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- VMware 是一款功能强大的虚拟化软件,它允许用户在一台物理计算机上同时运行多个操作系统
- 31万条全国医药价格与采购数据.xlsx
- SQL注入详解,SQL 注入是一种常见的网络安全漏洞,攻击者通过在输入数据中插入恶意的 SQL 语句,欺骗应用程序执行这些恶意语句,从而获取、修改或删除数据库中的数据,甚至控制数据库服务器
- 用C语言实现哈夫曼编码:从原理到实现的详细解析
- py爱心代码高级粒子!!
- 爱心代码高级,拿去博得喜欢的人的欢心吧
- DZ-ID005-V1.0-20240911-原理图.zip
- 用C语言实现字符串去重功能
- java实现对ZKFBioFS200半导体指纹采集器对接
- NO.3学习样本,请参考第3章的内容配合学习使用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0