uboot——初始化阶段
start.S
|-------------设置cpu状态
|--------------开cache
|--------------获得启动方式
|--------------------------------------lowlevel_init
| |---------------关看门狗
| |---------------PS_HOLD
| |---------------初始化时钟
| |---------------初始化DDR
| |---------------初始化uart 并打印 ok
|------------设置C栈
|------------重定向
|-----------开MMU
|------------设置栈
|------------清BSS
|-------------bl start_armboot
start.S 有两点重要:
(1)打印OK
(2)能获得物理和虚拟的内存地址和栈顶地址
start_armboot
|------------定义变量 gd
|------------init_sequence
| |-----------------board_init
| | |--------------初始化网卡,获得arh_number 和 内核传参基地址
| |-----------------interrupt_init
| | |--------------初始化PWM定时器
| |------------------env_init
| | |---------------定义环境变量
| |------------------init_baudrate
| | |---------------获得波特率
| |------------------display_banner
| | |---------------显示版本信息
| |------------------print_cpuinfo
| | |----------------显示cpu时钟信息
| |------------------dram_init
| | |-----------------记录DDR起始地址和大小
|-------------初始化堆
|-------------初始化存储介质
|-------------环境变量重定位
|-------------从环境变量中读取自己的IP地址和MAC地址
|-------------初始化控制台,中断
|-------------main_loop
这部分主要工作是初始化外设和完成软件层的初始化
main_loop
查找命令
find_cmd
根据输入的命令名称,遍历__u_boot_cmd_start 到 __u_boot_cmd_end 段,找到对应的cmd_tbl_t 定义。
执行命令
rcode = (cmdtp->cmd)
(cmdtp, flag,child->argc-i,&child->argv[i]);
前两个参数cmdtp flag没什么用
后两个参数为 该命令的 argc, argv
最新文章
- 60. Insert Interval &;&; Merge Intervals
- 使用Nginx负载均衡搭建高性能.NETweb应用程序一
- Java基础-字面值
- VS2010+OpenCV2.4.6永久性配置方法
- 20145227《Java程序设计》第1次实验报告
- 常见的XMLHttpRequest.status状态码
- GOOGLE 离线完整安装包下载地址
- sublime text3使用心得及个人配置 sublime常用快捷键大全
- PHP:错误 Deprecated: Function split() is deprecated in ... 解决办法
- Android 内核常见目录的作用
- CRM实施目标、需求、策略、厂商、流程等基本介绍全解
- java多线程(7)---Condition
- Git自学笔记
- 遇到的web请求错误码集合与解释
- enumerate()用法
- mac电脑使用,开发环境配置指南
- P4390 [BOI2007]Mokia 摩基亚(cdq分治)
- C/C++ 类成员函数指针 类成员数据指针
- python opencv 按一定间隔截取视频帧
- Python——getpass