s3c2440开发板mdk下向s3c2440 nand flash烧写程序程的实现

s3c2440开发板mdk下向s3c2440 nand flash烧写程序程的实现

ID:6032852

大小:212.50 KB

页数:6页

时间:2017-12-31

s3c2440开发板mdk下向s3c2440 nand flash烧写程序程的实现_第1页
s3c2440开发板mdk下向s3c2440 nand flash烧写程序程的实现_第2页
s3c2440开发板mdk下向s3c2440 nand flash烧写程序程的实现_第3页
s3c2440开发板mdk下向s3c2440 nand flash烧写程序程的实现_第4页
s3c2440开发板mdk下向s3c2440 nand flash烧写程序程的实现_第5页
资源描述:

《s3c2440开发板mdk下向s3c2440 nand flash烧写程序程的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MDK下向S3C2440nandflash烧写程序程的实现发布时间:2009-7-23  阅读次数:1739  字体大小:【小】【中】【大】当大家看到题目时也许会觉得很简单,用J-LINK来烧写程序到NANDFLASH很简单,我想说的是,如果是学习,那么就应该不光要知其然,更要知其所以然。如果你是老手,建议就不要看下去了,因为这块你已经熟悉的不能再熟悉了,而对于新手来说的确很有用。注:所使用的开发环境为KeilMDK3.50,需要了解的部分有Bootloader,分散加载    一工作任务    1、向S3C24

2、40NANDFLASH烧写程序      这点对ARM入门的人来说都不是件难事。先说说我的硬件配置吧,64MNANDFLASH,64MSDRAM,2MNORFLASH。当程序下载到NANDFLASH时,系统上电运行后由NANDFLASH的控制器把前4K程序拷贝到SRAM来运行。如果程序大于4K,那么仅仅把程序下载到NANDFLASH中是不能完全运行的,这是因为程序不能在NANDFLASH中运行,必须利用SRAM把程序从NANDFLASH搬移到SDRAM中,搬移过程完成后再把PC指向SDRAM中的程序所放置的起始位

3、置,此时bootloader的使命才算完成。      2、Bootloader的编写要实现上述功能,必须编写一个小于4K的启动或者Bootloader程序。在Bootloader中应包含有中断向量表,异常向量表,时钟初始化,SDRAM初始化,GPIO及堆栈初始化等工作,另外还要有相应的代码将程序从NANDFLASH搬移到SDRAM的功能。      3、程序下载虽然实现了Bootloader,也将其下载到了NANDFLASH中,也可以将程序从NANDFLASH搬移到SDRAM中,并且将PC交给SDRAM的程序首

4、地址处,但程序并不能正确运行。为什么呢?这是因为下载到NANDFLASH的可执行程序中包含有绝对地址,尽管程序从NANDFLASH搬移到了SDRAM中,但当运行到绝对地址是,程序就会跑飞,从而不能正确运行。那么如何解决这个情况呢?有一个办法:先将程序基于SDRAM的地址编译好,然后下载到NANDFLASH中,再通过Bootloader将程序搬回到SDRAM中,这样所有的地址都是相对于SDRAM的了,程序可以正确运行。但遗憾的是,MDK实现不了这种方法,因为MDK生成的*.axf文件带有地址信息。使用分散加载文件生

5、成的映像文件是基于某一地址,由必须下载到FLASH的相应地址,如果要基于SDRAM某一地址编译生成的*.axf文件下载到NANDFLASH时,MDK会提示出错,找不到烧写算法。如果不生成带地址信息的文件,就可以解决这个问题。在MDK下不能直接生成bin,要在RunUserProgramsAfterBuild/Rebuild框中的Run#1后面的文本中输入C:KeilARMBIN31fromelf.exe–bin–o./output/Axf_To_Bin.bin./output/Axf_To_Bin.axf

6、命令转化成bin格式的文件。然后将bin下载到SDRAM中,再搬移到NANKFLASH中,剩下的就由bootloader来完成了,整个过程虽然比较麻烦,但是MDK下最有效的方法。二实现过程(1)Bootloader主要是进行一些硬件初始化,以及将程序从NAND搬移到SDRAM中。Bootloader程序的编译比较简单,在Target页配置一下RO和RW的读写域,设置ROM1起始地址为0,大小为0x1000,在RAM1设置起始地址为0x30800000,因为bootloader要把程序搬移到0x30000000处运

7、行,为了避免用户程序将bootloader的RW段覆盖,故先留下足够的空间来存放用户程序。程序可以用USB下载到SDRAM中,这里要说明一下,用户程序要用到分散加载文件,即起始地址为0x30000000,下面介绍一下bootloader的烧写过程:1.JPGFLASH的下载方式我不再说了,如果手头有J-LINK可以使用,如果没有也可以使用JTAG小板下载,也可以用MDK来下载都行,总之能下载到NANDFLASH中就行。这一步是前提。(2)USB下载实现可以使用dnw软件来下载,非常方便,要注意的是,用户自己写的程

8、序中要加入一段到NANDFLASH的write函数,实现将文件从SDRAM到flash的搬移功能。  l编译例程生成.bin文件  用户程序中要使用分散加载文件,如下:LR_ROM10x30000000{;loadregionER_ROM10x300000000x0800000{;loadaddress=executionaddress*.o(RESET,+First)*

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。