请教各位高手,FL2440的XIPKernel模式问题

armeasy 2010-07-23 06:06:20
请教高手,FL2440的XIPKernel模式问题
飞凌官方给出,要想实现XIPKernel模式,必须先烧完XIP.bin,再重启烧一个XIPKernel.bin,
这样不是很麻烦么?如果要生产的话,不可能用USB方式这样烧吧?
我尝试修改为直接XIPKernel模式启动,在nand.cpp中,详见ReadOSImageFromBootMedia
函数,修改代码如下: // lqm added for XIP mode.

//#define XIPMODE

#ifdef XIPMODE

g_pTOC->id[g_dwTocEntry].dwTtlSectors=0x200000/512;// 默认XIPKernel=1.996M,这里加载2M.

#endif

// end added.

#if 1 // lqm changed for XIP kernel mode start.如果启动系统时出现卡在那里的现象,将这里置1试试

if(!BP_ReadData(hPart,

(LPBYTE)(g_pTOC->id[g_dwTocEntry].dwLoadAddress),

SECTOR_TO_FILE_SIZE(g_pTOC->id[g_dwTocEntry].dwTtlSectors)))

#else //lqm:0x1FF000为config.bib里面指定的XIPKERNEL的大小.10-06-29

if(!BP_ReadData(hPart,(LPBYTE)(g_pTOC->id[g_dwTocEntry].dwLoadAddress),0x1FF000))

#endif
复制代码第一种情况:将引导的大小固定死为0x1FF000,这个值是在config.bib中获得的,结果不理想,重启后经常卡死在加载flash
驱动后;
第二种情况:加大引导的大小,将引导的值设置为0x200000,见上面的define后面的相关代码,貌似有一点点好转,但是换
一台机器,问题又出现了。
还是还原成全加载,就不会出现卡死的问题了。
为什么会出现这种情况呢?诚心请教。

具体卡的地方打印如下:
Windows CE Kernel for ARM (Thumb Enabled) Built on Aug  4 2008 at 18:38:38
ProcessorType=0920 Revision=0
sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 OEMAddressTable = 8022c46c
DCache: 8 sets, 64 ways, 32 line size, 16384 size
ICache: 8 sets, 64 ways, 32 line size, 16384 size
Sp=ffffc7cc
OEMIoControl: Unsupported Code 0x10100b4 - device 0x0101 func 45
OEMIoControl: Unsupported Code 0x101008c - device 0x0101 func 35
FMD: ReadID (Mfg=ec, Dev=76)
FMD_Init: finished successful
FMD_Init: reserved_blocks 0
FMD_GetInfo
OEMIoControl: Unsupported Code 0x1010104 - device 0x0101 func 65


在config.bib中代码如下:
MEMORY
pdwXIPLoc 00000000 803FF000 FIXUPVAR
XIPKERNEL 80200000 001FF000 RAMIMAGE
CHAIN 803FF000 00001000 RESERVED
NK 80400000 02200000 NANDIMAGE
RAM 80400000 03C00000 RAM
FLASH 92000000 00100000 RESERVED


; NK 80200000 02200000 RAMIMAGE
; RAM 82400000 05c00000 RAM
; RAM 82400000 01c00000 RAM

; FLASH 92000000 00100000 RESERVED

; Common RAM areas
AUD_DMA 80002000 00000800 RESERVED
SDIO_DMA 80010000 00010000 RESERVED
ARGS 80020800 00000800 RESERVED
DBGSER_DMA 80022000 00002000 RESERVED
SER_DMA 80024000 00002000 RESERVED
IR_DMA 80026000 00002000 RESERVED
SLEEP 80028000 00002000 RESERVED
EDBG 80030000 00020000 RESERVED
DISPLAY 80100000 00100000 RESERVED ;1M

CONFIG
AUTOSIZE=ON
COMPRESSION=ON
DLLADDR_AUTOSIZE=ON
KERNELFIXUPS=ON
PROFILE=OFF
RAM_AUTOSIZE=OFF
ROMFLAGS=0

ROM_AUTOSIZE=OFF
XIPSCHAIN=803FF000

MODULES
; Name Path Memory Type
; -------------- --------------------------------------------- -----------
nk.exe $(_FLATRELEASEDIR)\kern.exe XIPKERNEL SH
coredll.dll $(_FLATRELEASEDIR)\coredll.dll XIPKERNEL SH
filesys.exe $(_FLATRELEASEDIR)\filesys.exe XIPKERNEL SH
fatfsd.dll $(_FLATRELEASEDIR)\fatfsd.dll XIPKERNEL SH
diskcache.dll $(_FLATRELEASEDIR)\diskcache.dll XIPKERNEL SH
fatutil.dll $(_FLATRELEASEDIR)\fatutil.dll XIPKERNEL SH
binfs.dll $(_FLATRELEASEDIR)\binfs.dll XIPKERNEL SH
fsdmgr.dll $(_FLATRELEASEDIR)\fsdmgr.dll XIPKERNEL SH
mspart.dll $(_FLATRELEASEDIR)\mspart.dll XIPKERNEL SH
ceddk.dll $(_FLATRELEASEDIR)\ceddk.dll XIPKERNEL SH
smflash.dll $(_FLATRELEASEDIR)\smflash.dll XIPKERNEL SH
S3C2440DISP.dll $(_FLATRELEASEDIR)\S3C2440DISP.dll XIPKERNEL SH

FILES
boot.hv $(_FLATRELEASEDIR)\boot.hv XIPKERNEL SH
default.hv $(_FLATRELEASEDIR)\default.hv XIPKERNEL SH
user.hv $(_FLATRELEASEDIR)\user.hv XIPKERNEL SH
...全文
135 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
armeasy 2010-08-02
  • 打赏
  • 举报
回复
to wangyingying606:
把S3C2440DISP.dll注释掉?
这个又是什么意思?
我试一下。
wangyingying606 2010-07-29
  • 打赏
  • 举报
回复
你可以把S3C2440DISP.dll $(_FLATRELEASEDIR)\S3C2440DISP.dll注释掉试试。
armeasy 2010-07-29
  • 打赏
  • 举报
回复
to wangyingying606:
实验发现改成0x0a00000也会卡在那里,没有改善。
armeasy 2010-07-29
  • 打赏
  • 举报
回复
to luixing67:
系统时而能起,时而又卡在上面的打印那里。
去掉XIPKernel模式,系统100%能起来。

to wangyingying606:
3C00000这个可能是太大了
请问这个太大了是什么意思?
由60M变为58M?
wangyingying606 2010-07-28
  • 打赏
  • 举报
回复
RAM 80400000 03C00000 RAM
楼主要注意这个了,3C00000这个可能是太大了,可以试着改小一点儿,3A00000,我的当时是这么解决的
luixing67 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 armeasy 的回复:]
to xilidecai:
你说的条件肯定是满足了的。现在问题是XIPKernel能够实现,但是就是不稳定,不知道是何原因。
[/Quote]

楼主说的不稳定,系统能起的来么
armeasy 2010-07-27
  • 打赏
  • 举报
回复
to xilidecai:
你说的条件肯定是满足了的。现在问题是XIPKernel能够实现,但是就是不稳定,不知道是何原因。
luixing67 2010-07-27
  • 打赏
  • 举报
回复
跟你停在同一个地方,求解
xilidecai 2010-07-27
  • 打赏
  • 举报
回复
Multi-bin是把内核映像分为“最小内核”(xipkernel.bin)与“系统其它文件”(本文中的nk.bin)。在系统启动时加载的是BinFS分区上的xipkernel部分,它位于xip.bin的起始位置。也就是说,实现这一方案的基础需要BinFS文件系统的支撑。
二进制ROM映像文件系统(BinFS)是一个读取由romimage.exe产生的二进制映像(.bin)文件格式的文件系统。

IT铁哥 2010-07-24
  • 打赏
  • 举报
回复
友情顶贴,

19,503

社区成员

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

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