菜鸟的cubieboard之旅(一)--启动流程
来源:互联网 发布:淘宝不给发票怎么办 编辑:程序博客网 时间:2024/05/06 03:34
到手一块cubieboard2,一直没怎么玩过。之前做过一些linux的驱动,但是感觉整体把握不是很好,想借cubieboard这个学习机会,让自己知识面全面点。
cubieboard的资料比较杂,而且资料没有树莓派这么多,所以找资料这个过程还是比较痛苦的。废话不多说,开始吧
先从总体上了解下cb2的启动过程,对整体有个了解,参考http://mer.jolladev.net/wiki.php?id=%E5%90%AF%E5%8A%A8cubieboard2%E5%88%B0linux_kernel
A20的启动过程大概可分为5步:Boot ROM,SPL,Uboot,Kernel,RootFileSystem。系统上电后,ARM处理器在复位时从地址0x000000开始执行指令,把板上ROM或Flash映射到这一地址。A20将启动设备选择程序固化在CPU内部的一个32KB ROM中,默认的启动时序为SD Card0,NAND FLASH,SD Card2,SPI NOR FLASH。另外通过外部的一个启动选择引脚可以使其跳转到USB启动模式。通常情况下,启动选择引脚状态连接50K内部上拉电阻。在上电后,执行存储在Boot ROM中的启动代码,将自动检测启动选择引脚状态。只有当该引脚状态为低电平时才选择USB启动模式。
在选择启动设备后将加载并执行bootloader程序,CPU通过拷贝或映射bootloader程序到内存,然后执行bootloader的第一条指令。通过阅读官方的uboot烧写方法,发现A20通过uboot引导系统之前先载入了uboot SPL。什么是SPL?通过查阅uboot的官网资料得知,SPL是一个迷你版的uboot,全拼为Second Program Loader。适用于SOC的内部SRAM<64K的情况,用它来加载完整的uboot程序到SDRAM,并通过完整uboot加载内核来启动系统。其中SRAM一般指CPU内部的L1/L2或外部的L2高速缓存,这里即为Boot ROM,而SDRAM一般指内存。
SPL程序流程如下:
- 初始化ARM处理器
- 初始化串口控制台
- 配置时钟和最基础的分频
- 初始化SDRAM
- 配置引脚多路复用功能
- 启动设备初始化(即上面选择的启动设备)
- 加载完整的uboot程序并转交控制权
启动设备选择程序的流程图:
搞清楚了上面的概念,可以知道Cubieboard出厂已经烧写了NandFlash中的程序,即在启动时使用的是NandFlash。现在根据全志A20上述步骤,我们尝试用SD Card0(即Cubieboard上卡槽中的TF卡)来启动系统。
- 菜鸟的cubieboard之旅(一)--启动流程
- 菜鸟的cubieboard之旅(二)-SD卡镜像制作
- 菜鸟的cubieboard之旅-SD卡镜像制作
- 菜鸟的Android之旅(一)
- cubieboard 之SPI的使用
- Java程序员从笨鸟到菜鸟之(一)流程控制
- Android之init启动流程(一)
- SystemServer启动流程之Zygote启动(一)
- 菜鸟python教程,菜鸟的python之路(一)
- 菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程
- 菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程
- Linux的启动流程(一)
- Launcher3的启动流程(一)
- Launcher3的启动流程(一)
- Bootloader的启动流程(一)
- Android PackageManagerService流程详细分析(一)之启动
- Activity启动流程源码分析之入门(一)
- Service启动流程源码分析之startService(一)
- 【C语言】关于switch语句的记录
- wordpress函数调用手册大全[仿站必备]
- sql删除重复数据
- MSWORD.OLB未正确注册导致问题现象及解决方法
- java字符转码
- 菜鸟的cubieboard之旅(一)--启动流程
- hwclock
- 让apmserv5.2.6支持worpdress伪静态的设置
- xp系统以Administrator管理员登陆
- Maven四个常用命令
- 测试apache是否支持htaccess规则
- C#多线程学习(四) 多线程的自动管理(线程池)
- CentOS-6.5-x86_64-bin-DVD1.iso在虚拟机里安装时的注意事项
- 2014 新年 ,工作回忆,新年任务