ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:160.17KB ,
资源ID:14828089      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14828089.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网关软件工程师基础知识试题docWord格式.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网关软件工程师基础知识试题docWord格式.docx

1、(5)内核需要支持中断,抢占和多核,盂要时刻注意同步和并发;(6)使用浮点数很容易出现异常,应尽最少用或者不用;(7)程序在不同的地址空间执行。此题为开放题,其它答案合理亦可。3.简述屮断级联与屮断共享有何异同?并画出硬件连接示意图。相同点:都是在同一个中断控制器的引脚上接多个设备。不同点:中断级联是在中断控制器的引脚上再接一个中断控制器,设备具有不同的中断 号;中断共享则是中断控制器的引脚上直接并联多个设备,设备具有相同的中断号。0:设备4.写一个宏SWAP(x, y),实现交换所有基本数据类型的值;写一个宏计算数组元素的个数。(1)#define SWAP(x, y) do typeof(

2、x) t = x;x = y; y = x; while (0)或者#define SWAP(x, y) do x A= y;y A=x; while (0)(2)#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a0)5.volatile关键字的作用。(1)修饰语句块时,防止指令顺序被改变;(2)修饰变屋吋,防止读写指令被优化。6.全局变量:static const int a;static int b;static const int c = 5;(1)int main ()printffb = %dn, b);rctum 0;执行结果是什么,为什么?(2

3、) void fund (void)int p = (int *) &a:*p = 8;b = 1 ;printf(ua = %d b = %dn, a, b);void func2 (void)static const int d;int *p = (int *) &d;funcl(), func2()执行的结果是什么?(1)b = 0。b被分配到bss段。(2)fund ()编译出错;func2 () : d = 67.用C语言实现将地址为()xB8100()01的32位寄存器置为0x12345678。 答案:32位寄存器的地址都以4字节对齐,不会出现地址0xB8100001 o&写一个讦

4、语旬判断一个32位整数能否表示为2的某次方(不能用循环)。int a = 8;if (a& (I )=()yes;elseno;9.在32位系统中,struct Achar a;int b;short c;char d;void *e;#pragma pack(l)struct B#pragma pack()#pragma pack(4)struct C:#pnigma pack()请sizeof(struct A), sizeof(struct B),sizeof(struct C)的值。sizeof(struct A) = 16sizeof(struct B) = 12sizeof(str

5、uct C) = 1610.SPI总线有CLK, MOST, MISO, CS四根线。在SLAVE已经片选上的情况下,假设读SLAVE ID需要向SLAVE发送一个字节的命令,SLAVE ID为四个字节。请问读SLAVE ID MOS I, MISO分别传输了多少字节的数据。都是511.请简述 u-boot 从 Nand Flash, Nor Flash 和 SPI Flash 启动的流程。Nand:上电,CPU通过SoC上固化的程序,将u-boot前4K或者8K加载到SRAM中,并 跳转到SRAM中执行。初始化内存,Nand等设备Z后,将整个u-boot加载到内存后,并 跳转到u-boot加

6、载地址处执行。Nor Flash: CPU将Nor Flash映射到地址空间上,CPU跳到Nor Elash映射到的某一地 址处执行,初始化内存等设备之示,将整个u-boot加载到内存示,并跳转到u-boot加 载地址处执行。SPI: CPU通过SoC上固化的程序,将一小段特定大小的程序加载到SRAMp,并跳转到 SRAM中执行。初始化内存,SPT等设备Z后,将整个u-boot加载到内存后,并跳转到 u-boot加载地址处执行。12.MIPS架构上,memory分为四块,各是什么?有何区别?kuseg: 0x000 0000 - 0x7FFF FFFF (低端2G):这些地址是用户态可用的地址

7、。在 有MMU的机器里,这些地址将一概被MMU作转换。除非MMI;的设置被建立好,这2G地 址是不可用的。对于没有MMU的机器,存取这2G地址的操作与具体机器相关。CPU具 体厂商提供的手册将会提供关于这方面的信息。kscgO: 0x8000 0000 - 0x9FFF FFFF(512M):这些地址映射到物理地址简单的通过 把最高位清零,然后把它们映射到物理地址低段512M(0x0000 0000 - OxlFFF FFFF)。 儿乎全部的对这段地址的存取都会通过快速缓存(cache) o因此在cache设置好之前, 不能随便使用这段地址。ksegl: 0xA000 0000 - OxBFF

8、F FFFF(512M):这些地址通过把最高3位清零的方法 來映射到相应的物理地址上,与kscgO映射的物理地址一样。但ksegl是非cache存 取的。ksegl是唯一的在系统重启吋能正常工作的地址空间。kseg2: 0xC000 0000 - OxFFFF FFFF (1G):这段地址空间只能在核心态下使用并 且要经过MMU的转换。在MMI设进好之前,不能存取这段区域。13.MIPS架构上,如果从Not Flash启动,默认的启动物理地址是多少?可否设置其它地址 作为启动地址?如果能请简要设置方法,如果不能请说明原因。OxBFCOOOOO,可否设置启动地址需要看具体芯片是否提供修改启动地址

9、的功能。如果芯 片有修改启动地址的功能,在启动前,通过修改硬件,改变上电后跳线的电压來改变启 动地址。14.在 linux kernel 中,init/_exit, devinit/_devexit 的作用是什么?两组有何 区别?编译时,把他们修饰的函数放到各口的口定义段中。_init/_ exit的函数被执行过Z后会被释放。而_devinit/_devexit函数被执行过 之后不会被释放。15.请完成函数get_key,根据NODE成员list的地址,返回NODE成员key的值。比 如下面的例了运行后会打卬“100”。(提示:请注意构成链表的方式)struct list_headstruct

10、 list_head *next, *prev;typedef struct int key;struct list_head list; NODE;#define container(ptrz type, member) (type *) (char *)ptr - (char *) (&( (type *)0)-member)int get_key(struct list_head *plist)NODE *node;node = container_of (plist, NODE, list);return node-key;int main()NODE node = .key = 10

11、0z . list = &node丄ist, &node丄ist;printf(吒dn, get_key(&node.list);return 0;)16.用C语言实现set_reg_bits(j和set_reg_bit (),参数自定。set reg bits 功能:将地址为 addr 的 register 的 bit m 到 bitn(m=n)设置为 value (0 = value 2n+1);set_reg_bit 功能:将地址为 addr 的 register 的 bit m 设置为 value (value: 0, 1)。static void inline set reg bit

12、s(u32 reg, int from, int to, ul6 bit_val)ul6 val;val = readw(void *)reg);val &= (1 (to 一 from + 1) - 1) from);val |= bit val from;writew(val, (void *)reg);#define set_reg_bit(reg, bit, val) set_reg_bits(reg, bit, bit, val)17.GCC编译器在编译时都有哪几个过程。预编译,编译,汇编,链接。18.描述LINUX小字符设备驱动的基本编成框架。并编写一个编译它的Makefile,说

13、明其小 的参数。要点、:module_init,module_exit,字符设备注册,file_operation, open(),read(),write(),ioctl(),release()oMakefile:KERNEL PATH = /xxx/xxxPWD = $ (shell pwd)all:make -C $( KERNEL_PATH) -M $(PWD) modulesclean:make - C $( KERNEL_PATH) -M $(PWD) clean19.在boot loader中,冇时需要跳到指定的地址上执行。请用C语言实现跳到地址 0x80000000 处执行。(void (*) (void) 0x800()0()00)();typedef void (*func_t) (void);fun

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1