复习-嵌入式1-3.docVIP

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
复习-嵌入式1-3.doc

简答题(每小题2分,共20分) 1、请解释以下语句。 gcc -g -c -o -lm gcc -I./ -I/1234/include –d test.c make -f text.make -I /include/mk /I /w make clean 2、举出5个驱动程序的常用接口函数。 以下任意五个均可以, int register_chdev(usigned int major,const char *name,struct file_oprations *fops) 注册主设备号。Major:主设备号;name:驱动程序名(出现在/proc/dev中);fops:文件操作表。该函数将返回主设备号,如果出错将返回小于0的值。 int unregister_chdev(usigned int major,const char *name) 注销字符设备 void init_timer(struct timer_list *timer) struct timer_list TIMER_INITIALIZER(_function,_expires,_data) timer:定时器变量 _function:要调用的函数 _expires:期望定时器执行的jiffies值,jiffes为操作系统启动以来的时钟滴答数目 _data:要传递的参数 void add_timer(struct timer_list *timer) timer:定时器变量 void del_timer(struct timer_list *timer)删除定时器 usigned long copy_from_user(void *to,const void *from,unsigned long count) unsigned long copy_to_user(void *to,const void *from,unsigned long count) 用户地址空间和内核地址空间的数据交换 To:目标空间地址 From:源空间地址 Count:数据的数目 int request_irq(unsigned int irq,irqreturn_t (*handler)(),unsigned long flags,const char *dev_name,voin *dev_id) 注册中断 Irq:要申请的中断号 Handler:要安装的中断处理函数指针 Flags:位掩码选项 Dev_name:传递给requset_irq的字符串 Dev_id:用于共享的中断信号线 void free_irq(unsigned int irq,void *dev_id) irq:要注销的中断号 dev_id:用于共享的中断信号线 3、从嵌入式系统底层到上层应用软件,试分析嵌入式计算系统的组成主要分为哪几个部分,并写出各部分所完成的功能。 (1)硬件层;(2)中间层(嵌入式系统初始化,硬件相关的驱动程序);(3)软件层(操作系统、文件系统、GUI,网络及通用组件);(4)功能层。 4、嵌入式系统程序员经常需要编写一些直接访问控制外设的代码。对于不同的嵌入式处理器体系机构,外设可能采用内存映射方式(如Motorola的大部分嵌入式处理器),也可能采用端口方式(如Intel的大部分嵌入式处理器)。试分析两种方法的原理。ARM处理器采用的是哪一种,简单叙述其具体做法。 ARM采用的是内存映射方式。当寄存器位于I/O空间时,称为I/O端口,当位于内存空间时,称为I/O内存。(1分)I/O端口的使用较为简单,使用Linux提供的函数访问定位于I/O空间的端口,包括:unsigned inb(unsigned port)、unsigned outb(unsigned char byte,unsigned port)。(0.5分)而I/O内存则首先需要用ioremap()将设备所处的物理地址映射到虚拟地址之后用I/O内存的方法进行端口访问,最后释放I/O端口,并释放映射虚拟地址。(0.5分) 5、简述设备驱动的开发流程。 (1)查看原理图,理解设备的工作原理;(2)定义主设备号;(3)在驱动程序中实现驱动的初始化,如果驱动程序采用模块的方式,则实现模块的初始化;(1分)(4)设计所要实现的文件的操作,定义file_operation结构;(5)实现中断服务(中断并不是每个设备驱动所必须的);(6)编译该驱动程序到内核中,或者用insmod命令加载;(7)测试该设备。(1分) 6、简述I/O内存访问流程。 Request_mem_region()→ioremap()→ioread8()、ioread16()、iowrite8()等→iounmap()→Release_me

文档评论(0)

xinshengwencai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档