- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
U-Boot從NAND_Flash启动的实现
U-Boot从NAND Flash启动的实现时间:2010-08-05 08:53:38 来源:电子设计工程 作者:王 磊 太原理工大学摘要:U-Boot不能从NAND Flash启动给应用带来些不便,因此修改U-Boot使其支持从NAND Flash启动。分析了U-Boot启动流程的两个阶段及实现从NAND Flash启动的原理和思路,并根据NAND Flash的物理结构和存储特点,增加U-Boot对NAND Flash的操作支持,从而完成把存储在NAND Flash上的U-Boot代码复制到SDRAM中执行,实现从NAND Flash的启动。修改过后的U-Boot可以直接从NAND Flash启动,给应用带来便利。关键词:U-Boot;NAND Flash;Boofloader;S3C2440;移植 Bootloader引导装载程序是系统上电后运行的第一段程序,其作用是完成基本的硬件初始化工作,所以引导装载程序跟硬件有着紧密的联系。因此必须根据开发板的硬件配置对引导装载程序进行修改才可以使其运行起来。随着嵌入式系统的复杂化,大容量数据存储的NAND Flash的应用会越来越广泛,同时U-Boot是功能最丰富的Bootloader,但遗憾的是U-Boot不支持从NAND Flash启动。所以如果能实现U-Boot从NAND Flash启动的话将会给应用带来很大的方便。本文讨论修改U-Boot使其支持从NAND Flash启动.采用基于S3C2440的开发板。1 U-Boot简介及流程分析 U-Boot,全称universal boot loader,是遵循GPL条款的开放源代码项目。可以引导多种操作系统,支持多种架构的CPU。它支持如下操作系统:Linux、NetBSD、VxWorks等,支持如下架构的CPU:PowerPC、MIPS、X86、ARM、NIOS、XSeale等,同时支持NFS挂载,是一个功能丰富的BootLoader。它的整个程序框架清晰,易于移植,许多设计人员将自己的移植代码上传到网站(http://sourceforge.net/project-s/u-boot/) 上,更新速度很快。目前的版本是1.1.6,本论文正是采用此版本进行说明,U-Boot的目录结构参见U-Boot源代码。 要进行U-Boot的修改移植必须了解U-Boot的程序运行流程,这是必要的一步。U-Boot属于两阶段的BootLoader,其启动流程如图l所示。第一阶段的文件为cpu/arm920t/start.S和board/smdk2410/lowlevel_init.S,用ARM汇编语言编写,前者是平台相关的,后者是开发板相关的。第一阶段主要是关于基本硬件的初始化,包括关闭MMU、CACHE、设置PLL时钟比例、关闭看门狗;初始化SDRAM,为复制第二阶段代码做准备,最后复制第二阶段代码到SDRAM中,然后跳到SDRAM中运行第二阶段。第二阶段代码都是用C语言编写的,功能更加复杂。主要是进一步初始化硬件设备、检测内存映射、复制内核镜像和根文件系统到SDRAM以及设置启动参数从而启动内核。2 支持NAND启动的代码修改2.1 添加NAND Hash的初始化函数 U-Boot中关于NAND Hash的初始化流程如下:在上电后最先运行的汇编程序cpu\arm920t\start.S中调用start_armboot函数,而start_armboot该函数则调用了一系列的关于设备的初始化函数。这一系列的函数中包含一个名为nand_init的函数,nand_init就是完成NAND Ha-sh的初始化工作。 在1.1.6版本的U-Boot的include\linux\mtd\nand.h中定义了nand_chip结构体,该结构体中定义了关于NAND Hash操作的所有函数,包括读、写、ECC校验等,而这些函数在U-Boot中都有完整编写,只是有些个别函数需要根据自己的要求重新编写。而实现NAND Flash初始化的nand_init函数主要任务就是完成这些需要重新编写的函数和用这些函数连同U-Boot中其他默认函数来初始化nand_chip结构体。nand_init中的board_nand_init函数在U-Boot中并未实现,显然需要重新编写的函数就在其内添加。 先在cpu\arm920t\s3c24x0中添加nand.c文件,然后在该文件中实现所需要的初始化函数。一般只需要重新编写nand_chip结构体中相对应的hweontrol、dev_ready和select_chip函数。这些函数的构建可参照linux内核2.6版本里的drivers\mtd\nand\s3e2410.c文件来进行编写,如内核文件中的s3c2440_nand_hw
您可能关注的文档
- TP-LINK的11N與11N桥接方法.doc
- TP-LINK路由器TL-R402設置方法.doc
- TP-Link路由器安裝设置完整教程(图文).doc
- tp7中級教材.doc
- TP92焊接工藝方案设计-.doc
- TP315安裝作业指导书.doc
- TPEGP高頻系列实验指导书(修订版2).doc
- TPMS技術学习指导手册.doc
- TPM考試复习资料.doc
- TOYOTA戰略管理案例分析.doc
- 专题06 经济体制(我国的社会主义市场经济体制)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题11 世界多极化与经济全球化-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 专题03 经济发展与社会进步-5年(2020-2024)高考1年模拟政治真题分类汇编(浙江专用)(解析版).docx
- 专题09 文化传承与文化创新-5年(2020-2024)高考1年模拟政治真题分类汇编(北京专用)(原卷版).docx
- 5年(2020-2024)高考政治真题分类汇编专题08 社会进步(我国的个人收入分配与社会保障)(原卷版).docx
- 专题07 探索世界与把握规律-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 5年(2020-2024)高考政治真题分类汇编专题06 经济体制(我国的社会主义市场经济体制)(原卷版).docx
- 专题11 全面依法治国(治国理政的基本方式、法治中国建设、全面推进依法治国的基本要求)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题17 区域联系与区域协调发展-【好题汇编】十年(2015-2024)高考地理真题分类汇编(解析版).docx
- 专题01 中国特色社会主义-5年(2020-2024)高考1年模拟政治真题分类汇编(原卷版).docx
最近下载
- 高同型半胱氨酸血症的诊断、治疗与预防专家共识.docx VIP
- 人教版高中英语必修第二册《UNIT 3 THE INTERNET》大单元整体教学设计.pdf
- 微型消防站工作职责(标准版).docx VIP
- 呼唤-快车上玩家地图1 plmap演示版.pdf
- 德邦零担业务诊断及新产品开发项目建议书-2014.pptx VIP
- 人教版高中英语必修第二册《UNIT 4 HISTORY AND TRADITIONS》大单元整体教学设计.docx
- 高同型半胱氨酸血症的诊断、治疗与预防.pptx VIP
- 附件2:汽车专访.pdf VIP
- 2024年食品安全生产经营大比武理论考试题库资料-下(多选、判断题汇总).pdf
- 快车上的恐怖旅行手册.pdf
文档评论(0)