本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告

☆★☆★☆★☆★☆★☆
生活的点点记录,以及一些体会...........

喜欢是淡淡的爱,爱是深深的喜欢.

时间会见证一切.......................

欢迎大家指出错误,共同进步..........

期待中..............................

☆★☆★☆★☆★☆★☆


我的分类(专题)

日志更新

最新评论

留言板

链接

世纪音频

 

 


Blog信息
blog名称:
日志总数:162
评论数量:312
留言数量:0
访问次数:940568
建立时间:2005年5月17日




[wince study]Nboot的流程
文章收藏

oceanblue 发表于 2008/6/16 14:24:24

Nboot (Nand flash bootloader) 主要的作用就是初始化硬件,把后面的功能比较完善的引导程序像eboot之类的映像拷贝到SDRAM中让后跳到SDRAM中继续跑eboot。   为什么要有nboot这个东西呢,其实主要是因为现在的soc上考虑到成本的问题,基本是都是自带一个nand flash的控制器并支持开机nand flash引导来取代相对来说昂贵的nor flash。   一般来说nand flash的控制器都会内置一个SRAM之类的buffer来支持nand flash的开机引导,在nand启动的方式下,板子上电的时候,nand控制器会自动把nand flash最前面的buffer大小的数据自动拷贝到buffer中然后让pc指针可以从buffer中直接读取指令。一般来说这个buffer不会很大,2410的芯片是4k,而像freescale的imx21更是只有2k,所以由于这个局限性,我们只能把bootloader拆分成两部分,前面一部分来完成基本初始化功能,而后面一部分来完成比较完善的功能,让控制器自动拷贝前一部分,然后前一部分再拷贝后一部分到RAM中,这样引导程序就可以做任何它想做的事情了。   其实,实现一个nboot并没有多大难度,以下是一个大概流程: 1.       当然是配置时钟了,没这个系统跑不起来啊 o(∩_∩)o… 2.       不用说SDRAM的配置也是少不了,不然我们怎么把程序拷贝到SDRAM中。 3.       就是flash控制器的配置了,一般来说就是GPIO和相应的控制器寄存器配一下。 4.       拷贝文件从nand到SDRAM中,nand flash读的话一般来说都是先拉片选位,然后发命令,接着是地址,最后就是读数了。   上面几步做完,其实整个nboot也就差不多了,不过在WinCE下开发的话有几个点需要特别注意: 1.       因为要用PB来编译,所以为了能生成.nb0文件,所以一定要在 代码里加上:         pTOC    DCD   -1         EXPORT pTOC      这个是让ROMIMG.exe做image时用的. 2.       生成.nb0文件,bib文件也是不能少的。 3.       因为微软编译器的原因,导致了我们按一般方法来编译.nb0时,前面的4K都是空的,所以如果直接把编译出来的.nb0烧进去的话是不能用的,所以的在bib改一下: 把: NBOOT  00000000  00002000  RAMIMAGE 这个定义成8k的大小,然后后面的 ROMSTART=00001000 ROMSIZE=1000    把start地址往后移一下,然后大小改为4k,这样出来的nb0就会  把前面空的4k给截掉了。     以上的都做完的话,基本上应该不会有什么问题了。


阅读全文(4332) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.094 second(s), page refreshed 144778886 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号