4674|7

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

嵌入式中寄存器的配置问题 [复制链接]

如果要开发一个驱动涉及到寄存器的配置吗?外设寄存器,比如Timer,Watchdog,DMA等好像是在bootloader阶段配置的,是不是在开发驱动的时候如果涉及到寄存器的配置就要修改bootloader了?刚接触嵌入式,对整个开发流程还很模糊,希望有人给指点迷津。

最新回复

关于驱动程序申请中断资源,其实OS中间加了一层,也就是说OS做了物理中断到逻辑中断的映射,驱动不需要去中断向量表中添加什么东西,中断向量表中设置的是OS的中断处理代码,就ARM而言,对于中断IRQ类,是在IRQ中断向量处理函数中来判断外部是什么物理中断的,然后会把物理中断映射成逻辑中断,然后通知驱动程序的线程,驱动程序从而运行; 这里不是想单片机里的某个中断必须对应某个处理函数,要处理哪个设备的中断必须有那个中断的函数,中断一来函数执行;OS在中间有处理了,要做驱动,只是在等待对应中断的事件,事件没来,驱动程序(线程)挂起,中断来了,OS就会通知驱动程序(线程),驱动程序就开始处理了,就这样~ 说的其实也比较粗,大体上就是这样,具体要看相应的OS的机制,Vxworks有自己的处理方法,你找本书看看吧~  详情 回复 发表于 2009-3-20 17:02
点赞 关注

回复
举报

63

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
以TI芯片的片上外设为例,通过MMC可以外接SD卡,WLAN;通过Mcbsp可以实现外接触摸屏,3G Modem,通过I2C可以外接GPS等。当我们在开发这些模块的驱动时,这些MMC,Mcbsp,I2C的寄存器的配置是不是要在BOOTLOADER里面进行。
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
其实Bootloader的基本功能就是引导,基本外设的初始化,传递参数给OS,加载OS/Kernel/应用程序。所以驱动程序还是需要初始化外设的。

具体到TI, Bootloader是与体系结构相关的,有的分两级,第一级是固化了的,第二级完成代码的加载等。 找TI关于Bootloader的应用笔记和例子看看吧。FYI.
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
这个不一定,如楼上所说bootloader的功能是引导,在其中初始话的寄存器基本都是CPU及的寄存器,也就是能保证CPU能正常运行的寄存器,比如CLK的配置,中断的设置(一般会关掉中断,比如WinCe的eboot)。。。
相关外设的初始话是在驱动里做,或者在OS启动时初始化,要改变寄存器不一定要修改bootloader
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
明白了,外设寄存器的配置是要在驱动中写的。驱动开发应该涉及到中断处理程序的编写,而中断的初始化,入口地址的设定等是在BOOTLOADER阶段完成的吗?这么说如果驱动程序涉及到中断那么应该要修改BOOTLOADER吧。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 daybing 的回复:
明白了,外设寄存器的配置是要在驱动中写的。驱动开发应该涉及到中断处理程序的编写,而中断的初始化,入口地址的设定等是在BOOTLOADER阶段完成的吗?这么说如果驱动程序涉及到中断那么应该要修改BOOTLOADER吧。

也不是这样的,Bootloader有自己的定位,就是要把OS加载到相应的地方,其实OS用到的资源他不负责,bootloader设置那些寄存器是为了自己用保证自己运行的时候硬件正常,OS要用到的资源得OS自己去设置,比如在WinCE(基于ARM)中:
bootloader设置的寄存器就是时钟,中断(bootloader自己不用中断,所以就把中断屏蔽了,bootloader都没有设置其他中断向量),SDRAM(他要把CE加载到SDRAM中,所以他要初始化SDRAM);
对于CE用到的资源是在CE的OAL里设置的,在哪里CE会设置自己的中断向量,中断处理函数等;

如果驱动程序涉及到中断,跟Bootloader是没有关系的,编写驱动只需要按照OS提供的方式来使用资源,如果驱动程序用到中断,那么OS肯定会有申请中断的API供驱动使用,所以,不要把bootloader看的有多么重要,他只是个装载程序,他设置的寄存器只是供自己使用的,与OS没有关系,与驱动程序就更没有关系了~
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
很感谢5楼,看了你的解释明白许多,不知道这样理解驱动对不对:驱动主要完成对外设的操作,这里面肯定少不了对寄存器的访问,对OS而言驱动就应该有一些固定格式,比如通过read,write,open,close函数就能够找到驱动进而访问外设;驱动通过API向OS申请中断这个好像很抽象,是不是驱动把入口地址传告诉OS然后OS就把这个入口地址写到中断向量表里?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 daybing 的回复:
很感谢5楼,看了你的解释明白许多,不知道这样理解驱动对不对:驱动主要完成对外设的操作,这里面肯定少不了对寄存器的访问,对OS而言驱动就应该有一些固定格式,比如通过read,write,open,close函数就能够找到驱动进而访问外设;驱动通过API向OS申请中断这个好像很抽象,是不是驱动把入口地址传告诉OS然后OS就把这个入口地址写到中断向量表里?

关于驱动程序申请中断资源,其实OS中间加了一层,也就是说OS做了物理中断到逻辑中断的映射,驱动不需要去中断向量表中添加什么东西,中断向量表中设置的是OS的中断处理代码,就ARM而言,对于中断IRQ类,是在IRQ中断向量处理函数中来判断外部是什么物理中断的,然后会把物理中断映射成逻辑中断,然后通知驱动程序的线程,驱动程序从而运行;

这里不是想单片机里的某个中断必须对应某个处理函数,要处理哪个设备的中断必须有那个中断的函数,中断一来函数执行;OS在中间有处理了,要做驱动,只是在等待对应中断的事件,事件没来,驱动程序(线程)挂起,中断来了,OS就会通知驱动程序(线程),驱动程序就开始处理了,就这样~

说的其实也比较粗,大体上就是这样,具体要看相应的OS的机制,Vxworks有自己的处理方法,你找本书看看吧~
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表