WinCE S3C2410 nboot 实现
来源:互联网 发布:恋恋有词和红宝书 知乎 编辑:程序博客网 时间:2024/05/17 02:10
为什么要有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给截掉了。
以上的都做完的话,基本上应该不会有什么问题了。
- WinCE S3C2410 nboot 实现
- S3C2410&&WINCE6.0&&NBOOT
- S3C2410&&WINCE6.0&&NBOOT
- S3C2410&&WINCE6.0&&NBOOT
- S3C2410 && WINCE6.0 && NBOOT
- S3C2410&&WINCE6.0&&NBOOT
- S3C2410&&WINCE6.0&&NBOOT
- S3C2410&&WINCE6.0&&NBOOT
- S3C2410&&WINCE6.0&&NBOOT
- WINCE 6的NBOOT
- WinCE下NBoot编译
- WINCE 6的NBOOT
- S3C2410&&WINCE6.0&&NBOOT (转载)
- WINCE6.0 S3C2410的NBOOT 分析
- S3C2410-GPIO驱动(WINCE)
- nboot
- wince开发经验感想(s3c2410)
- WinCE-IIC调试助手(S3C2410)
- 顺峰山踏青(一)
- NarrowCast license based on CPU clock speed
- 此计算机上已安装了试用版。必须先卸载以前安装的试用版后才能安装另一个试用版
- 测试文章
- MicroStragety 8.1.1没有英语版的CustomRptHelp.hlp文件
- WinCE S3C2410 nboot 实现
- javascript的几个小函数
- Spring中WebApplicationContext的研究(转 laoer的,感觉写的不错,值得一读)
- 字典和索引数组-提升性能小技巧
- 励志文章:做一个努力的人
- 专科生能否报考研究生?
- 顺峰山踏青(二)
- 绘画个性化窗口
- 黑客X小组通关