AT91SAM9260的启动过程详细解说.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AT91SAM9260的启动过程详细解说,天蓬元帅的详细解说,天葬礼过程解说图片,女子名器详细图文解说,水葬礼过程解说图片,bugmf详细解说,太极图详细解说,2015款k5详细解说,9.3阅兵详细解说,电话机电路详细解说

Bootstrap的启动过程 说明: Bootstrap启动代码是官方提供的一级启动代码,包括汇编和C语言两部分组成。对AT91SAM9260来说编译完成后,代码长度必须小于4KB,烧写到dataflash中的0 二、系统上电准备Bootstrap启动。 当系统启动选择片内启动(BMS=1)时,程序上电后,启动内部ROM的的固化程序,自动将检测dataflash中前48个字节的数据,如果数据正确,说明是Bootstrap启动代码。这时候系统自动将存在flashdta中的Bootstrap启动代码搬到SRAM0中去,接下来就进行存储器的REMAP,经过remap后,SRAM0从映射前的0x200000地址被映射到了0x000000地址并且程序从此处开始执行。 三、Bootstrap汇编启动过程 1、建立中断向量表。 2、设置堆栈SP的值。 3、主晶振使能为主时钟。 4、数据段的拷贝。 5、对零初始化的数据进行初始化。 6,跳转到C语言main函数。 四、BootstrapC语言初始化过程 1、关闭看门狗。 writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDTC + WDTC_WDMR); 2、配置PLLA时钟 pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); 3、配置MCK时钟 pmc_cfg_mck(MCKR_SETTINGS, PLL_LOCK_TIMEOUT); 4、配置PLLB时钟 pmc_cfg_pllb(PLLB_SETTINGS, PLL_LOCK_TIMEOUT); 5、配置CP15协处理器 6、配置PIO控制器 pio_setup(hw_pio); 7、配置外部总线接口EBI writel((readl((AT91C_BASE_MATRIX+MATRIX_SCFG3))~0xFF)|0x40,(AT91C_BASE_MATRIX+MATRIX_SCFG3)); 8、初始化总线矩阵。 writel(readl(AT91C_BASE_CCFG + CCFG_EBICSA) | AT91C_EBI_CS1A_SDRAMC, AT91C_BASE_CCFG + CCFG_EBICSA); 9、配置SDRAM控制器 sdram_init(…….) 10、dataflash的SPI初始化 df_spi_init(pcs, DF_CS_SETTINGS); 11、dataflash的复原初始化 df_recovery(pDf); 12、将dataflash中以0x8400开始的连续0x80000字节的数据搬移到SDRAM中以0x23F00000为起始地址处。 df_download(pDf, img_addr, img_size, img_dest); 13、程序最后跳转到0x23F00000处在sdram中运行K2CMSTART程序代码。 注意:K2CMSTART程序代码是真正的要运行的程序,存在dataflash中以0x8400开始的连续0x80000字节。是我们自己要正真编写的程序。下面提到这程序中的函数变量都是以一个K2CMSTART程序例子来说的。 五、程序应用 该部分BOOT程序为系统的一级启动程序,完成最低层最基本的硬件初始化,为进入到上一级程序进行引导。 AT91sam9260上电后,启动内部ROM的的固化程序,按照dataflash、nandflash的顺序依次来找合法的BOOT程序。所谓合法的指的是在这些存储设备的开始地址处连续的存放的32个字节,也就是8条指令必须是跳转指令或者装载PC的指令,其实这样规定就是把这8条指令当作是异常向量表来处理。必须注意的是第6条指令要包含将要装载的映像的大小。一旦合法的映像找到之后,则固化程序会把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超过4K的大小。当固化程序完成了把合法的映像搬到SRAM的任务以后,接下来就进行存储器的REMAP,经过REMAP之后,SRAM从映设前的0X200000地址处被映设到了0X0地址并且程序从0X0处开始执行。 上电后,我们一般把存储在dataflash中的bootstrap 映像搬移到sram中,bootstrap 完成一些静态初始化工作, 如PMCS,PIOs,再把第二级的K2CMSTART引导程序从dataflash中搬移到sdram中运行。 虽然是BOOT程序,但由于受到内部4KB的SRAM的限制,程序不能实现太多功能,比如进行人机交互操作,查看系统内部某些数据,更新程序软件、更新数据等。当然在保证有足够的SRAM空间的前提下,增加一个串口,进行简单的输入输出信息查看还是可以的,但这也相

您可能关注的文档

文档评论(0)

zhiminwei + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档