4522|9

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince 启动时出现堆栈溢出 [复制链接]

请问一下如果要修改堆栈的大小,
是不是修改 EBOOT.BIB 文件里面的
STACK 的大小就可以啦?
然后把后面的地址都重新设置初始地址就可以了?

MEMORY

;   Name     Start     Size      Type
;   -------  --------  --------  ----
    STACK    80000000  00010000  RESERVED
    RAM      80010000  00010000  RAM
    EBOOT    80020000  00040000  RAMIMAGE
    RSVD     80060000  0009F000  RESERVED
    ARGS     80FF0000  00001000  RESERVED

调试信息如下:
!!! Committed last page of the stack (0xd0230018), SEH bypassed, thread terminated !!!
Exception 'User Stack Overflow' (-3): Thread-Id=00920002(pth=87f95120), Proc-Id=00400002(pprc=827c9308) 'NK.EXE', VM-active=00400002(pprc=827c9308) 'NK.EXE'
PC=c003f4e0(k.coredll.dll+0x0001f4e0) RA=d0040000(???+0xd0040000) SP=d023f860, BVA=d0230018


最新回复

!!! Committed last page of the stack (0xd0230018), SEH bypassed, thread terminated !!! Exception 'User Stack Overflow' (-3): Thread-Id=00920002(pth=87f95120), Proc-Id=00400002(pprc=827c9308) 'NK.EXE', VM-active=00400002(pprc=827c9308) 'NK.EXE' PC=c003f4e0(k.coredll.dll+0x0001f4e0) RA=d0040000(???+0xd0040000) SP=d023f860, BVA=d0230018   详情 回复 发表于 2009-11-13 18:38
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你说的那个bib是修改eboot下的stack配置,而且仅仅修改bib还不行,还要修改汇编中sp的位置
ce下的好像大家都用默认的
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 guopeixin 的回复:
你说的那个bib是修改eboot下的stack配置,而且仅仅修改bib还不行,还要修改汇编中sp的位置
ce下的好像大家都用默认的


现在我想知道的是,
我修改这里是不是能解决上面出错的问题~!
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 dengchonglin 的回复:
引用 1 楼 guopeixin 的回复:
你说的那个bib是修改eboot下的stack配置,而且仅仅修改bib还不行,还要修改汇编中sp的位置
ce下的好像大家都用默认的


现在我想知道的是,
我修改这里是不是能解决上面出错的问题~!

os下没有改过,不太清楚
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 dengchonglin 的回复:
引用 1 楼 guopeixin 的回复:
你说的那个bib是修改eboot下的stack配置,而且仅仅修改bib还不行,还要修改汇编中sp的位置
ce下的好像大家都用默认的


现在我想知道的是,
我修改这里是不是能解决上面出错的问题~!


你的bootloader的 栈和OS的栈是不同的。

所以你修改了也没有用。

不过我不懂你怎么搞成这样。

RAM 应该有分出来的了,

还有wince 给一个线程的栈大小是固定的,具体大小我忘记了。
 
 
 

回复

96

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 gooogleman 的回复:
引用 2 楼 dengchonglin 的回复:
引用 1 楼 guopeixin 的回复:
你说的那个bib是修改eboot下的stack配置,而且仅仅修改bib还不行,还要修改汇编中sp的位置
ce下的好像大家都用默认的


现在我想知道的是,
我修改这里是不是能解决上面出错的问题~!


你的bootloader的 栈和OS的栈是不同的。

所以你修改了也没有用。

不过我不懂你怎么搞成这样。

RAM 应该有分出来的了,

还有wince 给一个线程的栈大小是固定的,具体大小我忘记了。


奇怪呀,没有碰到过lz说的os启动stack有问题的情况,期待答案
每个线程的貌似是64k吧
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
我也期待
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(中级)

8
 
把启动到这个错误所有的信息都贴出来看一下吧
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
整个提示信息如下:
+OALPAtoVA(0x40e00000, Windows CE Kernel for ARM (Thumb Enabled) Built on Sep 25 2009 at 11:04:23
+OEMInit
INFO:OALLogSetZones: dpCurSettings.ulZoneMask: 0xb
OEM: Force clean boot.
-OEMInit
+OEMIoControl(0x1010148, 0xd001fe24, 44, 0x0, 0, 0x0)
+OEMIoControl(0x10100b4, 0x0, 0, 0x0, 0, 0x0)
+OEMIoControl(0x1010038, 0xd00bfb50, 16, 0x0, 0, 0xd00bfb68)
+OEMIoControl(0x101008c, 0x0, 0, 0xd00bfaf0, 4, 0xd00bfaf4)
+OEMIoControl(0x10100b0, 0x0, 0, 0x0, 0, 0x0)
TrueFFS, TFFSdiskEntry(): TrueFFS DLL_PROCESS_ATTACH
TrueFFS, TFFSdiskEntry(): OS version is 6.0.
TrueFFS, TFFSdiskEntry(): return TRUE (OK)
TrueFFS, DSK_Init Drivers\Active\02
TrueFFS, DSK_Init: flinitialized = 0
TrueFFS,  getBuiltInHandleByActivePath() deviceNo = 0, partitonNo = 2
TrueFFS, DSK_Init: pDisk=0xc0a0e968
TrueFFS, DSK_Init: Starting flInit()
flInit ***

*** Entering check_device() ***

Searching for NON-H3 Device...
NON-H3 Device Not found...

Searching for H3 device...
TrueFFS, flRegisterComponents(): Reading socket parameters for socket #0.
TrueFFS, checkSocketAddress(): pDisk = 0xc0a0e968, partitionNO = 2
TrueFFS, checkSocketAddress(): pDisk->registryPath = Drivers\BuiltIn\TrueFFS2, partitionNO = 2
TrueFFS, flGetDiskBaseAddres(): [START] WindowBase
TrueFFS, flGetDiskBaseAddres(): windowBase=0x0
TrueFFS, checkSocketAddress(): flashBase=0x0

Searching devices on socket #0...

++++doch_configAndID

Memory window set to 8KB

Socket #0 - ChipID OK
Device Found: H3Memory window is 8KB
Found #1 device(s)...

H3 Device found !!!


H3 Device found ***

flInit   return***status_HDOC = 0
TrueFFS, DSK_Init: DiskOnChip was detected (ChipID identified).
flInit ---
socketTable[deviceNo].initialized == FALSE ---
TrueFFS, checkSocketAddress(): pDisk = 0xc0a0e968, partitionNO = 2
TrueFFS, checkSocketAddress(): pDisk->registryPath = Drivers\BuiltIn\TrueFFS2, partitionNO = 2
TrueFFS, getRegValue(): FieldName = AutoDPDMode, length = 4
TrueFFS, checkDPDMode(): autoDPD = 1

Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3TrueFFS, checkSocketAddress(): pDisk = 0xc0a0e968, partitionNO = 2
TrueFFS, checkSocketAddress(): pDisk->registryPath = Drivers\BuiltIn\TrueFFS2, partitionNO = 2
TrueFFS, checkSocketAddress(): pDisk = 0xc0a0e968, partitionNO = 2
TrueFFS, checkSocketAddress(): pDisk->registryPath = Drivers\BuiltIn\TrueFFS2, partitionNO = 2
TrueFFS, checkSocketAddress(): pDisk = 0xc0a0e968, partitionNO = 2
TrueFFS, checkSocketAddress(): pDisk->registryPath = Drivers\BuiltIn\TrueFFS2, partitionNO = 2
checkCacheSize ---
TrueFFS, DSK_Init: Couldn't set cacheSize. status is 106. Continue with default value.
checkVerifyWrite ---
ReleaseMutex ---
TrueFFS,  GetDiskHandle volumeNo =2, deviceNo=0, partitionNo = 2 TrueFFS,  GetDiskHandle Device TrueFFS handle=32
TrueFFS, DSK_Init: this is the first partition in a socket. trying to mount it.

Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3TrueFFS, DSK_Init: Mount was done successfully. Dismounting partition and finish the initialization.
WaitForSingleObject ---
WaitForSingleObject ---
TrueFFS, DSK_INIT(): =========================
TrueFFS, DSK_INIT(): [END] pDisk = 0xc0a0e968
TrueFFS, DSK_INIT(): ========================
TrueFFS, DSK_INIT(): =========================
TrueFFS, DSK_INIT(): [END] pDisk = 0xc0a0e968
TrueFFS, DSK_INIT(): ========================
TrueFFS, DSK_Open(): DSK_Open [START]
TrueFFS, DSK_Open(): Partition was closed, trying to mount it.
TrueFFS, mountDisk(): [START] pDisk = 0xc0a0e968
TrueFFS,  GetDiskHandle volumeNo =2, deviceNo=0, partitionNo = 2 TrueFFS,  GetDiskHandle Device TrueFFS handle=32

Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3TrueFFS, mountDisk(): absMount was done successfully.
TrueFFS,  GetDiskHandle volumeNo =2, deviceNo=0, partitionNo = 2 TrueFFS,  GetDiskHandle Device TrueFFS handle=32

Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3TrueFFS, mountDisk(): [END], returning 0
TrueFFS, DSK_Open(): [END] returning pDisk=0xC0A0E968
TrueFFS, IO: dwIoControlCode=1
TrueFFS,  GetDiskHandle volumeNo =2, deviceNo=0, partitionNo = 2 TrueFFS,  GetDiskHandle Device TrueFFS handle=32
TrueFFS, IO: dwIoControlCode=464896
TrueFFS,  GetDiskHandle volumeNo =2, deviceNo=0, partitionNo = 2 TrueFFS,  GetDiskHandle Device TrueFFS handle=32
TrueFFS, IO: processing IOCTL_DISK_DEVICE_INFO
TrueFFS, getRegValue(): FieldName = Profile, length = 26
TrueFFS, IO: returned profile  is 'TRUEFFS_DOC2'
TrueFFS, IO: returned dwDeviceClass is 0x
xTrueFFS, IO: returned dwDeviceType is 0x40001000
TrueFFS, IO: returned dwDeviceFlags is 0x1
TrueFFS, IO: dwIoControlCode=465956
TrueFFS,  GetDiskHandle volumeNo =2, deviceNo=0, partitionNo = 2 TrueFFS,  GetDiskHandle Device TrueFFS handle=32
TrueFFS, IO: processing IOCTL_DISK_GET_STORAGEID
TrueFFS, IO: dwIoControlCode=465920
TrueFFS,  GetDiskHandle volumeNo =2, deviceNo=0, partitionNo = 2 TrueFFS,  GetDiskHandle Device TrueFFS handle=32
TrueFFS, IO: dwIoControlCode=482312
TrueFFS,  GetDiskHandle volumeNo =2, deviceNo=0, partitionNo = 2 TrueFFS,  GetDiskHandle Device TrueFFS handle=32
TrueFFS, IO: processing IOCTL_DISK_READ / IOCTL_DISK_WRITE operation.
TrueFFS,  GetDiskHandle volumeNo =2, deviceNo=0, partitionNo = 2 TrueFFS,  GetDiskHandle Device TrueFFS handle=32
TrueFFS, doDiskIo(): Reading 1 sectors starting at sector 0

Socket #0 - ChipID OK
Device Found: H3
Socket #0 - ChipID OK
Device Found: H3
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
!!! Committed last page of the stack (0xd0230018), SEH bypassed, thread terminated !!!
Exception 'User Stack Overflow' (-3): Thread-Id=00920002(pth=87f95120), Proc-Id=00400002(pprc=827c9308) 'NK.EXE', VM-active=00400002(pprc=827c9308) 'NK.EXE'
PC=c003f4e0(k.coredll.dll+0x0001f4e0) RA=d0040000(???+0xd0040000) SP=d023f860, BVA=d0230018
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表