博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
u-boot移植启动流程详细分析(2)
阅读量:4297 次
发布时间:2019-05-27

本文共 1055 字,大约阅读时间需要 3 分钟。

学习底层的东西,首要的就是去了解他的架构,整体的思路知道了,就会在出现问题的时候有很清晰的思路,知道哪里出的问题,以及程序是如何执行的,相信做到上面的,所遇到的问题,大都会迎刃而解了吧,高手是有很多的,所谓的高手,不过也就那样吧,努力努力也是可以赶超的。

之前,介绍了u-boot的第一阶段的启动流程,那么接下来就来说说第二阶段的具体执行流程:

(1)初始化gloabl data和board data,这里所谓的初始化就是给他们分配一块内存空间。

(2)初始化序列(init_sequence)

在初始化的序列当中包括有:

设置系统时钟操作函数 arch_cpu_init

设置开发板的机器码 board_init

初始化定时器 timer_init

初始化环境变量 env_init

初始化波特率 init_boudrate

初始化串口 serial_init

控制台设备一级初始化 console_init

打印u-boot的版本编译时间 disoplay_banner

打印cpu类型和当前的运行频率 print_cpuinfo

打印开发板的名称 checkboard

配置可用的内存 dream_init

显示当前的内存大小 display_dram_config

(3)NAND Flash 初始化 nand_init

(4)读取NAND Flash 的环境变量,然后做CRC校验,如果错误,则使用默认的环境变量,如果正确则使用从 NAND Flash中读取的环境变量

(5)从环境变量中获得板子的ip地址

(6)初始化输入输出设备stdio_init

(7)初始化控制台,默认用串口作为控制台设备

(8)使能IRQ异常,enable——interrupts()

( 9) 初始化网卡设备,eth_initialize(gd->bd)

(10)进入main_loop()中开始判断是否设置了环境变量bootdelay和bootcmd两个参数,如果已经设置过了的话,

再判断在bootdelay的时间内串口是否有输入,如果没有的话则执行bootcmd所设置的接下来的命令,如果

两个参数没有设置过,则循环读取串口中所输入的命令,然后去执行。

以上就是整个第二阶段的内容了,接下来的几天里我会陆续的总结一下关于u-boot移植的具体操作,以及NAND Flash 的相关介绍,学习的过程总是需要把心放下来,然后专注的去体会你所认知的一些事物,每件事情都是这样,只有我们认真的去对待,才会得到应有的回报。

转载地址:http://qbjws.baihongyu.com/

你可能感兴趣的文章
VC中基于Windows的精确定时
查看>>
Windows 文件、目录操作编程 常用API
查看>>
实例解说 双缓冲
查看>>
使用zlib库里的compress函数与uncompress函数
查看>>
文件类型及相关打开程序的注册
查看>>
SQLite简介
查看>>
VC连接SQLite3的方法(MFC封装类)
查看>>
VC 编译 设置 代码合集
查看>>
最重要的前提是,你必须找到自我心中最为
查看>>
C/C++ 开源库及示例代码
查看>>
环形缓冲区-公式
查看>>
使 VC2013 编写的程序运行在其它电脑上
查看>>
使用Visual Leak Detect or 检测c/ c++ 程序内存泄漏
查看>>
精确延时的实现
查看>>
语料编程空手道:从 VBA,到 VBS,到 HTA
查看>>
通过代码实现---Switch Ribbon Category
查看>>
一点点想法,扪心自问,对吗?
查看>>
CTabCtrl
查看>>
C++开发者都应该使用的10个C++11特性
查看>>
lambda
查看>>