cortex-a8 uboot系列:第十章 uboot启动总结

发布者:中原读书客最新更新时间:2021-02-23 来源: eefocus关键字:cortex-a8 手机看文章 扫描二维码
随时随地手机看文章

一、uboot启动第2阶段总结

第二阶段主要是对开发板板级的硬件、软件数据结构进行初始化。

 

第一步:为gd,bd分配内存空间

 

第二步:循环执行init_sequence里的初始化函数

init_sequence:

         cpu_init:   空函数

         board_init: 网卡、机器码、内核传参内存地址

dm9000_pre_init     SOC内部SROM控制器初始化,因为和外部网卡DM9000的通信使用的是SROM接口,所以要对这个SROM控制器进行初始化

         interrupt_init: pwm timer4 定时10ms

         env_init:    

         init_baudrate: gd数据结构中波特率

         serial_init: 空的

         console_init_f:  空的

         display_banner: 打印启动信息

         print_cpuinfo:  打印CPU的时钟设置信息

         checkboard:    打印开发板名字

         dram_init:     gd数据结构中DDR信息

         display_dram_config:  打印DDR配置信息表

 

第三步:初始化uboot堆内存管理器

mem_malloc_init

 

第四步:soc的SD/MMC控制器初始化和外部SD/MMC卡的初始化

mmc_initialize

         INIT_LIST_HEAD:  设置SD/MMC设备链表

         cpu_mmc_init:   对SD/MMC控制器初始化

                   setup_hsmmc_clock:   时钟设置

                   setup_hsmmc_cfg_gpio: GPIO设置

                   smdk_s3c_hsmmc_init: SD/MMC管理的数据结构的设置

smdk_s3c_hsmmc_init:  从SD/MMC设备链表中找到要初始化的SD/MMC设备

mmc_init:  外部SD/MMC卡的初始化,发不同的命令,读取对应的响应,使之从idle状态跳转到工作状态,同时读取卡的信息。

 

第五步:环境变量重定位,将SD卡中的环境变量读到内存中

env_relocate

 

第六步:设定IP地址

gd->bd->bi_ip_addr = getenv_IPaddr ("ipaddr");

 

第七步:设定板子的网卡物理地址

gd->bd->bi_enetaddr

 

第八步:其他设备的初始化,之前没有进行过初始化的设备要进行初始化。

devices_init

 

第九步:跳转表设置,uboot中没有使用

jumptable_init

 

第十步:控制台第二阶段初始化

console_init_r

 

第十一步:中断使能,uboot中没有使用中断,所以该函数是空的。

enable_interrupts

 

第十二步:设置两个全局变量load_addr和copy_filename

 

第十三步:开发板最后一级初始化,要在最后时刻初始化的东西在这里进行初始化

board_late_init     x210中该函数为空

 

第十四步:网卡初始化,

eth_initialize, 网卡初始化在之前的board_init已经实现,因此这里函数为空。

 

第十五步:LCD初始化合显示logo

x210_preboot_init

 

第十六步:检查自动更新,实现量产烧录功能

check_menu_update_from_sd

update_all

 

第十七步:uboot主循环

main_loop


二、启动结果特征总结

1.第一阶段为汇编阶段、第二阶段为C阶段

第一阶段首先是start.S, 然后调用lowlevel.S, 最后调用start_armbooot.c,进入第二阶段

2.第一阶段在SRAM中、第二阶段在DRAM中

3.第一阶段注重soc内部、第二阶段注重soc外部board内部


三、移植时的注意点

1.x210_sd.h头文件中的宏定义

宏定义会影响程序编译的走向,因此要对这个头文件要了解,很多时候只需要修改头文件,而不需要修改代码。

 

2.特定硬件的初始化函数位置

要对硬件的初始化函数的位置要了解,这样才能当硬件驱动不正常的时候,才知道去哪里查程序问题。


关键字:cortex-a8 引用地址:cortex-a8 uboot系列:第十章 uboot启动总结

上一篇:cortex-a8 uboot系列:第十一章 uboot源码分析 uboot如何启动内核1
下一篇:cortex-a8 uboot系列:第九章 uboot源码分析5-启动第二阶段

推荐阅读最新更新时间:2024-11-13 12:21

cortex-a8 S5PC100中断机制
1.向量中断概述 S5PC100集成了3个向量中断控制器(后文用VIC来表示),采用的是ARM基于PrimeCell技术下的PL192核心,另外还包括了3个TZIC,即针对于TrustZone技术所涉及的中断控制器(后文都用TZIC表示),其核心为SP890。 S5PC100下支持94个中断源,其中TZIC为TrustZone单独设计以了一个安全软件中断接口,它提供了基于安全控制技术的nFIQ中断以及屏蔽来自非安全系统下的所有中断源。以下是S5PC100中断控制器的特点: ●支持94个向量IRQ中断 ●灵活的硬件中断优先级 ●可编程的中断优先级设置 ●支持硬件上的优先级屏蔽 ●支持编程上的优先级屏蔽 ●内置IRQ/
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved