windows mobile启动中的经典错误initialized function of oem certification

guopeixin 2010-03-09 07:12:11
各位大虾,请教个问题:
定制mobile bsp的时候 ,开机启动时候出现如下的debug信息,实在是找不到问题出在哪里,debug info如下:
Windows CE Kernel for ARM (Thumb Enabled) Built on Dec 2 2008 at 15:23:13
ProcessorType=0b76 Revision=6
sp_abt=ffff1000 sp_irq=ffff0800 sp_undef=ffffc800 OEMAddressTable = 8020d118
[OAL] ++OEMInit()
[OAL] FCLK : 532000000

[OAL] ARMCLK : 532000000

[OAL] HCLK : 133000000

[OAL] PCLK : 33250000

CEProcessorType = 0xa11
+OEMInit
FCLK: 532000000, HCLK: 133000000, PCLK: 33250000, Prescaler: 2
[OAL] ++InitializeINFORMSFR()
[OAL] --InitializeINFORMSFR()
[OAL] InitializeCLKSource()
[OAL] InitializeCLKGating()
[OAL] InitializeBlockPower()
DCache: 128 sets, 4 ways, 32 line size, 16384 size
ICache: 128 sets, 4 ways, 32 line size, 16384 size
+OALTimerInit( 1, 16624, 0 )
[OAL] ++InitializeGPIO()
[OAL] --InitializeGPIO()
OALKitlStart()

pBSPArgs->header.signature(53475241)=53475241
pBSPArgs->header.oalVersion(1)=1
pBSPArgs->header.bspVersion(1)=1
pBSPArgs->fUpdateMode=0
pBSPArgs->kitl.flags=0
-OEMInit
INFO:OALLogSetZones: g_oalLogMask: 0xb
Sp=ffffc7cc
+OALIoCtlHalGetHWEntropy
[OEMIO:INF] + IOCTL_HAL_POSTINIT
[OEMIO:INF] - IOCTL_HAL_POSTINIT
+OALIoCtlHalInitRTC(...)
OEMSetRealTime(2007/7/1 12:0:0.000)
-OEMSetRealTime(rc=1)
[HALWP:INF] nCtrlCode = PM_HAL_FIL_INIT
[FIL] ################
[FIL] MID = 0xec
[FIL] DID = 0xd3
[FIL] HID[0] = 0x14
[FIL] HID[1] = 0xa5
[FIL] HID[2] = 0x64
[FIL] ################
[FIL] ##############################
[FIL] FIL Global Information
[FIL] BANKS_TOTAL = 1
[FIL] BLOCKS_PER_BANK = 2048
[FIL] TWO_PLANE_PROGRAM = 1
[FIL] SUPPORT_INTERLEAVING = 0
[FIL] SUBLKS_TOTAL = 2048
[FIL] PAGES_PER_SUBLK = 128
[FIL] PAGES_PER_BANK = 262144
[FIL] SECTORS_PER_PAGE = 4
[FIL] SECTORS_PER_SUPAGE = 8
[FIL] SECTORS_PER_SUBLK = 1024
[FIL] BYTES_PER_MAIN_PAGE = 2048
[FIL] USER_SECTORS_TOTAL = 1899520
[FIL] ADDRESS_CYCLE = 5
[FIL] ##############################

[INFO] WMR_AREA_SIZE = 10
[INFO] SPECIAL_AREA_START = 10
[INFO] SPECIAL_AREA_SIZE = 50
[INFO] VFL_AREA_START = 60
[INFO] VFL_AREA_SIZE = 106
[INFO] VFL_INFO_SECTION_START = 60
[INFO] VFL_INFO_SECTION_SIZE = 4
[INFO] RESERVED_SECTION_START = 64
[INFO] RESERVED_SECTION_SIZE = 102
[INFO] FTL_INFO_SECTION_START = 166
[INFO] FTL_INFO_SECTION_SIZE = 10
[INFO] LOG_SECTION_SIZE = 7
[INFO] FREE_SECTION_START = 176
[INFO] FREE_SECTION_SIZE = 17
[INFO] FREE_LIST_SIZE = 3
[INFO] DATA_SECTION_START = 193
[INFO] DATA_SECTION_SIZE = 1855
[INFO] FTL_AREA_START = 166
[INFO] FTL_AREA_SIZE = 1882
[HALWP:INF] nCtrlCode = PM_HAL_VFL_INIT
[HALWP:INF] nCtrlCode = PM_HAL_VFL_OPEN
[OND:MSG] GetBmlId - BmlPartitionId = 3
[OND:MSG] GetBmlId - BmlVolumeId = 0
[HALWP:INF] nCtrlCode = PM_HAL_FIL_INIT
[FIL] ################
[FIL] MID = 0xec
[FIL] DID = 0xd3
[FIL] HID[0] = 0x14
[FIL] HID[1] = 0xa5
[FIL] HID[2] = 0x64
[FIL] ################
[FIL] ##############################
[FIL] FIL Global Information
[FIL] BANKS_TOTAL = 1
[FIL] BLOCKS_PER_BANK = 2048
[FIL] TWO_PLANE_PROGRAM = 1
[FIL] SUPPORT_INTERLEAVING = 0
[FIL] SUBLKS_TOTAL = 2048
[FIL] PAGES_PER_SUBLK = 128
[FIL] PAGES_PER_BANK = 262144
[FIL] SECTORS_PER_PAGE = 4
[FIL] SECTORS_PER_SUPAGE = 8
[FIL] SECTORS_PER_SUBLK = 1024
[FIL] BYTES_PER_MAIN_PAGE = 2048
[FIL] USER_SECTORS_TOTAL = 1899520
[FIL] ADDRESS_CYCLE = 5
[FIL] ##############################

[INFO] WMR_AREA_SIZE = 10
[INFO] SPECIAL_AREA_START = 10
[INFO] SPECIAL_AREA_SIZE = 50
[INFO] VFL_AREA_START = 60
[INFO] VFL_AREA_SIZE = 106
[INFO] VFL_INFO_SECTION_START = 60
[INFO] VFL_INFO_SECTION_SIZE = 4
[INFO] RESERVED_SECTION_START = 64
[INFO] RESERVED_SECTION_SIZE = 102
[INFO] FTL_INFO_SECTION_START = 166
[INFO] FTL_INFO_SECTION_SIZE = 10
[INFO] LOG_SECTION_SIZE = 7
[INFO] FREE_SECTION_START = 176
[INFO] FREE_SECTION_SIZE = 17
[INFO] FREE_LIST_SIZE = 3
[INFO] DATA_SECTION_START = 193
[INFO] DATA_SECTION_SIZE = 1855
[INFO] FTL_AREA_START = 166
[INFO] FTL_AREA_SIZE = 1882
[HALWP:INF] nCtrlCode = PM_HAL_VFL_INIT
[HALWP:INF] nCtrlCode = PM_HAL_VFL_OPEN
[OND:MSG] GetBmlId - BmlPartitionId = 8
[OND:MSG] GetBmlId - BmlVolumeId = 0
[HALWP:INF] TotalScts = 1899520
< < < < OALIoCtlHalQueryFormatPartition .>>>>
OEM: EXT11 Button is NOT pushed. Hive will be NOT clean.
< < < < OALIoCtlHalGetHiveCleanFlag .>>>>
OEM: No Cleaning system hive
OEM: EXT11 Button is NOT pushed. Hive will be NOT clean.
< < < < OALIoCtlHalGetHiveCleanFlag .>>>>
OEM: NO Cleaning user profiles
+OALIoCtlHalGetHWEntropy
!!Initialized function of OEM Certification Module failed. Trust Model disabled!!
...全文
171 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ending 2010-03-11
  • 打赏
  • 举报
回复
哦 不对 不是4楼 是1楼
Ending 2010-03-11
  • 打赏
  • 举报
回复
引用 4 楼 guopeixin 的回复:
引用 1 楼 wolfmvp 的回复:Windows Mobile??在Windows Mobile小版好一些吧…
小版指的是?


小版呢就是指 你现在是在 CSDN社区- 硬件/嵌入开发-嵌入开发(WinCE) 小版
4楼的意思应该是要你去 CSDN社区- 移动开发-Windows Mobile 小版
博说医械研发 2010-03-10
  • 打赏
  • 举报
回复
查查是什么地方打印这段信息,然后看看代码呢?

This function enables the OS loader to pass the module code (for example, .dll, .exe, and .ocx) to the OEM to verify that a module can be safely run on the system.

DWORD OEMCertifyModule(
LPBYTE lpData,
DWORD cbData
);
Parameters
lpData
[out] Pointer to a buffer allocated by the OS that contains the code for the module being loaded.
cbData
[in] Size, in bytes, of the buffer that the OS passes and that lpData points to.
If cbData is zero, the end of the module has been reached.

Return Values
The following table shows the return values for this function.

Flag Value Description
OEM_CERTIFY_TRUST 2 The module is trusted by the OEM to perform any operation.
OEM_CERTIFY_RUN 1 The module is trusted by the OEM to run, but the module is restricted from making specific function calls.
OEM_CERTIFY_FALSE 0 The module is not trusted by the OEM and is not allowed to run.

Remarks
To implement this function, assign the address of this function to pOEMLoadModule in the OEMInit function of the OEM adaptation layer (OAL).

The pOEMLoadModule global pointer is exposed by the OS in the OAL. The OS loader calls pOEMLoadModule multiple times until it reaches the end of the module.

If the loader fails to fully load a module, the OS loader might never reach the end of the module, and an OEM must be ready for pOEMLoadInit to be called before the end of the previous module is reached.

The OEM assigns trust levels to .dll and .exe files. The modules from the MODULES section of a .bin file are assumed to be trusted (OEM_CERTIFY_TRUST) and are not tested by the OEM. The OEM should test the modules from the FILES section of the .bin file and other file systems.

An .exe file is always assigned a trust level before its dependent .dll files are loaded.

When a dependent .dll file is loaded, the OEM assigns it a trust level. The kernel compares this .dll file trust level to the trust level of the .exe file. Based on this comparison, a .dll file certification level is obtained for the OS.

If necessary, the kernel reduces the trust level of the .dll file so the .dll file can run.

If the trust level of the .exe file is higher than the trust level of the .dll file, the .dll file is not loaded by the kernel.

A .dll file can use the CeGetCurrentTrust function to determine the trust level of the .exe file if a .dll file needs more control over which .exe files are able to load it.

The following table shows the resulting .dll file certification level based on the combination of OEM-assigned trust levels.

OEM certification for .exe file OEM certification for .dll file Certification level for .dll file
OEM_CERTIFY_TRUST OEM_CERTIFY_TRUST OEM_CERTIFY_TRUST
OEM_CERTIFY_RUN OEM_CERTIFY_TRUST OEM_CERTIFY_RUN
OEM_CERTIFY_TRUST OEM_CERTIFY_RUN OEM_CERTIFY_FALSE
OEM_CERTIFY_RUN OEM_CERTIFY_RUN OEM_CERTIFY_RUN

ROM .dll and .exe files are not certified by the OEM and are assumed to operate at an OEM_CERTIFY_TRUST level.

For information on API restrictions imposed on untrusted applications, see Trusted APIs.

The CreateProcess function debug flags, DEBUG_ONLY_THIS_PROCESS and DEBUG_PROCESS, are restricted. If these flags are used by an untrusted application, the identified process launches, but no debugging occurs.

Requirements
OS Versions: Windows CE 2.10 and later.
Header: Developer defined.
Link Library: Nk.lib.

guopeixin 2010-03-10
  • 打赏
  • 举报
回复
引用 1 楼 wolfmvp 的回复:
Windows Mobile??在Windows Mobile小版好一些吧…

小版指的是?
guopeixin 2010-03-10
  • 打赏
  • 举报
回复
引用 2 楼 veabol 的回复:
查查是什么地方打印这段信息,然后看看代码呢?

This function enables the OS loader to pass the module code (for example, .dll, .exe, and .ocx) to the OEM to verify that a module can be safely run on the system.

DWORD OEMCertifyModule(
  LPBYTE lpData,
  DWORD cbData
);
Parameters
lpData
[out] Pointer to a buffer allocated by the OS that contains the code for the module being loaded.
cbData
[in] Size, in bytes, of the buffer that the OS passes and that lpData points to.
If cbData is zero, the end of the module has been reached.

Return Values
The following table shows the return values for this function.

Flag Value Description
OEM_CERTIFY_TRUST 2 The module is trusted by the OEM to perform any operation.
OEM_CERTIFY_RUN 1 The module is trusted by the OEM to run, but the module is restricted from making specific function calls.
OEM_CERTIFY_FALSE 0 The module is not trusted by the OEM and is not allowed to run.

Remarks
To implement this function, assign the address of this function to pOEMLoadModule in the OEMInit function of the OEM adaptation layer (OAL).

The pOEMLoadModule global pointer is exposed by the OS in the OAL. The OS loader calls pOEMLoadModule multiple times until it reaches the end of the module.

If the loader fails to fully load a module, the OS loader might never reach the end of the module, and an OEM must be ready for pOEMLoadInit to be called before the end of the previous module is reached.

The OEM assigns trust levels to .dll and .exe files. The modules from the MODULES section of a .bin file are assumed to be trusted (OEM_CERTIFY_TRUST) and are not tested by the OEM. The OEM should test the modules from the FILES section of the .bin file and other file systems.

An .exe file is always assigned a trust level before its dependent .dll files are loaded.

When a dependent .dll file is loaded, the OEM assigns it a trust level. The kernel compares this .dll file trust level to the trust level of the .exe file. Based on this comparison, a .dll file certification level is obtained for the OS.

If necessary, the kernel reduces the trust level of the .dll file so the .dll file can run.

If the trust level of the .exe file is higher than the trust level of the .dll file, the .dll file is not loaded by the kernel.

A .dll file can use the CeGetCurrentTrust function to determine the trust level of the .exe file if a .dll file needs more control over which .exe files are able to load it.

The following table shows the resulting .dll file certification level based on the combination of OEM-assigned trust levels.

OEM certification for .exe file OEM certification for .dll file Certification level for .dll file
OEM_CERTIFY_TRUST OEM_CERTIFY_TRUST OEM_CERTIFY_TRUST
OEM_CERTIFY_RUN OEM_CERTIFY_TRUST OEM_CERTIFY_RUN
OEM_CERTIFY_TRUST OEM_CERTIFY_RUN OEM_CERTIFY_FALSE
OEM_CERTIFY_RUN OEM_CERTIFY_RUN OEM_CERTIFY_RUN

ROM .dll and .exe files are not certified by the OEM and are assumed to operate at an OEM_CERTIFY_TRUST level.

For information on API restrictions imposed on untrusted applications, see Trusted APIs.

The CreateProcess function debug flags, DEBUG_ONLY_THIS_PROCESS and DEBUG_PROCESS, are restricted. If these flags are used by an untrusted application, the identified process launches, but no debugging occurs.

Requirements
OS Versions: Windows CE 2.10 and later.
Header: Developer defined.
Link Library: Nk.lib.

先表示感谢,看看你说的函数
wolfmvp 2010-03-10
  • 打赏
  • 举报
回复
Windows Mobile??在Windows Mobile小版好一些吧…

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧