ARM简介及BootLoader介绍 黄大荣 2006-09-29.

Slides:



Advertisements
Similar presentations
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
Advertisements

我国国有银行 资本构成及资本充足率变化 小组成员:金融 尹佳裕 王淼 刘钰 金融 吴昱.
足太阴脾经在足大趾与足阳明胃经衔接, 在胸部与手少阴心经相接。 联系的脏腑器官有 咽、舌,属脾,络胃,注心中。 络脉从本经分出,走向足阳明经,进入腹腔,联络肠胃。 经别结于咽,贯舌本。 经筋结于髀,聚于阴器,上腹,结于脐,散于胸中。 第四章 足太阴经络与腧穴 第一节 足太阴经络.
烘焙丙級麵包產品 數位學習 紅豆餡甜麵包 高雄應用科技大學 觀光管理系觀光與餐旅管理碩士班 林庭榛.
600年前,鄭和率領世界上最強大的艦隊,浩浩蕩蕩的駛入印度洋,展開一場「文化帝國」的海上大秀。
103年度學生健康檢查.
第二部分 嵌入式硬件系统 第2章 嵌入式处理器 第3章 ARM内核与ARM处理器 第4章 嵌入式系统的外围设备.
小规模纳税申报培训 广东省国家税务局 2016年6月.
上海证券交易所 会籍业务办理参考 交易单元租用、退租业务 2012年12月 本分册主办单位:上海证券交易所
NEUSOFT Institute of information Technology .ChengDu
目 錄.
农业银行网上签约流程 宁夏金溢投资 内部资料 1.
专题三 生物圈中的绿色植物.
廉政會報專題報告 農地重劃工程 施工常見缺失 報告:吳東霖 製作:張昌鈴 日期:103年12月23日.
慶鴻機電工業股份有限公司 公司地址:台中市南屯區精科一路三號 資 本 額:新台幣46,000萬元 董 事 長:王武雄
專案製作經驗談.
第五课 让挫折丰富我们的人生 挫折面前也从容.
你喝的水健康嗎? 探討飲用水的功效 製作人:孫定達.
第3章 基于ARM的处理器体系结构1 主讲 马洪连.
金門縣重大空難應變機制-消防局 壹、消防搶救、滅火、緊急救護 一、派遣作為:
微机原理与接口技术 第二章 ARM微处理器硬件结构
----银行间的比较 论资本构成与充足率 淡 彩 的 黑 板 淡 彩 的 黑 板 金融73班 王艺霏 王 英
《计算机操作员》精品 课件 淮南市潘集职教中心
ARM体系结构.
ARM 架构.
第1章 电脑的硬件组成 本章要点 拆卸电脑 PC的基本构成 主机箱内的主要部件 电脑主机箱背面的接口 主要配件的外观.
ARM裸机第一部分-ARM那些你得知道的事
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
第14章 Bootloader基本概念與燒錄.
嵌入式系统教案 武汉创维特信息技术有限公司 2018/11/27.
Game Boy Architecture 计算机体系结构课程报告 --刘继元.
College of Computer Science & Technology
怎样从0开始写bootloader? 李明 北京亚嵌教育研究中心
第四章 BootLoader开发 附-s3c2410/s3c2440中断控制器介绍
第4章 汇编语言程序设计 汇编语言源程序格式 汇编语言上机过程 汇编语言与C语言混合编程技术.
在專用的嵌入式板子運行 GNU/Linux 系統已經變得越來越流行。一個嵌入式 Linux 系統從軟體的角度看通常可以分為四個層次:
聊城大学物理科学与信息工程学院 微控制器原理 聊城大学物理科学与信息工程学院
操作系统实验 lab1-系统引导
嵌入式系统的Boot Loader技术 陈文智 浙江大学计算机学院 2009年5月.
嵌入式体系结构与应用 第三章-ARM指令系统(ARMv4T).
第2章 ARM微处理器硬件结构 计算机体系结构分类 ARM版本及系列 ARM处理器结构 存储系统机制.
校 園 雲端輸出管理系統 新印科技股份有限公司 聯絡人:伍宏一 電 話: /
第五章 C/C++及汇编语言的混合编程 5.1 ARM C/C++编译器 5.2 在C/C++程序中内嵌汇编指令
嵌入式系统教案 武汉创维特信息技术有限公司 2019/1/18.
人(大人)(人口)(人手) 个(个人)(三个)(个子zi ) 手(小手)(双手)(手工) 大(大人)(大山)(大火)
南瑞学堂 学员简明操作指南 上海时代光华教育发展有限公司 2013年.
(第2版).
第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块
第2章 ARM体系结构.
107學年度國民中學 學障鑑定個測工作說明 Loading…… 臺東縣特教資源中心.
(第2版).
ARM 架构.
ARM 架构.
ARM及Thumb指令集 (练习).
第2章ARM/THUMB微处理器结构及指令系统
第3章 ARM微處理器的指令集.
嵌入式Linux开发流程 成都研究所操作系统团队.
ARM Developer Suite 介 绍.
使用服务平台办理离校 操作指南.
ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇
嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/29.
第五章 输入/输出系统 本章讨论: 接口的基本概念 总线的基本概念 中断方式及其接口组成 中断方式及其接口组成 DMA方式及其接口组成
学年第一学期领取教材明细查询的通知 学年第一学期学生使用的教材均在网上平台公示。现将有关事项通知如下:
微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理
第3章 目录 1.简介 2.ARM7TDMI 3.ARM7TDMI的模块和内部框图 4.体系结构直接支持的数据类型 5.处理器状态
古典芭蕾舞剧 《天鹅湖》.
第6章 嵌入式软件开发基础.
真信心的果效 雅各書2:
嵌入式系统教案 武汉创维特信息技术有限公司 2019/10/1.
Presentation transcript:

ARM简介及BootLoader介绍 黄大荣 2006-09-29

大纲(一) ARM简介 ARM基本常识 ARM处理器状态 ARM处理器模式 内部寄存器 异常处理

大纲(二) BootLoader介绍 BootLoader简介 设置中断向量表 初始化存储设备 初始化堆栈 初始化用户执行环境 呼叫主应用程序

ARM基本常识(1) 目前嵌入式处理器常见的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire(冷火)等,但ARM占据了绝对主流(有资料说手机中几乎90%都是ARM处理器)。ARM是一个只卖知识产权的公司,目前获得购买了ARM CPU核授权许可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他们都在ARM CPU核的基础上进行了一些外围扩展,形成自己的处理器。 ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

ARM基本常识(2) 1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。 ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。

ARM处理器状态(1) ARM微处理器的工作状态一般有两种,并可在两种状态之间切换: 第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。 在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。但ARM微处理器在开始执行代码时,应该处于ARM状态。

ARM处理器状态(2) 进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。此外,当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。 进入ARM状态:当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。此外,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。

ARM处理器模式(1) ARM微处理器支持7种运行模式,分别为: 用户模式(usr):ARM处理器正常的程序执行状态。 快速中断模式(fiq):用于高速数据传输或通道处理。 外部中断模式(irq):用于通用的中断处理。 管理模式(svc):操作系统使用的保护模式。 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。 系统模式(sys):运行具有特权的操作系统任务。 定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。

ARM处理器模式(2) ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。 除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式;其中除去用户模式和系统模式以外的5种又称为异常模式,常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

ARM寄存器 关于寄存器这里就不详细介绍了,有兴趣的人可以上网找找,很多这方面的资料。 ARM处理器共有37个寄存器。其中包括:31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。以及6个32位状态寄存器。 关于寄存器这里就不详细介绍了,有兴趣的人可以上网找找,很多这方面的资料。

异常处理(1) 当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。当一个异常出现以后,ARM微处理器会执行以下几步操作:

异常处理(2) 进入异常处理的基本步骤: 将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。将CPSR复制到相应的SPSR中。 根据异常类型,强制设置CPSR的运行模式位。 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。

异常处理(3) 如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。 R14_<Exception_Mode> = Return Link SPSR_<Exception_Mode>= CPSR CPSR[4:0] = Exception Mode Number CPSR[5] = 0 ;当运行于 ARM 工作状态时 If <Exception_Mode> == Reset or FIQ then;当响应 FIQ 异常时,禁止新的 FIQ 异常 CPSR[6] = 1 PSR[7] = 1 PC = Exception Vector Address

异常处理(4) 异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回: 将连接寄存器LR的值减去相应的偏移量后送到PC中。 将SPSR复制回CPSR中。 若在进入异常处理时设置了中断禁止位,要在此清除。

BootLoader简介(1) 简单地说,Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的。尽管如此,我们仍然可以对 Boot Loader 归纳出一些通用的概念来,以指导用户特定的 Boot Loader 设计与实现。

BootLoader简介(2) 基于 ARM7TDMI core 的 CPU 在复位时通常都从地址 0x00000000 取它的第一条指令。在系统加电后,CPU 将首先执行 Boot Loader 程序。 大多数 Boot Loader 都包含两种不同的操作模式:“启动加载”模式和“下载”模式 : 启动加载(Boot loading)模式:Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。 下载(Downloading)模式:Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。

BootLoader简介(3) BOOT的一般步骤为: 设置中断向量表 初始化存储设备 初始化堆栈 初始化用户执行环境 呼叫主应用程序

设置中断向量表(1) ARM要求中断向量表必须放置在从0地址开始,连续8X4字节的空间内。 每当一个中断发生以后,ARM处理器便强制把PC指针置为向量表中对应中断类型的地址值。因为每个中断只占据向量表中1个字的存储空间,只能放置一条ARM指令,使程序跳转到存储器的其他地方,再执行中断处理。

设置中断向量表(2) 中断向量表的程序实现通常如下表示: AREA Boot ,CODE, READONLY ENTRY B    ResetHandler B    UndefHandler B    SWIHandler B    PreAbortHandler B    DataAbortHandler B B    IRQHandler B    FIQHandler 其中关键字ENTRY是指定编译器保留这段代码,因为编译器可能会认为这是一段亢余代码而加以优化。链接的时候要确保这段代码被链接在0地址处,并且作为整个程序的入口。 

初始化存储设备 存储器端口的接口时序优化是非常重要的,这会影响到整个系统的性能。因为一般系统运行的速度瓶颈都存在于存储器访问,所以存储器访问时序应尽可能的快;而同时又要考虑到由此带来的稳定性问题。 在不同的板子上处理芯片、存储设备以及其接口差异很大,应根据不同的情况来配置。

初始化堆栈(1) 因为ARM有7种执行状态,每一种状态的堆栈指针寄存器(SP)都是独立的。因此,对程序中需要用到的每一种模式都要给SP定义一个堆栈地址。方法是改变状态寄存器内的状态位,使处理器切换到不同的状态,然后给SP赋值。注意:不要切换到User模式进行User模式的堆栈设置,因为进入User模式后就不能再操作CPSR回到别的模式了,可能会对接下去的程序执行造成影响。

初始化堆栈(2) 这是一段堆栈初始化的代码示例: 其他模式的堆栈的初始化也类似。 mrs r0,cpsr ;读取cpsr寄存器的值 bic r0,r0,#MODEMASK ;把模式位清零 orr r1,r0,#UNDEFMODE|NOINT msr cpsr_cxsf,r1 ;UndefMode ldr sp,=UndefStack 其他模式的堆栈的初始化也类似。

初始化堆栈(3) 堆栈地址的定义一般如下: ^ (_ISR_STARTADDRESS-0x1400) UserStack # 1024 ;#=field,定义一个数据域,长度为1024 SVCStack # 1024 UndefStack # 1024 AbortStack # 1024 IRQStack # 1024 FIQStack # 0

初始化用户执行环境(1) 一个ARM映像文件由RO,RW和ZI三个段组成,其中RO为代码段,RW是已初始化的全局变量,ZI是未初始化的全局变量。 映像一开始总是存储在ROM/Flash里面的,其RO部分即可以在ROM/Flash里面执行,也可以转移到速度更快的RAM中执行;而RW和ZI这两部分是必须转移到可写的RAM里去。所谓应用程序执行环境的初始化,就是完成必要的从ROM到RAM的数据传输和内容清零。

初始化用户执行环境(2) 编译器使用下列符号来记录各段的起始和结束地址: |Image$$RO$$Base| :RO段起始地址 |Image$$RO$$Limit| :RO段结束地址加1 |Image$$RW$$Base| :RW段起始地址 |Image$$RW$$Limit| :ZI段结束地址加1 |Image$$ZI$$Base| :ZI段起始地址 |Image$$ZI$$Limit| :ZI段结束地址加1 这些标号的值是根据链接器中设置的中ro-base和rw-base的设置来计算的。

初始化用户执行环境(3) 初始化用户执行环境主要是把RO、RW、ZI三段拷贝到指定的位置。 具体的程序

呼叫主应用程序 当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序。最简单的一种情况是: IMPORT main B      main 直接从启动代码跳转到应用程序的主函数入口,当然主函数名字可以由用户随便定义。

以上介绍的都只是相关知识点的概要,如果需要详细了解请上网查询。Thanks