文档介绍:.
2017年嵌入式c语言笔试题及答案
2017年嵌入式c语言笔试题及答案1读程序段〜回答问题
intmain(intargc,char*argv[])
{
intc=9,d=0;
c=c++%5;
d=c;
printf(
a)对于n整形变量A=0x12345678,请画出在littleendian
及bi鬓gendian的方式下在内存中是如何帐存储的。
b)在ARM系统中〜函数调陇用的时候〜参数是通过哪种方式传递的?
c)中断(interrupt,如键盘蒌中断)与异常(exception,如贯除零异常)有何区别?
5设周期性任务崇P1,P2,P3的周期为T1,T2,,T3分别为100〜150〜400;执麒行时间分别为20〜40〜100。请设殆计一种调度算法进行任务调度〜满足任务于'执行周期及任务周期2017年嵌入式c语言笔试题及答案。
6优先级反转问题胞在嵌入式系统中是一中严重的问题〜必须保给与足够重
a) 首先请解释优先级芥反转问题
b) 很多RTOS提供优先级继承策略(Priorityinher潸
3 /8
itance)和优先级天花板策略(P罾riorityceilings)用来龅解决优先级反转问题〜请讨论这两种策略啐。
参考答案:
15存在风险〜因为c=c++%5;这个表达式对c有两次椹修改〜行为未定义〜c的值不确定
inta=0;//datasectionintb;//datasection岔
staticcharc;//BSSintmain(intargc,ch拙ar*argv[]){chard握=4;//stack
statics阉horte;//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);檎
return0;}
a=2赃,b=100,c=2,d=6,e=5归
2a)ISR不能返回一个值;
4 /8
b) 想ISR不能传递参数;
c) 浮点一般都拐是不可重入的;
d) printf函数有重入和性能上的问题。
3a)用vo按latile关键字定义变量〜相当于告诉编译器〜这个变量的值会随时发生变化蜜〜每次使用时都需要去内存里
重新读取谅它的值〜并不要随意针对它作优化201釜7年嵌入式c语言笔试题及答案。
建议舳使用volatile变量的场所:
(疖1)并行设备的硬件寄存器
(2)一个仪中断服务子程序中会访问到的非自动变量油(全局变量)
(3)多线程应用中被几忽个任务共享的变量
b)在函数体〜一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
在模块内(但在函眇数体外)〜一个被声明为静态的变量可以,被模块内所用函数访问〜但不能被模块外碥其它函数
访问。它是一个本地的全局变凶量。
在模块内〜一个被声明为静态的函秽数只可被这一模块内的其它函数调用。那u就是〜这个函数被限制在声明它的
模块为的本地范围内使用
static全局变彳量与普通的全局变量有什么区别:sta搏tic全局变量只初使化一次〜防止在其醮他文件单元中被引用;
5 /8
static局肆部变量和普通局部变量有什么区别:st墓atic