2016嵌入式系统设计考试考题-二.doc_第1页
2016嵌入式系统设计考试考题-二.doc_第2页
2016嵌入式系统设计考试考题-二.doc_第3页
2016嵌入式系统设计考试考题-二.doc_第4页
2016嵌入式系统设计考试考题-二.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

北 京 交 通 大 学 考 试 试 题课程名称: 嵌入式系统设计及应用 学年学期: 2015-2016学年第2学期学生姓名: 吕森 学号: 13282015 开卷考试(卷面50分)请注意:l 为了避免在教学平台提交答案发生问题,请使用谷歌浏览器(可以在教学平台课程通知中下载)。l 答题时,请在word试题中答卷,然后把答题文件以附件形式提交到教学平台。l 如果教学平台出现故障,请将答题提交到 一、简答题(包括4小题):(10分)1.在PXA270和Exynos 4412实验系统中,都采用了核心板及母板(主板)结构,请简述这种结构设计的优点和缺点。答:优点:便于核心板及母板进行单独的升级及维护,节省升级或维护成本。缺点:增大了空间占用量,且核心板与模板之间通过可插拔接口连接,容易导致线路连接不稳定。2.Arm处理器有哪些工作模式和状态?答:工作模式有7种:用户模式、快速中断模式、外部中断模式、管理模式、数据访问终止模式、系统模式、定义指令中止模式工作状态有两种:ARM状态、Thumb状态3.通过什么方法可以知道设备驱动是否加载到了内核,以及设备的主设备号和次设备号?答:通过adb devices确认是否加载到了内核;设备的主设备号和次设备号可以通过ls l命令查看dev目录下已经加载的设备的主设备号和次设备号。4. 已经正确编译和运行的程序,在将其拷贝到其他文件夹之后,不能运行,提示access violation,是什么原因?需要进行什么操作才能正常运行?答:拷贝到其他文件夹之后原始文件并不存在最开始所在的文件夹,运行程序时会调用了一个不存在的对象,所以就会出现非法调用提示。右击我的电脑。单击属性。 在系统属性中单击高级。 在性能中单击设置。 在性能选项中单击数据执行保护。 单击添加。选择要运行的程序。二、原理图设计部分 5分在PXA270实验系统中,有四个七段数码管,其中每两个数码管为一组。两组数码管的地址分别为0x10300000和0x10400000。假定系统的驱动程序和测试程序都能够正常运行,测试程序的功能是使四个数码管显示EEEE,请回答如下问题:1.如果将驱动程序中数码管的地址0x10300000误写为0x10500000,驱动程序的其他内容不变,执行测试程序会出现什么现象?答:数码管没有显示。2.如果将驱动程序中数码管的地址0x10300000误写为0x103000A0,驱动程序的其他内容不变,执行测试程序会出现什么现象?答:数码管部分段显示。由于系统的需要,与数码管对应的两组地址0x10300000和0x10400000,需要修改为0x08300000和0x08400000 其原理图应当做如何修改?答:假设地址线高8位线为A7-A0,则原先A7-A0值为00010000.需要修改为00001000,即把A3与A4做个调换。三、Arm汇编部分 10分在下面的程序注释中,qij表示指令所在行的编号。请回答如下问题:1q00,q01;q10,q11;q20,q21;处理器各是什么模式?所赋值的R13,R14是同一组寄存器吗?答:q00和q01,ARM处于中断模式。q10和q11,ARM处于中断模式。q20和q21,ARM处于用户模式。是同一组寄存器。2:q30所在行的指令执行后,处理器是什么工作模式?答:外部中断模式。3:执行完q40的指令后,R13=?答:R13=7。4:q50所在行的指令执行后,程序跳转到哪条指令?答:ADD R0,R0,#0x5。5:执行完q60行的指令后,R0=? 答:R0=19。AREA INIT, CODE, READONLYENTRYBRESET_HANDIERUNDEFINED_HANDIERBUNDEFINED_HANDIERBSWI_HANDIERPREFETCH_HANDIERBPREFETCH_HANDIERABORT_HANDIERBABORT_HANDIERNOPIRQ_HANDIER BIRQ_HANDIER FIQ_HANDIERBFIQ_HANDIERSWI_HANDIERMOVPC,LRRESET_HANDIERMOVR0,#0x000001F0 LDRR1,=0xF0000000 STRR0,R1 MOV R13,#1 ;q00MOVR14,#2 ;q01 MRS R0,CPSRBICR0,R0,#0x1f ORRR0,R0,#0x12 MSR CPSR_c,R0 MOV R13,#3 ;q10MOVR14,#4 ;q11MRSR0,CPSR BICR0,R0,#0x1f ORRR0,R0,#0x10 MSRCPSR_c,R0 MOV R13,#5 ;q20MOVR14,#6 ;q21 MRSR0,CPSRBICR0,R0,#0x1fORRR0,R0,#0x12MSRCPSR_c,R0 ;q30 ADDR13,R13,R14 ;q40 MOV R0,R13ADD PC,PC,#0x4 ;q50ADD R0,R0,#0x7ADD R0,R0,#0x6ADD R0,R0,#0x5 ADDR0,R0,#0x4 ADDR0,R0,#0x3 ; q60 ADDR0,R0,#0x2 ADDR0,R0,#0x1 STOP BSTOP END四、驱动程序部分(25分)(一) Exynos 4412嵌入式系统的Keypad结构和编号如图所示。第四题图1在Keypad驱动程序中,扫描键码的程序如下:for(i=0;i 0) for(k=0;k4;k+) if(value = tmpk)value = j+(i*4);if(value != 0x00) goto stop_poll; j+; stop_poll:1. 请说明当有 9号键按下时,驱动程序扫描按键并获取键号的过程。答:按下9号键时,程序执行read调用,执行for循环,先是外层循环扫描第行,并将对应列值保存在value中。扫描12行value值都没有,当第三行时开始内层循环,判断是第几列,此时value的值与tmp【0】相等,然后运用公式计算value的值。2.由于系统设计的需要,如果希望Keypad 编号 顺时针旋转180,如第四题图2所示。请问有哪些方法可以通过修改驱动程序,达到正确获取键盘编号?(用文字说明实现原理,并写出具体程序)答:用数值17减去将原程序得出的Keypad编号即可。for(i=0;i0)for(k=0;k4;k+) if(value=tmpk)value=17-j-(i*4); if(value!=0x00)gotostop_poll;j+;stop_poll:第四题图2(二)试就TEXTLCD驱动程序说明fpga_textlcd_write ()和fpga_textlcd_ioctl ()对端口进行控制的异同。答:static ssize_t fpga_textlcd_write(struct file * file, const char * buf, size_t length, loff_t * ofs)int i;int size;unsigned char str20;size = (length 20) ? length : 20;copy_from_user(str, buf, length);for (i = 0; i size ; +i)writeCharacter(stri);printk(fpga_textlcd_write, n);return length;static long fpga_textlcd_ioctl(struct file * file, unsigned int cmd, unsigned long arg)printk(fpga_textlcd_ioctl, n);switch(cmd)case TEXTLCD_ON:displayOnOffControl(1, 0, 0);break;case TEXTLCD_OFF:displayOnOffControl(0, 0, 0); break;case TEXTLCD_INIT:initializeTextLcd();break;case TEXT_CLEAR:clearDisplay();break;case TEXT_LINE1:setDDRamAddress(0x00);break;case TEXT_LINE2:setDDRamAddress(0x40);break;225: 相同点:两个函数都是通过访问struct file * file来控制端口不同点:write函数通过访问存储区buf,在存储区中数据进行写入操作;而ioctl函数则是通过访问已定义好的cmd数据,再通过switch,case语句直接调用函数来控制其工作方式。(三)对4412系统而言,假定keypad和textLCD设备驱动和测试程序按照实验指导书的说明已经调试成功,如何实现按下一个keypad(编号1-16),在textLCD上能够显示对应keypad键号?说明设计原理、操作步骤,并写出关键语句。答:在textLCD中,在新建一个驱动程序,将调试好的Keypad的驱动程序复制到这里,然后修改textLCD的测试程序,在测试程序中,打开两个设备文件,然后,先调用Keypad程序的read函数,读取键号,再调用textLCD的ioctl函数,将其写入LCD屏。程序如下所示:#include “textlcd.h”int main(void)int fd;fd=open(“/dev/fpga_textlcd”,O_WRONLY);assert(fd!=-1);int fd1;char buf20;fd1 = open(“dev/fpga_keypad”,ORDWR);ioctl

温馨提示

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

评论

0/150

提交评论