关于自写bootloader启动wince

sxmman 2010-07-06 04:04:59
我看了好几个开源的bootloader,有的能成功启动wince(nk.bin位于nand flash)
但是每个都要先读取一个TOC的内核参数
并且每个读取的位置都不一样,位于nand flash里面
我想知道的是,既然位于nand flash不同的位置
那么1.这个参数是烧写wince的程序写的,但是烧写wince的用的是eboot,怎么指挥它写在哪呢?pb里设置?
2.如果是内核写的,那么,在platform builder哪个地方对其设定呢?
nk.bin和nk.nb0的启动区别就是nk.nb0直接顺序复制到ram然后跳转就行了,而nk.bin需要根据TOC的信息把bin文件各个块转移到ram(没有解压缩,有一个成功的nboot就是这么做的)就行了吗?
那要实现烧写bin怎么弄呢?不通过eboot而自己写。
求助各位高手,谢谢了!
...全文
168 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxy_9761 2010-07-07
  • 打赏
  • 举报
回复
个人理解如下:

这里面涉及到两个toc
1. toc 指结构体 TOC,指明flash中存放的各个映像文件信息
这个toc是bootloader启动相应的映像文件,比如eboot,nk,或者其它,toc的内容指定各个映像的在flash的存放地址与大小等信息。

2. pToc 指向结构体ROMHDR 这个用于存放映像文件本身的信息,
如eboot启动时重定位全局变量,eboot与nk都有这个toc信息,是由romimage指定的.

nk.bin只是把nk.nb0简单的压缩了一下,减少下载内核的时间。我手上的eboot来看,nk.bin下载到ram后,会解压成nk.nb0形式,然后写到flash里面(可见写到flash上的确实是nk.nb0形式)。这样的好处是操作系统装载时间快,无须解压过程,缺点是费flash的容量.但是也费不了太多,而且nand flash很便宜,所以也不能算是缺点。
会思考的草 2010-07-06
  • 打赏
  • 举报
回复
bin格式是公开的,从bin到nb0的转换完全可以自己做。toc是romimage的时候设定好的。
sxmman 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 garyliu1104 的回复:]
bootloader 如果只实现从NandFlash读取文件到RAM启动是很容易,只需做必要的初始化工作,然后把NB0文件从NandFlash读取到ram中,然后再跳转到启动地址,就可以启动wince了。一般BSP带的bootload还会支持网络启动,启动的一些参数设置等功能,就会稍微麻烦一些。
[/Quote]
目前我知道的是,bin文件只是下载时有用,但是最终烧到nand里面时已经转换成了bn0格式,所以可以直接读取到ram直接运行
但是,是不是烧写时分成几个segment烧写的,不然为什么要先读取TOC然后根据TOC读取nand....
TOC存放地址每个厂家好像不一样,所以之间的nboot不能之间通用....
是吗?
GaryLiu1104 2010-07-06
  • 打赏
  • 举报
回复
bootloader 如果只实现从NandFlash读取文件到RAM启动是很容易,只需做必要的初始化工作,然后把NB0文件从NandFlash读取到ram中,然后再跳转到启动地址,就可以启动wince了。一般BSP带的bootload还会支持网络启动,启动的一些参数设置等功能,就会稍微麻烦一些。
sxmman 2010-07-06
  • 打赏
  • 举报
回复
恩,是的,TOC里面主要用到的是内核所在地址以及加载地址、运行地址
以及一个SG_LIST数组,我在一个可用的bootloader里面看见这个数组下标是3,每个成员包括一个指向nand flash的地址和长度,然后把这三个地方的内容搬到指定的加载地址(ram),然后从运行地址运行就行了
~~~~~~~~~~~
我刚听一个同学说,存在nand flash里面的是nk.bn0而不是nk.bin,是吗?
那这样的话实现bootloader岂不很容易,bn0可以直接放到ram里面从头运行啊。
博说医械研发 2010-07-06
  • 打赏
  • 举报
回复
只了解一个EBOOT阶段的TOC,记录一下OS的的信息,比如大小,还有一些网络配置等等

19,502

社区成员

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

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