그러나, 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 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 |