随笔分类 -  裸机1-detail

裸机1
摘要:17.U-boot的工作流程分析-6410 6410开发板: 1.uboot的入口: 要看uboot工程的入口,首先打开顶层目录的Makefile: Uboot所支持的开发板,在顶层的Makefile中都会有一个配置选项。比如6410,在Makefile中的配置选项是make forlinx_nan 阅读全文
posted @ 2016-02-14 10:07 cestlavie 阅读(357) 评论(0) 推荐(0) 编辑
摘要:16.U-boot的工作流程分析-2440 分析的流程: 程序入口 第一阶段程序分析 第二阶段程序分析 2440开发板: 1.uboot的入口: 要看uboot工程的入口,首先打开顶层目录的Makefile: Uboot所支持的开发板,在顶层的Makefile中都会有一个配置选项。比如2440,在M 阅读全文
posted @ 2016-02-14 10:04 cestlavie 阅读(273) 评论(0) 推荐(0) 编辑
摘要:15.ARM处理器的启动流程 ARM处理器启动流程涉及三方面的知识: 启动方式 地址布局 启动流程 S3c2440的ARM处理器的启动流程: 2440支持 Nor Flash启动,Nor Flash的大小2MB Nand Flash启动,Nand Flash的大小256MB 所以2440把uboot 阅读全文
posted @ 2016-02-14 10:02 cestlavie 阅读(1244) 评论(0) 推荐(0) 编辑
摘要:14.Bootloader设计思路 在前面,已经了解了很多裸机的知识,也建立了一个测试汇编代码的工程。这些工作其实是为这里来学习Bootloader做铺垫的。 这一节的索引:图1-1: 图1-1 一个嵌入式的存储设备通过通常包括四个分区: 第一分区:存放的当然是u-boot 第二个分区:存放着u-b 阅读全文
posted @ 2016-02-14 10:00 cestlavie 阅读(648) 评论(0) 推荐(0) 编辑
摘要:13.ARM协处理器的知识 在处理器中有协处理器来辅助处理器完成部分功能的,主要是协助作用。 协处理器: 协处理器用于执行特定的处理任务,如:数学协处理器可以控制数字处理,以减轻处理器的负担。ARM可支持多达16个协处理器,其中CP15是最重要的一个。 在ARM9、ARM11、cortexa8等核中 阅读全文
posted @ 2016-02-14 09:58 cestlavie 阅读(2857) 评论(0) 推荐(0) 编辑
摘要:12.ARM伪指令操作 首先ARM伪指令包括: ARM机器码 定义类伪指令 操作类伪指令 ARM机器码: 其实任何一种处理器可以运行的叫机器码,机器码是从汇编程序通过汇编器转换来的。接下来看看机器码的信息。流程:图1-1. 图1-1 在上一节里,建立好了一个简单的汇编工程,在start.S只有三行代 阅读全文
posted @ 2016-02-14 09:57 cestlavie 阅读(2146) 评论(0) 推荐(0) 编辑
摘要:11.汇编代码简单操作 使用汇编的原因很简单,就是汇编代码的高效。在机器启动的时候,利用汇编的高效,对硬件进行初始化,为加载内核,提供条件。 目前常用的ARM汇编指令有两种: *ARM标准汇编:适用于ARM公司的汇编器,适合在Windows平台下使用。 *GNU汇编:使用与GNU交叉编译工具链中的汇 阅读全文
posted @ 2016-02-14 09:54 cestlavie 阅读(508) 评论(0) 推荐(0) 编辑
摘要:10.ARM汇编的学习 ARM汇编的学习是很必要,学习ARM汇编不是要以后用汇编去写程序,而是要去看得懂,且进行修改就可以了。因为在后面的有关内核和bootloader的工程里,会有部分的代码是汇编程序编写的。在bootloader中,系统一旦上电,第一个运行的程序,需要对cpu、协处理器进行初始化 阅读全文
posted @ 2016-02-14 09:52 cestlavie 阅读(1381) 评论(0) 推荐(0) 编辑
摘要:9.ARM寻址方式 1.立即数寻址 立即数寻址,是一种特殊的寻址方式,操作数本身就是在指令中给出。只有取出指令就取到了操作数。这个操作数就称为立即数,对应的寻址方式就是立即数寻址方式。例如: ADD R0,R1,#0X45;这汇编的意思:R1+0x45->R0 在以上两条指令中,第二个源操作数,是立 阅读全文
posted @ 2016-02-14 09:51 cestlavie 阅读(345) 评论(0) 推荐(0) 编辑
摘要:8.ARM寄存器详细解说 ARM寄存器的简单分类:图1-1: 图1-1 ARM微处理器中共有37个32位寄存器,其中31个通用寄存器,6个状态寄存器。但是这些寄存器不能被同时访问,在七种模式中,可以访问的寄存器种类不同。但是,通用寄存器R14——R0、程序计数器PC、一个状态寄存器cpsr都是可以被 阅读全文
posted @ 2016-02-14 09:50 cestlavie 阅读(1587) 评论(0) 推荐(0) 编辑
摘要:7.ARM处理器的工作模式 ARM七种工作模式:图1-1: 图1-1 上面的七种工作模式可以在cpsr设置:如下的M[4:0]=Mode number。 图1-2 之所以要有这么多种模式,是为了避免致命的错误。例如我们写的应用程序运行在User模式,操作系统的运作在比较高的模式。 User模式:普通 阅读全文
posted @ 2016-02-14 09:49 cestlavie 阅读(331) 评论(0) 推荐(0) 编辑
摘要:6.认识ARM家族 先看一幅图:图1-1: 图1-1 看到上面都是好像跟ARM公司有关的,但是他们到底各自是啥呢? 其实上面的这些名词分为三类: 芯片:6410、210、2440. ARM核:arm11、A8、arm9 指令架构:armv7、armv6 所以可以对上面的那朵"花"进行简化:图1-2: 阅读全文
posted @ 2016-02-14 09:48 cestlavie 阅读(1198) 评论(0) 推荐(0) 编辑
摘要:5.Eclipse集成开发环境 Eclipse集成开发环境不仅可以编译裸机工程,还可以调试整个裸机工程,这样当程序异常的时候,可以更加有效的进行修改。接下来就是搭建整个eclipse集成环境:这个调试环境的框架如下图1-1: 图1-1 从上面的框架图看到,要实现eclipse在线调试裸机程序,需要安 阅读全文
posted @ 2016-02-14 09:47 cestlavie 阅读(608) 评论(0) 推荐(0) 编辑
摘要:4.链接器脚本 一、体验: 首先先看一个例子:图1-1: 编译烧写的过程: main.c的截图: 可以看到在main函数中点亮了第一个盏灯: 图1-1 点灯 在这个例子中的gboot.lds的代码为: OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS { . = 0x5 阅读全文
posted @ 2016-02-14 09:44 cestlavie 阅读(513) 评论(0) 推荐(0) 编辑
摘要:3.Makefile工程管理 一、体验 在前面的笔记里可以看到,要编译一个简单的工程需要的编译步骤是很多的。前面还是只有一个汇编文件,在一个工程里,会有很多文件的,如果像前面的那种编译方式是很不可靠的。这就需要Makefile工程管理。 例如前面的那个led.S,要编译成led.bin的步骤:图1- 阅读全文
posted @ 2016-02-14 09:43 cestlavie 阅读(417) 评论(0) 推荐(0) 编辑
摘要:2.交叉工具链 一、交叉工具链: 交叉工具链,其实他有两个含义,一个就是交叉工具,所谓的交叉工具就是运行的环境和编译的环境不是在一体的。就像我们现在,编译裸机程序是在pc机上面执行的。可我们运行程序是在开发板。链,就是很多的意思,就是一个工具的集合。在我们前面配置arm-linux-gcc的工具中。 阅读全文
posted @ 2016-02-14 09:42 cestlavie 阅读(400) 评论(0) 推荐(0) 编辑
摘要:1.裸机开发环境的体验(Redhat 6.4 + vbox) 一、裸机开发的一般流程 注意:这是假定你已经搭建好了裸机开发环境 我们裸机的一般开发流程:图1-1: 图1-1 裸机开发流程 由于在这篇文章里是体验裸机程序,所以我们跳过了1、2步骤。直接从第三步开始: 二、交叉工具链的安装: 在这里,我 阅读全文
posted @ 2016-02-14 09:41 cestlavie 阅读(504) 评论(0) 推荐(0) 编辑