본문 바로가기

Hello Info

NKGLOBALS,OEMGLOBALS


그러나, 5.0과 6.0의 큰 차이점은  Kernel | OAL | KITL 의 분리이다.

   5.0                                                                   6.0
 OAL.LIB                                        ====>          OAL.EXE
 NK.LIB                                          ====>          KERNEL.DLL
 KITL.LIB                                        ====>          KITL.DLL
OAL.LIB + NK.LIB + KITL.LIB                            각각의 모듈이 각각 따로 존재.
= NK.EXE 생성
[cf]
Windows CE 5.0
- OAL + Kernel = kern.exe
- OAL + Kernel + KITL = kernkitl.exe
- OAL + Kernel + KITL + Profiler = kernkitlprof.exe

Windows CE 6.0
- OAL = oal.exe
- Kernel = kernel.dll
- KITL = kitl.dll
- Kernel 프로파일러는 제공하지 않음.


6.0에서 각 모듈들이 각각 존재하게 되다보니, 각 모듈간에 통신이 필요하게 된다.
그래서 새로이 생겨나게 된것이, NKGLOBAL, OEMGLOBAL, 그리고 ~sutb.lib 들 이다.

NKGLOBAL, OEMGLOBAL은 모두 전역 변수로서, 초기화시에 각각의 영역의
( NKGLOBAL => kernel , OEMGLOBAL => oal )
함수들의 포인터 주소를 저장하게 된다.

그래서, 각 모듈간에 통신을 하고자 할 경우 이들 주소를 이용하여, OAL은 KERNEL쪽 Stub라이브러리를,
kernel은 oal 쪽의 stub라이브러리를 사용하여 각 함수들에 접근을 하게된다.

cf)
[ stub 라이브러리]
- OEMMAIN.LIB
- NKSTUB.LIB
- NKLDR.LIB

reference : http://wabar.tistory.com/56

'Hello Info' 카테고리의 다른 글

IST 와 ISR  (0) 2009.12.15
원부팅, 콜드부팅  (0) 2009.12.07
DRAM Self-Refresh  (0) 2009.11.30
PDD,MDD  (0) 2009.11.19
윈도우 임베디드 CE 쉘  (0) 2009.11.17