2013年嵌入式面试题集_第1页
2013年嵌入式面试题集_第2页
2013年嵌入式面试题集_第3页
全文预览已结束

下载本文档

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

文档简介

常见函数总结3、memmovevoid*memmove(void*to,constvoid*from,size_tcount);当发生对象重叠时,函数仍能正确执行。void*memmove(void*dest,constvoid*src,size_tcount)

{

assert((dest!=NULL)&&(src!=NULL));

char*tmp_dest=(char*)dest;

char*tmp_src=(char*)src;if(tmp_dest<=tmp_src||tmp_src+count<tmp_dest)

{//正向

while(count--)

*tmp_dest++=*tmp_src++;

}

else

{//反向

tmp_dest+=count-1;

tmp_src+=count-1;

while(count--)

*tmp_dest--=*tmp_src--;

}

returndest;

}memmove考虑重叠。重叠通常就是三种情况,一是目标区域的首地址落在源区域内;二是目标区域的尾地址落在源区域内;三是两个区域完全重叠。

从结果上来看,只有第一种情况才有可能发生与预期不相同的结果。这时候memmove通常使用反方向复制的方法,从源区域的尾地址开始复制,这样就能避免出现已复制的数据被后续复制覆盖的错误。常见面试题总结1.什么是预编译,何时需要预编译:答:就是指程序执行前的一些预处理工作,处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等4.c和c++中的struct有什么不同?答:c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private.5.进程之间通信的途径答socket(套接字),共享存储,管道,消息队列,信号量,信号7进程和线程区别一个进程至少有一个线程,线程共享进程资源进程是独立的,线程运行在进程空间。8ARM流水线arm7---冯诺依曼结构---3级:取指,译码,执行。arm9---哈佛结构---5级:取指、译码、执行、访存、回写。9冒泡排序func(){inti,j,temp;inta[10];for(i=0;i<10;i++)scanf("%d,",&a[i]);for(j=0;j<=9;j++){for(i=0;i<10-j;i++){if(a[i]>a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}}}for(i=1;i<11;i++)printf("%d,",a[i]);printf("\n");}12,uboot启动过程:start.S: 初始化cpu; 清I/Dcache 关闭cache,mmu 关闭看门狗; 关闭中断; 初始化时钟; 初始化串口; 初始化nandflash; 初始化ddr; 判断wakeup状态,判断系统的启动是否是从sleep模式下启动的; 如果是从sleepmode启动的,只需要将pc指针指向上一次程序运行的地址; 搬移uboot到DDR里,那也就是上述的初始化工作,都是在前8K的代码里实现的; 设置堆栈; 清BSS段;uboot第二阶段(lib_arm/board.c或者arch/arm/lib/board.c): 这个阶段又做了一些硬件的初始化工作 flash_init() //norflash初始化 nand_init() //nandflash初始化 ether_init() //网卡初始化 获取"bootcmd"环境变量: s=getenv("bootcmd"); run_command(s,0);中断(Interrupts)11.中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。__interruptdoublecompute_area(doubleradius){doublearea=PI*radius*radius;printf("\nArea=%f",area);returnarea;}这个函数有太多的错误了,以至让人不知从何说起了:?ISR不能返回一个值。如果你不懂这个,那么你不会被雇用的。?ISR不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。?在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。?与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。5771001803090012095579036822859633082577100180309001238657613739973576069657710018030900135945780775799025155125771001803090012387577164982601818051577100180309001213857213119215891832657710018030900123595790368223610760535771001803090012356576135286143791742577100180309001235557508786970469327917088100343355274101229944325833379170881003433552751018667329388320081708810034335610710158115250150052217088100343356108101000180059871732170881003433542951010741941426870171708810034335618410187866086962880217088100343356185101775831174086674170881003433561091010860143735728461708810034335611010115220

温馨提示

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

最新文档

评论

0/150

提交评论