DM365的UBL源码分析.docVIP

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

DM365的UBL源码分析 DM365是的启动方式有两种,通过BOOTSEL[2:0]引脚决定。当其为001时,直接从AEMIF上启 动,比如NOR和OneNAND。除此之外皆是从RBL启动,顺序为RBL-UBL-UBOOT-KERNEL,比如NAND,串口,SD卡等。RBL会 搜寻block1到block24去找UBL,关于RBL启动的详细细节可以参考用户指南关于ARM子系统的那篇文档,很详尽,下面只分析UBL的源码。 UBL源码在PSP包里的board_utilities\flash_utils目录下,主要是COMMON目录和各子平台的目录如DM36x等,内中除了UBL的源码外还有CCS下JTAG的擦除烧写源码,串口烧写源码等。下面只分析UBL的启动代码。 入门代码是汇编文件start.S,主要是切换操作模式,建立堆栈等,然后跳转到main函数,进入到Common\ubl\src目录下的C文件ubl.c中。main函数如下: // Main entry point void main(void) { // Call to real boot function code LOCAL_boot(); // Jump to entry point DEBUG_printString(\r\nJumping to entry point at ); DEBUG_printHexInt(gEntryPoint); DEBUG_printString(.\r\n); APPEntry = (void (*)(void)) gEntryPoint; (*APPEntry)(); } main函数主要调用了LOCAL_boot函数来进行实质的引导功能,下面是此函数的内容: static Uint32 LOCAL_boot(void) { DEVICE_BootMode bootMode; // Read boot mode bootMode = DEVICE_bootMode(); if (bootMode == DEVICE_BOOTMODE_UART) { // Wait until the RBL is done using the UART. while((UART0-LSR 0x40) == 0 ); } // Platform Initialization if ( DEVICE_init() != E_PASS ) { DEBUG_printString(devString); DEBUG_printString( initialization failed!\r\n); asm( MOV PC, #0); } else { DEBUG_printString(devString); DEBUG_printString( initialization passed!\r\n); } // Set RAM pointer to beginning of RAM space UTIL_setCurrMemPtr(0); // Send some information to host DEBUG_printString(TI UBL Version: ); DEBUG_printString(UBL_VERSION_STRING); DEBUG_printString(\r\nBooting Catalog Boot Loader\r\nBootMode = ); // Select Boot Mode #if defined(UBL_NAND) { //Report Bootmode to host DEBUG_printString(NAND\r\n); // Copy binary image application from NAND to RAM if (NANDBOOT_copy() != E_PASS) { DEBUG_printString(NAND Boot failed.\r\n)

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档