NK体积变大时,使用dnw下载时,出现下面的错误:
NK Map Addr = 0xa1383f28
ERROR: Checksum failure (expected=0xB8D48478 computed=0xBE64CDAA)
****** Checksum failure on record 161, ABORT!!! ******
现在NK的体积约为40M,修改了config.bib和Loader.h中关于nk的内存的宏,但是还是出现了Checksum的错误,我具体修改如下:
configure.bib:
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
;
; Use of this source code is subject to the terms of the Microsoft end-user
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
;
; Use of this source code is subject to the terms of the Microsoft end-user
; license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
; If you did not accept the terms of the EULA, you are not authorized to use
; this source code. For a copy of the EULA, please see the LICENSE.RTF on your
; install media.
;
MEMORY
IF IMGMULTIXIP !
IF WINCEDEBUG = retail
NK 80200000 02800000 RAMIMAGE
RAM 82A00000 01600000 RAM ; For 16Bpp LCD
ELSE
NK 80200000 02800000 RAMIMAGE
RAM 82A00000 01500000 RAM
ENDIF
FLASH 92000000 00100000 RESERVED
ENDIF
IF IMGMULTIXIP
#define CHAIN_ADDRESS 81D00000
#define CHAIN_LENGTH 00001000
XIPKERNEL 80200000 00300000 RAMIMAGE
NK 80500000 01900000 NANDIMAGE
CHAIN $(CHAIN_ADDRESS) $(CHAIN_LENGTH) RESERVED
RAM 80500000 03B00000 RAM
FLASH 92000000 00100000 RESERVED
ENDIF
; Common RAM areas
ARGS 80020000 00000800 RESERVED
SLEEP 80028000 00002000 RESERVED
EDBG 80030000 00020000 RESERVED
DISPLAY 80100000 00100000 RESERVED
; TEST_FRAMEBUFFER 83C00000 00400000 RESERVED ; For 24Bpp LCD test
; CF_DMA_BUF 83FE0000 00020000 RESERVED
CONFIG
AUTOSIZE=ON
COMPRESSION=ON
KERNELFIXUPS=ON
FSRAMPERCENT=0x40404040
IF IMGMULTIXIP
RAM_AUTOSIZE=OFF
ROM_AUTOSIZE=OFF
DLLADDR_AUTOSIZE=ON
XIPSCHAIN=$(CHAIN_ADDRESS)
AUTOSIZE_ROMGAP=10000
AUTOSIZE_DLLADDRGAP=0
AUTOSIZE_DLLDATAADDRGAP=0
AUTOSIZE_DLLCODEADDRGAP=0
ROMFLAGS=0
ENDIF
IF IMGPROFILER
PROFILE=ON
ELSE
PROFILE=OFF
ENDIF
;
; ROMFLAGS is a bitmask of options for the kernel
; ROMFLAGS 0x0001 Disallow Paging
; ROMFLAGS 0x0002 Not all KMode
; ROMFLAGS 0x0010 Trust Module only
;
IF IMGTRUSTROMONLY
ROMFLAGS=10
ELSE
ROMFLAGS=00
ENDIF
ROMSTART = 80200000
ROMWIDTH = 32
IF WINCEDEBUG = retail
ROMSIZE = 02300000
ELSE
ROMSIZE = 02800000
ENDIF
Loader.h:
在Loader.h中修改了两个宏:
#define ROM_RAMIMAGE_START 0x80000000
#define ROM_RAMIMAGE_SIZE 0x02800000
对下面这两个宏,对它的作用不明白,以及它和ROM_RAMIMAGE_START、ROM_RAMIMAGE_SIZE的区别
#define OS_RAM_IMAGE_BASE 0x80040000
#define OS_RAM_IMAGE_SIZE (0x03C00000)
有哪位大侠修改了config.bib和Loader.h还适用新的nk大小,请指点一下,谢谢啦
9 个解决方案
#1
楼主做了这些修改之后有更新bootloader吗?
#2
我觉的你的内核体积过大,有两种情况,一是你的内核内容本来就大,比如组件多或者debug模式下。在这种情况下,你再改配置文件也不启作用。因为AUTOSIZE=ON,会自动调整大小。二是,你人为的把配置文件调大,在这种情况下,你再修改配置文件才可以。不知道分析的正确与否,仅供参考。
#3
更改后也有更新eboot,但是问题依旧。
但是我发现一个问题,编译出来的nk.bin比nk.nb0还大,有点怪,我的ap也只有17M,如果不加ap,直接编译nk,它大小为18M的样子,打包到nk,采用的是SH,是有压缩的,按道理编译进去不应该出现这么大的nk.bin
但是我发现一个问题,编译出来的nk.bin比nk.nb0还大,有点怪,我的ap也只有17M,如果不加ap,直接编译nk,它大小为18M的样子,打包到nk,采用的是SH,是有压缩的,按道理编译进去不应该出现这么大的nk.bin
#4
楼主是通过SD卡,USB还是什么方式来更新NK.bin的?
#5
为什么楼主要把AP(是指你的shell吧?)包含到NK.bin中呢?还有就是你的NK比40M小的时候是可以正常更新的吧?
#6
采用的更新方式为通过dnw进行更新,nk的大小在35M以下是不存在这个问题的
采用ap和nk.bin打包是为了更新方便而做出的选择,ap和nk打包在一起,在更新的时候可以一键更新固件和ap,如果ap和nk分离的话,更新固件和ap是要分别进行更新的。一般ap当独存放是不会有这个问题的
采用ap和nk.bin打包是为了更新方便而做出的选择,ap和nk打包在一起,在更新的时候可以一键更新固件和ap,如果ap和nk分离的话,更新固件和ap是要分别进行更新的。一般ap当独存放是不会有这个问题的
#7
我们的AP和NK是分别固化的,这样可以加快开机的启动速度,我也是通过DNW+USB来更新的,有空试一下大于35M的NK.
#8
我想问一下,你的ap也存放在binfs区域吗,还是说另外开放了一个resversed区域专门用来存放ap?一般将nk和ap分别存放是可以加快开机速度。我这边编译的这个nk,nk.bin的大小竟然比nk.nb0还大,非常不解。一般nk.bin是nk.nb0的压缩版,比nk.nb0小才对
#9
NK是放在BINFS区的,AP是放在FAT区的,我没有编译过NK.bin比NK.nb0还大的情况,有空试一下。
#1
楼主做了这些修改之后有更新bootloader吗?
#2
我觉的你的内核体积过大,有两种情况,一是你的内核内容本来就大,比如组件多或者debug模式下。在这种情况下,你再改配置文件也不启作用。因为AUTOSIZE=ON,会自动调整大小。二是,你人为的把配置文件调大,在这种情况下,你再修改配置文件才可以。不知道分析的正确与否,仅供参考。
#3
更改后也有更新eboot,但是问题依旧。
但是我发现一个问题,编译出来的nk.bin比nk.nb0还大,有点怪,我的ap也只有17M,如果不加ap,直接编译nk,它大小为18M的样子,打包到nk,采用的是SH,是有压缩的,按道理编译进去不应该出现这么大的nk.bin
但是我发现一个问题,编译出来的nk.bin比nk.nb0还大,有点怪,我的ap也只有17M,如果不加ap,直接编译nk,它大小为18M的样子,打包到nk,采用的是SH,是有压缩的,按道理编译进去不应该出现这么大的nk.bin
#4
楼主是通过SD卡,USB还是什么方式来更新NK.bin的?
#5
为什么楼主要把AP(是指你的shell吧?)包含到NK.bin中呢?还有就是你的NK比40M小的时候是可以正常更新的吧?
#6
采用的更新方式为通过dnw进行更新,nk的大小在35M以下是不存在这个问题的
采用ap和nk.bin打包是为了更新方便而做出的选择,ap和nk打包在一起,在更新的时候可以一键更新固件和ap,如果ap和nk分离的话,更新固件和ap是要分别进行更新的。一般ap当独存放是不会有这个问题的
采用ap和nk.bin打包是为了更新方便而做出的选择,ap和nk打包在一起,在更新的时候可以一键更新固件和ap,如果ap和nk分离的话,更新固件和ap是要分别进行更新的。一般ap当独存放是不会有这个问题的
#7
我们的AP和NK是分别固化的,这样可以加快开机的启动速度,我也是通过DNW+USB来更新的,有空试一下大于35M的NK.
#8
我想问一下,你的ap也存放在binfs区域吗,还是说另外开放了一个resversed区域专门用来存放ap?一般将nk和ap分别存放是可以加快开机速度。我这边编译的这个nk,nk.bin的大小竟然比nk.nb0还大,非常不解。一般nk.bin是nk.nb0的压缩版,比nk.nb0小才对
#9
NK是放在BINFS区的,AP是放在FAT区的,我没有编译过NK.bin比NK.nb0还大的情况,有空试一下。