- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Mini启动代码的编写
Mini2440启动代码的编写
Embedded hot tag
ARM 开发 Vxworks 嵌入式 linux WinCE
Mini2440启动代码的编写
启动代码是系统上电或复位以后运行的第一段代码,它的作用是在用户程序运行之前对系统硬件及软件运行环境进行必要的初始化并在最后使程序跳转到用户程序,它直接面对ARM处理器内核及硬件控制器进行编程,所执行的操作与具体的目标系统紧密相关。
因为启动代码与目标系统紧密相连,所以在讲述Mini2440开发板的启动代码之前让我们先来了解一下它的启动方式。
S3C2440支持两种方式的启动:Nor Flash启动和Nand Flash启动。Nor Flash和Nand Flash都是非易失性存储器,Nor Flash的特点是芯片内执行,程序可以直接在其中运行,而不必将程序读取到RAM中运行。Nor Flash虽然具有这个优点,但是它的性价比远低于Nand Flash,因而很多系统采用Nand Flash启动。Nand Flash的特点是采用非线性存储模式,程序无法在其中运行,它只能作为程序或数据的存储载体,存储在其中的程序只能先拷贝到RAM中才能运行。
从Nor Flash启动时,与nGCS0相连的Nor Flash就被映射到nGCS0片选的空间,其地址被映射为0从Nand Flash启动时,S3C2440芯片内部自带的一块容量为4K的被称为“Steppingstone”(“起步阶石”)的BootSRAM被映射到nGCS0片选的空间,其地址被映射为0当系统上电或复位时,程序会从0地址处开始执行,因此我们编写的启动代码要确保存储在0地址处。
当启动方式为Nor Flash启动时,没有额外需要考虑的问题,因为这种情况下程序在系统启动前就存储在Nor Flash中,我们只要保证将启动代码保存在Nor Flash开始的位置即可,系统上电或复位时,0地址处的启动代码就会被执行。
在启动方式为Nand Flash启动的情况下,系统启动前所有的程序存储在Nand Flash中,系统的启动过程稍微有点复杂:系统上电或复位时,0地址处为S3C2440内部自带的BootSRAM,启动前里面没有任何存储内容,启动后S3C2440先通过硬件机制将Nand Flash前4K的内容拷贝至其中,然后再运行里面的程序(从0地址处)。这种情况下我们需要保证将启动代码保存在Nand Flash开始的位置,并且启动代码的大小要小于4K。如果系统的所有程序在编译链接后的大小小于4K,那在系统的启动代码中无需考虑将程序从Nand Flash搬运到SDRAM这个问题,因为所有的程序在启动时即全部由Nand Flash拷贝至BootSRAM,程序在BootSRAM中运行即可;如果系统的所有程序在编译连接后的大小大于4K,那在系统的启动代码中需要包含一段将系统的全部程序从Nand Flash搬运到SDRAM的代码,因为系统启动时只将Nand Flash的前4K拷贝到了BootSRAM中,还有部分程序保存在Nand Flash中, Nand Flash中是无法运行程序的,需要将所有程序拷贝至SDRAM并在其中运行,所以在系统的启动代码中要包含这段有关程序拷贝的代码,并在所有程序拷贝完成后使程序跳转到SDRAM中运行。也就是说在启动方式为Nand Flash启动的情况下,因为Nand Flash的特性,程序需要涉及到两次的搬移,一次是从Nand Flash搬移到BootSRAM,搬运的程序量大小是4K,目的是使系统能够启动;第二次搬运是从Nand Flash搬运到系统的SDRAM,如果系统的所有程序量小于4K,这一步可以省略,搬运的程序量大小是系统的所有程序,目的是使程序在SDRAM中运行。第一次搬运是S3C2440通过硬件机制自动实现的,我们无需干预,第二次则需要我们程序员来实现,这部分在下面的有关内容中会详细讲解。
Mini2440开发板带有两种FLASH:2M的 Nor Flash和128M的Nand Flash。按照开发板的设计目的以及很多实际的应用,系统一般选择从Nand FLASH启动,此文档讲解的内容也是基于Nand FLASH启动的,但厂家为了方便大家学习还是保留了Nor Flash,我们也可以将启动代码烧写至Nor Flash,并从中启动。两种启动方式的启动代码稍有不同,不同点主要在上述的第二次程序拷贝。启动方式可通过拨键开关S2来选择。
通过上述讲解我们简单了解了S3C2440的启动过程,现在就来讲述一下启动代码的编写过程。启动代码是面向ARM处理器内核和硬件控制器的,所以它的绝大部分都是通过汇编语言实现的。
一.启动代码的功能与实现
启动代码主要是在主程序运行之
文档评论(0)