crt0.s 分析

ENTRY(_main)

/*
 * Set up initial C runtime environment and call board_init_f(0).
 */

#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK)
ldr sp, =(CONFIG_SPL_STACK)
#else
ldr sp, =(CONFIG_SYS_INIT_SP_ADDR)
#endif
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
sub sp, sp, #GD_SIZE /* allocate one GD above SP */
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
mov r9, sp /* GD is above SP */
mov r0, #0
    /* 以上代码都是为board_init_f函数准备堆栈空间和gd空间,都在iram中 */
bl board_init_f /*  */
    /* 此时gd空间被初始化了 */
#if ! defined(CONFIG_SPL_BUILD)

/*
 * Set up intermediate environment (new sp and gd) and call
 * relocate_code(addr_moni). Trick here is that we'll return
 * 'here' but relocated.
 */
    /* 初始化sp堆栈 *//* 为relcate, 等函数装备运行环境。 */
ldr sp, [r9, #GD_START_ADDR_SP] /* sp = gd->start_addr_sp */
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
    /* [r9, #GD_BD]就是gd->bd, r9保存的是gd */
ldr r9, [r9, #GD_BD] /* r9 = gd->bd */
sub r9, r9, #GD_SIZE /* new GD is below bd */


adr lr, here    
ldr r0, [r9, #GD_RELOC_OFF] /* r0 = gd->reloc_off */
add lr, lr, r0  /* here加 gd->reloc_off,就是要返回的地址(代码重定位后执行)*/
ldr r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
b relocate_code /* 把自己从*(nand)拷贝到dram,返回后here是拷贝到dram中的here。 */
    /* 在此之前的代码都是在iram中执行的。 */
here:
    /* 此后代码在dram中执行了 */
/* Set up final (full) environment */
bl c_runtime_cpu_setup /* we still call old routine here */
ldr r0, =__bss_start /* this is auto-relocated! */
ldr r1, =__bss_end /* this is auto-relocated! */

mov r2, #0x00000000 /* prepare zero to clear BSS */

clbss_l:cmp r0, r1 /* while not at end of BSS */
strlo r2, [r0] /* clear 32-bit BSS word */
addlo r0, r0, #4 /* move to next */
blo clbss_l

bl coloured_LED_init
bl red_led_on

/* call board_init_r(gd_t *id, ulong dest_addr) */
mov     r0, r9                  /* gd_t */
ldr r1, [r9, #GD_RELOCADDR] /* dest_addr */
/* call board_init_r */
ldr pc, =board_init_r /* this is auto-relocated! */

/* we should not return here. */
#endif


ENDPROC(_main)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
液晶显示器(LCD)和阴极射线管显示器(CRT)都有各自的优点和缺点。 LCD的优点包括响应时间快(最快为2-4毫秒),体积小,重量轻,占用空间少。此外,LCD还可以提供更高的分辨率,更广的可视角度和更低的功耗。然而,LCD也存在一些缺点。例如,背光原理导致LCD不能完全呈现真正的黑色,而且在处理快速移动图像时可能会出现模糊或拖影。 相比之下,CRT显示器是天然的低余晖显示,可以完全呈现真正的黑色。此外,CRT显示器在处理快速移动图像时通常具有较低的模糊度和拖影。然而,CRT显示器的缺点包括体积大,重量重,尺寸受限,以及对较高分辨率的支持有限。随着电子科技的发展,对移动显示的需求增加,CRT的先天限制使得其在小型化和行动化方面受到阻碍。 因此,选择LCD还是CRT显示器取决于具体的需求和偏好。如果需要更小的体积、较高的分辨率和较低的功耗,那么LCD可能是更好的选择。如果需要更高的视觉质量和对真正黑色的要求较高,那么CRT可能更合适。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [分析AMOLED与TFT-LCD的优缺点](https://download.csdn.net/download/weixin_38651165/12601011)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [LCD基础及S3C2410 LCD控制器](https://download.csdn.net/download/weixin_38746442/12704782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值