bootload
奔跑的路
这个作者很懒,什么都没留下…
展开
-
arm汇编—bic ,orr
1. bicBIC指令的格式为:BIC{条件}{S} 目的寄存器,操作数1,操作数2BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器、被移位的寄存器、或一个立即数。操作数2为32位的掩码,如果在掩码中置了某一位1,则清除这一位。未设置的掩码位保持不变。bic r0,r0,#0x1f0x1f=11111原创 2014-12-05 15:52:16 · 22385 阅读 · 7 评论 -
堆栈的工作原理
声明:以下均为个人见解,错漏地方还请指正每一个使用c语言的都应该知道栈的重要性,我们能够使用C/C++语言写出诸多复杂的程序,很大功劳一部分有归于栈的实现,因为它可以帮助我们实现函数间的嵌套调用。汇编程序的运行是不需要栈的,所以注定它函数的嵌套层数不会太多,一般是父函数调用子函数,然后在子函数就返回了,很少见到子函数还会调用孙子函数的情况。这是由它的语言特性决定的。因为每当汇编语言原创 2015-10-29 21:52:39 · 21492 阅读 · 1 评论 -
(4.3)uboot详解——异常和异常向量
(4.3)uboot详解——异常和异常向量前面两节分析了外部中断和内部中断相关的内容,这篇文章对处理器的异常情况作一个总结。可以参考第二片文章(处理器工作模式),ARM处理器有七种工作模式,除了用户模式和系统模式以外,其他5中模式都是异常模式。人们都会生病,生病时我们可以依靠我们的免疫系统恢复过来,计算机也会“生病”,它“生病”的时候就会进入异常工作模式,依靠异常处理程序让cpu恢原创 2015-11-20 15:10:11 · 4387 阅读 · 3 评论 -
(5.1)uboot详解——时钟分频
(5)uboot详解——时钟分频如果cpu是计算机的大脑,电流是计算机的血液,那么时钟则是计算机的心脏,时钟频率决定了处理器运算的快慢,它的每一次“跳动”都驱动着处理器不停的执行命令。不同的是,人的各个部位心率是一样的,但计算机却有多个频率,而且每个部位可能有不同的频率,比如“大脑”有一个频率,“手“有一个频率,“脚”使用的是另外一个频率,这样就产生了两个问题:怎么产生这些不同的频率?处理器怎原创 2015-11-22 10:53:28 · 4460 阅读 · 0 评论 -
(4.2)uboot详解——外部中断(GPIO)
看ARM 处理器的芯片原理图,除了一些特殊的外接功能引脚外,GPIO引脚占了绝大部分。GPIO是General Purpose Input Output (通用输入/输出),外设都是连接到这些引脚上面的,所以可以简单的说,我们想让一个处理器实现什么样的功能,直接依赖于对GPIO寄存器的操作。原创 2015-11-13 09:01:02 · 4601 阅读 · 1 评论 -
ld命令和u-boot中的lds文件实例和简单实例分析
ld选项和lds文件==================================================================================0. Contents1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符号的赋值7. SECTIONS命令8. MEMORY命令9. PH转载 2015-11-02 10:17:49 · 1927 阅读 · 0 评论 -
普通lds文件分析
对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。先看一下 GNU官方网站上:http://www.gnu.org/对.lds文件形式的完整描述:SECTIONS {...secname start BLOCK(align)(NOLOAD) : AT ( ld转载 2015-11-02 11:07:30 · 3812 阅读 · 0 评论 -
(5.2)uboot详解——省电模式(番外)
(5.2)uboot详解——省电模式(番外)这篇文章将对uboot的省电模式进行分析原创 2015-11-27 10:19:45 · 2255 阅读 · 0 评论 -
(6)uboot详解——关闭缓存和mmu
uboot详解——关闭缓存和mmu当设置完时钟分频以后,uboot就会执行cpu_init_crit汇编函数,这个函数的主要作用就是关闭缓存和mmu,然后调用lowlevel_init函数进行系统总线的初始化。为什么启动的时候,需要关闭缓存和mmu呢?我们先了解一下他们的作用。缓存是主存(内存)和CPU通用寄存器之间设置的一个高速的、容量相对较小的存储器,把正在执行的指令地址附近的原创 2016-01-01 11:49:09 · 6272 阅读 · 0 评论 -
(7)uboot详解——初始化SDRAM
(7)uboot详解——初始化SDRAM在开始这篇文章之前,我们先回顾一下(1)uboot详解——板子刚上电时都干了些什么,不管板子是从nandflash启动还是从norflash启动,它的开始代码都不是在SDRAM中运行的,要么在stepping stone中运行,要么在norflash中运行,但是stepping stone的4k片上内存显然是不够的,而且norflash可读不可写的特原创 2016-01-03 16:35:11 · 13201 阅读 · 2 评论 -
关于ARM的PC指针(什么时候PC+8,PC+4,PC-4,PC-8)
要理解PC指针,首先就要好好了解LR指针连接寄存器LR(r14):用来保存和恢复PC寄存器的内容,它有两个特殊功能。 (1)保存子程序返回地址。使用BL或BLX时,跳转指令自动把返回地址放入r14中;子程序通过把r14复制到PC来实现返回,通常用下列指令之一: MOV PC, LR原创 2015-10-29 12:15:12 · 34849 阅读 · 4 评论 -
(4.1)uboot详解——内部中断
(4)uboot详解——我需要中断一下,去干点别的事情原创 2015-11-12 13:38:12 · 6021 阅读 · 0 评论 -
ARM汇编指令(B/BL/BX)
跳转指令用于实现程序流程的跳转,在 ARM 程序中有两种方法可以实现程序流程的跳转: (1) 使用专门的跳转指令。 (2) 直接向程序计数器 PC 写入跳转地址值。 通过向程序计数器 PC 写入跳转地址值,可以实现在 4GB 的地址空间中的任意跳转,在跳转之前结合使用 MOV LR , PC 等类似指令,可以保存将来的返回地址值,从而实现在 4GB 连续的转载 2014-12-05 15:58:01 · 17175 阅读 · 0 评论 -
ARM中MRS汇编指令
ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器。每个位的含义如下图: 分成了4部分:1,条件标志位N(Negative), Z(Zero), C(Carry), V(Verflow)统称为条件标志位。ARM指令可以根据CPSR中的这些条件标志位来选择性的执行。2,Q标志位ARM v5的E系列处转载 2014-12-05 15:41:16 · 4500 阅读 · 0 评论 -
内核启动参数详解
bootload在启动linux内核时可以传递一些参数,对linux内核进行配置。bootload 用的是uboot_1_1_4linux内核用的是linux_2_6_24一、uboot启动内核当在uboot下敲bootm,或啥都不做等上N秒后,uboot会调用do_bootm函数文件uboot_1_1_4/common/cmd_bootm.cint do_bo转载 2014-12-12 09:43:30 · 2238 阅读 · 0 评论 -
U-Boot源代码下载地址
U-Boot源代码下载地址[日期:2011-07-20]来源:Linux社区 作者:Linux[字体:大 中 小]U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相转载 2015-09-28 15:11:06 · 1201 阅读 · 0 评论 -
移植uboot-2015-10(一)
移植uboot-2015.10.rc1(一)开发板: friendly arm 2440 工具: Win7 + VMware + ubuntu U-boot版本: u-boot-2015.10.rc1 GCC版本: gcc version 4.3.3随着uboot版本的不断更新,现在的版本和以前的相比有不少的变化,在代码原创 2015-09-30 14:00:33 · 12770 阅读 · 7 评论 -
怎么看时序图--nand flash的读操作详解
这篇文章不是介绍 nandflash的物理结构和关于nandflash的一些基本知识的。你需要至少了解 你手上的 nand flash的物理结构和一些诸如读写命令 操作的大概印象,你至少也需要看过 s3c2440中关于nand flash控制寄存器的说明。由于本人也没有专门学过这方面的知识,下面的介绍也是经验之谈。这里我用的 K9F2G08-SCB0这款na转载 2015-10-24 12:13:42 · 14831 阅读 · 1 评论 -
(3)uboot详解——饿了么,我们来喂“狗”吧
uboot启动时,当将cpu运行模式设置为管理模式后,就要关闭看门狗了,那么看门狗是干什么的呢?狗狗是我们的好朋友,有时候,一条好狗狗能够救主人的性命,”看门狗“是cpu的“好朋友”,它也能够在cpu出状况的时候把它救活。看门狗其实就是一个可以在一定时间内被复位的计数器,当看门狗启动后,计数器开始自动计数,经过一定时间,cpu就会将这个计数器复位,如果没有被复位,计数器溢出就会对CPU产生原创 2015-11-09 13:53:18 · 4940 阅读 · 0 评论 -
(2)uboot详解——处理器工作模式
前面一篇文章我们了解到当开发板上电以后,会将uboot的前4k内容复制到stepping stone中运行,现在来分析这4k代码到底做了些什么。从前面一篇文章的最后一张图可以看到uboot的运行流程,当reset以后,uboot做的第一个动作就是设置cpu的运行模式,这篇文章将详细介绍cpu运行模式的相关知识。人有生老病死,如果把我们的计算机比作一个生命的话,那么它也有一个生老病死的一个过原创 2015-11-08 16:41:34 · 6001 阅读 · 2 评论 -
(1)uboot详解——板子刚上电时都干了些什么
电子产品如果没有了电,就跟废品没什么区别,是电赋予了他们生命,然而程序则是他们的灵魂。小时候一直很好奇,一个个死板的电子产品为什么一上电以后就能够工作了呢?为什么一个小小芯片就能够运行我们编写的程序呢?一个开发板从刚上电到整个操作系统能够运行起来是怎么办到的呢?这些东西困扰了好久,参考了好多资料现在才慢慢弄明白其中一些原理。我们现在接触的大多数电子产品都是使用数字电路设计出来的,数字电路的原创 2015-11-07 12:29:41 · 13807 阅读 · 8 评论 -
(5.3)uboot详解——PWM定时器(番外)
这篇文章是一些拓展内容,如果想了解uboot的启动过程,可以先跳过本章,如果需要掌握一些编写裸机程序或者内核与计时器相关的驱动的知识,可以了解一下。PWM定时器1.概述脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中——原创 2015-12-24 15:31:02 · 2783 阅读 · 0 评论