天嵌 ARM开发社区

 找回密码
 注册
查看: 1684|回复: 3

WinCE的编译系统

[复制链接]
binxd 发表于 2010-3-11 14:24:14 | 显示全部楼层 |阅读模式
当发生硬件中断的时候,WinCE内核调用OEMInterruptHandler函数,
但是在TQ2440开发包下有两个文件,分别为:\TQ2440\Src\Common\Intr_dvs\intr.c,和
\TQ2440\Src\Common\Intr\intr.c。这两个文件都包含OEMInterruptHandler函数,
那么WinCE内核会调用哪个文件里的OEMInterruptHandler函数呢?
PB在编译操作系统镜像的时候是怎么判断调用的函数所在的文件的,请高手指点,越详细越好。
亚瑟王 发表于 2010-3-11 15:17:02 | 显示全部楼层
系统调用的是TQ2440\Src\Common\Intr\intr.c文件中的,判断的依据是:TQ2440\Src\Common\dirs文件中并没有添加对Intr_dvs的编译,并且可以查看Intr\sources和Intr_dvs\sources文件中生成的目标文件,两者的目标文件是不同的,而因为这个不同,整个BSP包调用的对应的库文件名称也不同,你可以搜索整个BSP,你可以知道系统没有对Intr_dvs下得到的目标文件的进行调用。所以。。。。。
 楼主| binxd 发表于 2010-3-11 17:23:21 | 显示全部楼层
谢谢你,我明白了。
还有个不明白的地方:BSP包里并没有实现OEMInterruptEnable函数,那么系统调用哪个文件的OEMInterruptEnable函数呢,系统是怎么调用这个函数的呢?
亚瑟王 发表于 2010-3-12 16:08:19 | 显示全部楼层
在二楼给你说了,分析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文件而不是别的文件了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-21 11:07 , Processed in 1.031250 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表