蛇魔女电影图片:WinCE的编译系统 - 开发板教程专区 - 天嵌科技 ARM开发社区 TQ2440,SK...

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 16:16:08

WinCE的编译系统

当发生硬件中断的时候,WinCE内核调用OEMInterruptHandler函数,
但是在TQ2440开发包下有两个文件,分别为:\TQ2440\Src\Common\Intr_dvs\intr.c,和
\TQ2440\Src\Common\Intr\intr.c。这两个文件都包含OEMInterruptHandler函数,
那么WinCE内核会调用哪个文件里的OEMInterruptHandler函数呢?
PB在编译操作系统镜像的时候是怎么判断调用的函数所在的文件的,请高手指点,越详细越好。 收藏 分享 评分 回复 引用

订阅 TOP

  • 发短消息
  • 加为好友

亚瑟王 当前离线

UID
帖子
4916 
精华
积分
11348 
阅读权限
200 
在线时间
343 小时 
注册时间
2009-3-5 
最后登录
2011-3-11 

管理员

2# 亚瑟王发表于 2010-3-11 15:17 | 只看该作者 系统调用的是TQ2440\Src\Common\Intr\intr.c文件中的,判断的依据是:TQ2440\Src\Common\dirs文件中并没有添加对Intr_dvs的编译,并且可以查看Intr\sources和Intr_dvs\sources文件中生成的目标文件,两者的目标文件是不同的,而因为这个不同,整个BSP包调用的对应的库文件名称也不同,你可以搜索整个BSP,你可以知道系统没有对Intr_dvs下得到的目标文件的进行调用。所以。。。。。 回复 引用

TOP

  • 发短消息
  • 加为好友

binxd 当前离线

UID
4380 
帖子
60 
精华
积分
244 
阅读权限
30 
在线时间
33 小时 
注册时间
2010-1-20 
最后登录
2010-11-16 

中级会员

3# binxd发表于 2010-3-11 17:23 | 只看该作者 谢谢你,我明白了。
还有个不明白的地方:BSP包里并没有实现OEMInterruptEnable函数,那么系统调用哪个文件的OEMInterruptEnable函数呢,系统是怎么调用这个函数的呢? 回复 引用

TOP

  • 发短消息
  • 加为好友

亚瑟王 当前离线

UID
帖子
4916 
精华
积分
11348 
阅读权限
200 
在线时间
343 小时 
注册时间
2009-3-5 
最后登录
2011-3-11 

管理员

4# 亚瑟王发表于 2010-3-12 16:08 | 只看该作者 在二楼给你说了,分析sources文件可以知道怎么调用各个函数的,这里还是分析sources,然后得出如何调用你说的那个函数的。你说的那个函数在PB的“PLATFORM\COMMON\SRC\COMMON\INTR\COMMON\oem.c”文件中,那么打开同目录下的sources文件,主要内容如下:
TARGETNAME=oal_intr_common
TARGETTYPE=LIBRARY
这两行,第一行是说生成的文件名称,第二行是说生产的文件类型。
而oal_intr_common.lib又是在“PLATFORM\COMMON\SRC\COMMON\INTR\BASE\sources”文件中被调用,并且得到一个新的库文件:oal_intr.lib。
oal_intr.lib文件是在“PLATFORM\TQ2440\Src\Common\Intr\sources”文件中被调用的,至此,关于你说的函数的调用就算是分析完成了。系统会根据sources文件去寻找对应lib文件,当不存在改lib文件系统会自动查找源码并编译得到对应的lib,如果系统查找不到源码,系统就会报错。
对于为什么系统会自动分析sources文件并且自动查找或编译,那就需要问微软为什么要设置为查找sources文件而不是别的文件了。