UBOOT之board.c分析(四)

/************使能中断**********************/
enable_interrupts ();

enable_interrupts 函数在lib_arm/interrupts.c中定义:
/* enable IRQ interrupts */
void enable_interrupts (void)
{
unsigned long temp;
__asm__ __volatile__("mrs %0, cpsr\n"
     "bic %0, %0, #0x80\n"
     "msr cpsr_c, %0"
     : "=r" (temp)
     :
     : "memory");
}
上面的函数使用一段内嵌汇编代码将CPSR寄存器中的禁止/使能中断位清零,也就是打开了中断。

if ((s = getenv ("loadaddr")) != NULL) {         //获得环境变量load_addr的值
    load_addr = simple_strtoul (s, NULL, 16);    
}


/******************网络初始化*********************************/
#if defined(CONFIG_CMD_NET)
#if defined(CONFIG_NET_MULTI)
puts ("Net:   ");                                 //打印网卡信息,就是UBOOT刚上电时打印的那个Net:   
#endif
eth_initialize(gd->bd);                     //初始化网卡

/****************跳转到main_loop**************************************/

for (;;) {
    main_loop ();
}

你可能感兴趣的:(ARM,uboot,u-boot,arm处理器,微处理器)