2个问题:
1.我的系统是WinCE5.0 + S3C2442,128M的NAND FLASH,无NOR FLASH,我现在想实现Multi-XIP功能,那么我需要怎么设置才可以呢?
2.要想把多个Bin文件放都放到系统的BinFS部分,需要做哪些设置呢?当EBOOT引导系统启动后,如果我想执行其中的某个Bin文件的话,该怎么做?
不知道我的表达有没有问题啊,呵呵
为什么都没人解答我的问题呢?是我的问题太幼稚了还是我问的太幼稚了呢? 苦恼啊
引用: 引用 1 楼 y_man18 的回复:
为什么都没人解答我的问题呢?是我的问题太幼稚了还是我问的太幼稚了呢? 苦恼啊
LZ 不要着急,我觉得你的问题太深奥了,我根本看不懂,惭愧....等高人来解答吧,呵呵
在添加组件的时候加了 Hive-Based Registry;结果编译后运行时启动不了
打印信息如下:
Windows CE Kernel for ARM (Thumb Enabled) Built on Feb 8 2007 at 23:36:51
ProcessorType=0920 Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8029d534
+OEMInit oalinit.c
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size
+OALInterruptInit
-OALInterruptInit(rc = 1)
+OALTimerInit( 1, 12, 0 )
+OALIntrEnableIrqs(count=1, pIrqs=0x81b1ef00)
Irqs=14,
ConfigureGPIO Done oalinit.c
InitDisplay
InitDisplay Done oalinit.c
-OEMInit oalinit.c
Sp=ffffc7cc
OEMIoControl: Unsupported Code 0x10100b4 - device 0x0101 func 45
OEMIoControl: Unsupported Code 0x101008c - device 0x0101 func 35
OEMIoControl: Unsupported Code 0x10100d0 - device 0x0101 func 52
OEMIoControl: Unsupported Code 0x10100f8 - device 0x0101 func 62
到这里就不动了,把Hive-Based Registry组件去掉后编译就可以正常启动。
这是为什么呢?
引用: 引用 3 楼 xingjling 的回复:
在添加组件的时候加了 Hive-Based Registry;结果编译后运行时启动不了
打印信息如下:
Windows CE Kernel for ARM (Thumb Enabled) Built on Feb 8 2007 at 23:36:51
ProcessorType=0920 Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8029d534
+OEMInit oalinit.c
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size …
多谢帮忙提问啊,呵呵
XIP?
nand flash 最多是multibin吧。
这个网上有详细的文档了,Google一下吧。
引用: 引用 5 楼 gooogleman 的回复:
XIP?
nand flash 最多是multibin吧。
这个网上有详细的文档了,Google一下吧。
在在网上搜了一下,还是不太明白multi-bin与multi-XIP有什么区别呢?谁能给我讲解一下呢?
bin:粗糙的理解为格式,nk.bin,eboot.bin,见过吧
xip:直接执行,如果代码放在nor flash或rom里就可以xip
multi-bin是指将nk的内容放在多个bin文件里
multi-xip我猜是多个可以直接执行的代码吧。
------------------------------------
仅凭印象,懒得去找资料了。
nor 和nand在读取方面的差异决定了可不可以xip。
引用: 引用 8 楼 wohuazhen 的回复:
nor 和nand在读取方面的差异决定了可不可以xip。
大侠同志,你好,我可不可以这么理解:由于我的存储系统是只有NANDflash,没有NORflash,那么是不是就不能实现XIP呢?
引用: 引用 7 楼 wohuazhen 的回复:
multi-bin是指将nk的内容放在多个bin文件里
------------------------------------
仅凭印象,懒得去找资料了。
我不太明白的是,如何将NK.bin文件分解成多个bin文件呢?需要用什么样的工具吗?还是说只要在config.bin里面进行设置呢?
http://topic.eeworld.net/u/20090504/16/2f78b44f-5394-458a-86b8-8e1e03c97ded.html?2010
看了这个贴子20楼。
我也迷糊了。
因为我的bsp是采用他说的nk mode吧。
没用过binfs方式的。
引用: 引用 3 楼 xingjling 的回复:
在添加组件的时候加了 Hive-Based Registry;结果编译后运行时启动不了
打印信息如下:
Windows CE Kernel for ARM (Thumb Enabled) Built on Feb 8 2007 at 23:36:51
ProcessorType=0920 Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8029d534
+OEMInit oalinit.c
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size …
添加hive-based registry后,如果nand flash的fat文件系统要格式化(第一次开机)会在某个地方停住,等一段时间就可以了,时间长短看nand flash的大小。我的128M,fat有95M,两三分钟的样。
添加了Hive-Base Registry后起动不了太正常了,第一次做一般都是挂在你挂的位置,具体的解决办法可以参考PB帮助文档,那里有详细的说明。
基本问题都是注册表的配置问题,仔细去研究一下注册表
LZ这种情况应该不能称做是XIP了,我们一般称为实现Binfs功能,要生成binfs所需要的bin文件只需要在Feature里加进Binfs,然后修改config.bib文件即可。具体实现不是几句话可以讲清楚,可以上网搜一下,或者是参考帮助文档去实现。
现在添加Hive-Base Registry组件后,系统已经可以跑起来了,而且基本上怎么改注册表都可以跑起来;之前系统跑不起来的时候怎么改注册表都跑不起来,真是奇怪的事。可能同志们会问了,那你现在怎么又可以跑的起来了呢?答案是这样的:我穷极无聊,一遍又一遍的build an sysgen、sysgen ... 很偶尔的一次,系统竟然成功的跑起来了. 天哪,相信大家和我一样无语吧
现在在做multi-XIP,按照网上一些达人的方法,可是系统每次在这里就挂了(见下面的打印信息):
+OEMInit oal-init.c
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size
+OALInterruptInit
-OALInterruptInit(rc = 1)
+OALTimerInit( 1, 12, 0 )
+OALIntrEnableIrqs(count=1, pIrqs=0x81b1ef00)
Irqs=14,
ConfigureGPIO Done oal-init.c
InitDisplay
InitDisplay Done oal-init.c
-OEMInit oal-init.c
Sp=ffffc7cc
OEMIoControl: Unsupported Code 0x10100b4 - device 0x0101 func 45
OEMIoControl: Unsupported Code 0x101008c - device 0x0101 func 35
FMD::FMD_Init - pBSPArgs->nfsblk = 0x0
FMD::FMD_Init - READ_REGISTER_BYTE(pNFSBLK) = 0x0
FMD::FMD_Init IPL .....
FMD::FMD_Init Done
MID = 0xec, DID = 0xa1 4th Cycle : 0x0
NUMBLOCKS : 1024(0x400), SECTORSPERBLOCK = 256(0x100), BYTESPERSECTOR = 512(0x200)
FMD_OEMIoControl: unrecognized IOCTL (0x71c24).
OEMIoControl: Unsupported Code 0x1010104 - device 0x0101 func 65
OEM: Not Cleaning system hive
OEM: Not Cleaning user profiles
按道理说,NK.exe肯定启动了,filesys.exe也应该被加载了,难道是filesys.exe在加载device.exe的时候出了问题?
有遇到这种情况的同志吗?你们是怎么解决的呢?
你把nand flash完全擦除一遍,再试一次看看。
和楼主的条件差不多,我尝试了一下multi-XIP,已经能够启动了,就是在搬xipkernel.bin到RAM的时候有些问题,会报一些filesys.exe的错误,等解决了和楼主交流