4980|19

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince 6.0 NK.bin 大于32M eboot无法下载 [复制链接]

我们用的是三星的6400的BSP,wince 6.0的系统,原来的NK.bin是31M,现想把NK.bin调整为40M,做了以下修改:
1)修改C:\WINCE600\PLATFORM\SMDK6400\Files目录下的文件config.bib,修改内容如下:
       #define        NKLEN                02800000        ; 40 MB
      #define        RAMSTART        82900000
      #define        RAMLEN                04700000        ; 71 MB
2)修改C:\WINCE600\PLATFORM\SMDK6400\Src\Inc目录下的文件image_cfg.h,修改内容如下:
       #define EBOOT_FILE_CACHE_SIZE                (0x02800000)
      #define EBOOT_USB_BUFFER_OFFSET                (0x02900000)
      #define IMAGE_NK_SIZE                                (0x02800000)
3)修改C:\WINCE600\PLATFORM\SMDK6400\Src\Inc目录下的文件image_cfg.inc,修改内容如下:
       EBOOT_FILE_CACHE_SIZE                EQU        (0x02800000)
      EBOOT_USB_BUFFER_OFFSET                EQU        (0x02900000)
      IMAGE_NK_SIZE                        EQU        (0x02800000)
4)修改C:\WINCE600\PLATFORM\SMDK6400\Src\Bootloader\Eboot目录下的文件eboot.bib,修改内容如下:
       FLSCACHE  80100000        02800000        RESERVED
      USB_BUF   82900000        03000000        RESERVED
修改完以后,重新编译,用USB下载到板子上的时候,到一大半的时候就不动了。那位大侠能指点一下,万分感谢!

最新回复

能不能给我一份6400BSP啊 小弟才开始用64xx 资料不全 zuoxing1@sina.com 谢谢啊 等我开始调试的时候大家就可以一起讨论了^_^  详情 回复 发表于 2009-1-2 20:30
点赞 关注

回复
举报

52

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
在线等...希望大家能给予帮助,谢谢。
 
 

回复

95

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这种情况下,你下载31MB的镜像能成功吗?
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

4
 
终于有人来了,下载31MB的镜像能成功!
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

5
 
shuiyan,你还在吗?能不能指点我一下啊,谢谢了。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
shuiyan刚才理解错你的意思了,修改后,我现在小于32M的nk.bin都不行的。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
因为WINCE6还没有用过,所以只能根据CE5/4.2之类的进行对比参照了。

nk.bin的大小不是你从设置文件里面修改出来的,而是根据你定制的ce系统组件和应用程序总的大小决定的。
原来31MB,你想变成40MB,那么就应该增加N多的程序或者组件,比如加几个中文相关的字体文件,保证体积会上去的。

你这样改的目的是什么?
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢shuiyan的回复。是的,你说的办法体积会变大的,但是,也要修改我设置的配置文件的,不然用EBOOT更是下载不到板子上的,再说,你在内核里定义的内核是31M,而实际的内核是40M的话,肯定是跑不起来的。我改的目的是,因为我们现在的内核已经比较大了,随便添加个组件都会超过31M,所以老大让修改大一些。现在内核是修改大了,在RAM里跑nk.nb0也是ok的,就是用uboot从USB里下载不进去。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

9
 
我怀疑是UBOOT的问题,但实在是找不到原因,很是无奈。再问一个问题,UBOOT它是不是不支持大于32M的文件下载啊?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
你修改的只是ROM的大小,NK的大小要通过添加或减少组件什么的来实现,如果你想把NK变大,那么ROM的空间也要相应增大,CE5.0在setting里面有一项允许image大于32M的,当然也要修改相应的bib文件.
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
我现在是在配置文件里改过ROM的大小以后,NK的大小不变就下载不进去了。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

12
 
在setting里面我也设置了image大于32M的选项,随便问一下,会不会是我pc端的三星给的串口工具有问题啊?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

13
 
shuiyan能不能帮忙分析一下吗?
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

14
 
我没用过6400,只用过2443,你要看看EBOOT里面,是不是有下载数据大小的限制,
QQ:25616264
email: hgh123@163.com
有兴趣一起探讨。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

15
 
应该是 eboot的问题~~分给BINFS的区间有限制~~具体要看eboot代码
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

16
 
#define EBOOT_BINFS_BUFFER_OFFSET        (0x000C0000)
#define EBOOT_BINFS_BUFFER_PA_START        (DRAM_BASE_PA_START + EBOOT_BINFS_BUFFER_OFFSET)
#define EBOOT_BINFS_BUFFER_CA_START        (DRAM_BASE_CA_START + EBOOT_BINFS_BUFFER_OFFSET)
#define EBOOT_BINFS_BUFFER_UA_START        (DRAM_BASE_UA_START + EBOOT_BINFS_BUFFER_OFFSET)
#define EBOOT_BINFS_BUFFER_SIZE                (0x00030000)

#define EBOOT_FILE_CACHE_OFFSET                (0x00100000)
#define EBOOT_FILE_CACHE_PA_START        (DRAM_BASE_PA_START + EBOOT_FILE_CACHE_OFFSET)
#define EBOOT_FILE_CACHE_CA_START        (DRAM_BASE_CA_START + EBOOT_FILE_CACHE_OFFSET)
#define EBOOT_FILE_CACHE_UA_START        (DRAM_BASE_UA_START + EBOOT_FILE_CACHE_OFFSET)
//#define EBOOT_FILE_CACHE_SIZE                (0x01F00000)
#define EBOOT_FILE_CACHE_SIZE                (0x02000000)
我文件里的定义是这样的,是不是这个#define EBOOT_BINFS_BUFFER_SIZE                (0x00030000)
要修改啊?
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

17
 
难道没有碰到这种问题的吗,三星6400的用的人这么少啊?
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

18
 
如果 SMDK6400 的UBOOT寫法和 SMDK2440 的一樣的話, 32MB就是上限了.
其中的原因在於 UBOOT 中的規劃為前32MB為 BINFS 使用, 後 32MB為
DMA Buffer 供USB接收PC端來的資料用.治標解法為BIN檔不要大於32MB
. 治本的方法是修改 UBOOT 中USB接收PC端來的資料的方式改成 Ring-Buffer
的方式.

我另外大略說明一下 原本UBBOT 的動作.
UBOOT 為一個 Main() 做資料搬移的寫入 Flash, 和一個 USB Interrupt Handler 在做資料接收的動作.
USB Interrupt Handler 在每次有資料時會將資料直接寫入 DMA Buffer(後 32MB), 其 Write Pointer
起始位置為32MB處, 一直寫, 直到資料接收到完或是寫超過64MB, 超過64MB當然就停住了.而 Main()在
USB Interrupt Handler 沒有動作的空檔,會將已接收的資料搬移到前 32MB, 也就是BINFS的地方(前32MB),
起始位置 0MB處, 而Main()有二個 Pointer, 一個是 Read Pointer 記錄已搬移DMA Buffer 的資料到那
裏, 另一個 Pointer 則是記錄寫到 BINFS 中的那一個位址了. 在程式的運行中, Read Pointer <= Write
Pointer.

在SMDK2440時, 我有將UBOOT改成 Ring-Buffer 的方式,最小可以將 DMA Buffer 縮小到 8MB還是16MB忘了
, 太小會幾乎每次都發生Write Pointer 追趕上 Read Pointer,沒法子, Interrupt Handler 的 Priority
還是比 Main()高.
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 17 楼 RoxLin 的回复:
如果 SMDK6400 的UBOOT寫法和 SMDK2440 的一樣的話, 32MB就是上限了.
其中的原因在於 UBOOT 中的規劃為前32MB為 BINFS 使用, 後 32MB為
DMA Buffer 供USB接收PC端來的資料用.治標解法為BIN檔不要大於32MB
. 治本的方法是修改 UBOOT 中USB接收PC端來的資料的方式改成 Ring-Buffer
的方式.

我另外大略說明一下 原本UBBOT 的動作.
UBOOT 為一個 Main() 做資料搬移的寫入 Flash, 和一個 USB Interrupt Handler 在做資料…

学习了,怎么是繁体字呢?难道不是大陆的?
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

20
 
能不能给我一份6400BSP啊 小弟才开始用64xx 资料不全
zuoxing1@sina.com
谢谢啊 等我开始调试的时候大家就可以一起讨论了^_^
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
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
快速回复 返回顶部 返回列表