Chapter10 Firmware 《ARM system developer's guide》

本章节讨论关于基于ARM的嵌入式系统的firmware。自从Firmware经常是在新平台上port和execute的第一段代码,Firmware就成为了任何嵌入式系统最重要的一部分。

本章将分为两部分:
1. 介绍firmware。本部分对firmware进行定义并且描述了两种流行的产业标准固件包:ARM Firmware Suite和Red Hats RedBoot。这些固件包是以通用为目的,可以简单快速的被移植到不同的ARM平台上。
2. 本部分着眼于initialization and bootloader process。我们使用了一个简单的例子,名为Standstone—被设计用来初始化硬件,加载image到内存中,并且将控制权从pc过渡给image。


Firmware and Bootloader

定义

  • firmware是深度嵌入,低层次的软件,可以在硬件和应用程序/操作系统层软件 之间 提供一种接口。It resides in the ROM and executes when power is applied to the embedded hardware system.固件可以在系统初始化后保持激活状态,并且提供了基础的系统操作。One of the main purposes of firmware is to provide a stable mechanism to load and boot an operating system.
  • Bootloader 是一种小型应用程序用于在硬件上安装操作系统或者软件。The bootloader only exists up to the point that the operating system or application is executing, and it is commonly incorporated into the firmware.

Firmware execution flow:

1.Set up target platform—准备加载操作系统所需要的环境

需要确定平台被正确的初始化

PICTURE 1.0First stage’s features
Program the hareware system registers例如:确保特殊微处理器的控制寄存器在已知的地址空间中
Platform identification固件需要确定其操作的core和platform是哪种类型的。The core is normally recognized by reading register 0 in coprocessor 15, which holds both the processor type and the manufacturer name
DiagnosticsDiagnostics software 提供了一种有用的方法快速的辨别基础硬件的生产商。因为这种软件的天性,其更趋向于成为硬件特殊的一部分。
Debug interface提供了软件的辅助来debug正在运行的代码。辅助功能,如下图 PCTURE 2.0
Command line interpreter可以通过CLI发送指令进行交互。它允许你通过改变默认配置来改变即将启动的操作系统

Debug assistance

PICTURE 2.0
在ARM设置断点
Listing and modifying memory
Showing current processor register contents
Disassembing memory into ARM and Thumb instruction mnemonics

除非固件提供了内部硬件调试的接口,否则仅有RAM images可以通过软件调试机制来调试。

2.Abstract the hardware

PICTURE 3.0Features
Hardware Abstraction Layer(HAL)软件层,通过提供一系列定义好的编程接口,来隐藏底层的硬件。当你到另一个目标平台的时候,这些编程接口是恒定的,但是底层的实现却不一样。
Device driver是HAL的软件,用于和特殊的硬件外设通讯,并且提供了标准application programming interface(API)用于读写特定的外设

3.Load a bootable image

不是所有的操作系统或者应用都是需要被复制进RAM中的,也可以简单直接从ROM运行。

PICTURE 4.0Features
Basic filling system简单的flash ROM filing system(FFS),允许多种可执行images被加载

Firmware需要有能力去读取filing system,并且找到包含image的文件,然后复制image到memory中。相似的,如果image在network上,固件需要和Ethernet硬件一样理解网络协议。

加载程序还要涉及到image format。最基础的image format是纯二进制,但是不包含任何头或者调试信息。对于基于ARM的系统最流行的image format就是 Executable and Linking Format(ELF) ELF files come in three forms: relocatable, executable, and shared object.

the load process还要有解密和解压缩能力,因为image可能已经加密或者压缩过了。

4.Relingquish control

当平台控制权转交给操作系统的时候,固件的Machine Independent Layer(MIL)或者Hardware Abstraction Layer(HAL)部分还会保持激活状态。通过SWI、对于特殊硬件设备的标准API可以引用这一层。

PICTURE 5.0Features
Updating the vector table需要修改特殊的异常和中断,使其指向特殊的操作系统handlers
Alter the pc to point into the new imagepc需要指向操作系统入口地址

在linux等复杂的操作系统,该阶段还要传递标准的数据结构给kernel。这个数据结构解释了kernel需要运行的环境。例如:
1. 表明了在平台上需要的RAM数量
2. 需要被使用的MMU的类型

ARM Firmware Suite(AFS)

提供了两个主要部分:
1. uHAL: 允许操作不同设备(USB,以太网,串口),并且提供了标准API
2. Angel-a debug monitor

uHAL

支持如下主要特性:

特性解释
System initialization
Polled serial driver提供与hot通信的基础方法
LED support提供一个应用程序来显示操作状态
Timer Support允许set up a periodic interrupt
Interrupt controllers支持不同的中断控制器
Angel

支持如下功能:
1. 查看修改内存
2. 下载和执行镜像
3. 设置断点
4. 显示寄存器内容
所有的控制都是通过host debugger,The Angel debug monitor must have access to SWI,IRQ and FIQ

Red Hat Redboot

由Red Hat开发的固件工具。能在多种不同的CPU上运行,如ARM,MIPS,SH等等。其通过GDB提供调试能力。RedBoot核心在于HAL
RedBoot提供了这些主要特性:
1. Communication-通过串口和以太网进行设置,RedBoot支持许多网络便准。
2. Flash ROM memory management-provides a set of filing system routines that can download, update, and erase images in flash ROM.此外images可以被压缩和解压缩
3. Full operating support-支持许多当前流行的操作系统。

Example:Sandstone

作为一个迷你的系统,sandstone的作用是建立目标平台所需要的环境,加载bootable镜像到memory中去,转移控制权给操作系统。

FeatureConfiguration
CodeARM instruction only
Tool chainARM developer Suite 1.2
Image size700 bytes
Source17KB
Memoryremapped

Sandstone 执行流程

Step 1:Take the Reset Exception

具体代码见《ARM system developers guide》 P374

该阶段中,除了reset vector之外的所有vectors都是dummy handlers。而B sandtone_init1 ;reset vector
并且将控制权转移给初始化硬件的代码。

Step 2:Start Initializing the Hardware

执行完该步骤后:

  • system registers are set from a known base address-0x03ff0000

  • The segement display is configured, so that it can be used to display progress

该步骤的主要作用就是建立内存环境。

Step 3:Remap Memory

执行完该步骤后:
1. Memory has been remapped as shown in Table 10.5
2. pc now points to the next step, This address is located in the newly remapped flash ROM

Step 4:Initialize Communication Hardware

  1. 初始化串口-9600 把U盾, 无奇偶校验,无停止位,无流控制
  2. Sandstone banner sent out through the serial port:
Sandstone firmware (0.01)
-platform .......e7t
-status   .......alive
-memory   .......remapped

+booting payload...

Step 5:Bootloader-Copy Payload and Relinquish Control

步骤结果:
1. Payload copied into SRAM, address 0x00000000
2. pc的控制权递交给payload, pc = 0x00000000
3. 系统完全加载好。

Summary

  • 本章节介绍了firmware。我们定义firmware是一种低层代码,作为硬件和应用程序或者操作系统之间的接口。我们也定义了bootloader,这是一种软件应用加载操作系统或者应用程序到内存之中,然后将控制权交给操作系统或者应用程序。
  • 本章节还包括了ARM Firmware Suite and RedBoot。前者是设计面向基于ARM的系统的,而后者更通用,可以用于非ARM的处理器上。
  • 最后我们介绍了简单的Sandstone,通过五个步骤,我们就有了完全初始化的ARM7TDMI的嵌入式系统。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
内容简介回到顶部↑本书从软件设计的角度,全面、系统地介绍了ARM处理器的基本体系结构和软件设计与优化方法。内容括:ARM处理器基础;ARM/Thumb指令集;C语言与汇编语言程序的设计与优化;基本运算、操作的优化;基于ARM的DSP;异常与中断处理;固件与嵌入式OS;cache与存储器管理;ARMv6体系结构的特点等。全书内容完整,针对各种不同的ARM内核系统结构都有详尽论述,并有大量的例子和源代码。附录给出了完整的ARMv4/v5/Thumb指令的功能、编码、周期定时以及汇编参考。 本书适于从事ARM嵌入式系统教学与研发,或想把其它嵌入式平台的软件移植到ARM平台上去的专业技术人员使用,要求对ARM处理器有一定的了解,并有C语言和汇编语言基础。若在编译原理、操作系统、数字信号处理、计算机体系结构等方面有一定的基础,则效果会更好。 本书也可作为嵌入式系统专业方向的本科生和研究生相关课程的教材或教学参考书。 本书从开发者的角度,侧重于软件方面,全面描述了ARM内核的操作。它不仅示范了如何用C语言和汇编语言编写高效的ARM软件,还说明了如何优化代码。本书中的所有范例程序都可以集成到商用产品中,或者作为模板,以加速软件开发。 本书涵盖了ARM和Thumb指令集、Intel的XScale处理器,概括了ARM体系结构的不同版本之间的差异,示范了如何实现DSP算法,解释了异常和中断处理,描述了围绕ARM内核的cache技术,以及最有效的存储器管理技术。 最后一章介绍了ARMv6体系结构的特征和ARM未来的发展,以及对指令集所做的最新改进,这些改进增强了ARM体系结构的DSP和多媒体处理能力。 本书特色 ●本书从系统和软件的角度来描述ARM内核,这是与其它书的显著差别。 ●作者结合了丰富的ARM软件工程经验和ARM开发者所需要的广泛、透彻的知识。 ●书中提供了许多实用的可运行代码范例,并作了详尽的解释,可以从出版商的网站下载:http://www.mkp.com/companions/1558608745。 ●含了一个简单的嵌入式操作系统。
嵌入式开发工具 ARM Developer Suite v1.2 ARM Developer Suite? ADS 是全套的实时开发软件工具编译器生成的代码密度和执行速度优异可快速低价地创建ARM 结构应用ADS括三种调试器ARM eXtended Debugger AXD 向下兼容的ARMDebugger for Windows/ARM Debugger for UNIX 和ARM 符号调试器其中AXD 不仅拥有低版本ARM 调试器的所有功能还新添了图形用户界麵更方便的视窗管理数据显示格式化和编辑以及全套的命令行界麵该產品还括RealMonitor? 可以在前台调试的同时断点续存并且在不中断应用的情况下读写内存跟踪调试工具 ARM 的Real-Time Trace? 和RealMonitor 均為重要的实时调试解决方案能够缩短开发周期提供特殊软件调试功能可运行於带深度嵌入处理器内核的高集成系统芯片SoC ARM 的Real-Time Trace 產品括跟踪调试工具MultiTrace 嵌入式跟踪宏单元和Multi-ICE ARM 的RealMonitor括RMTarget? RMHost? 是ARM Developer Suite (ADS) 的补充硬件 Integrator? Integrator 系列是灵活高效的系统芯片开发平台集成ARM PrimeCell?外设和相关驱动器等软件和硬件能够缩短產品开发周期降低生產总成本固件 ARM Firmware Suite? ARM 固件组是跟底层硬件相关的应用封装能在ARM 开发平台上迅速建立基於Integrator 或其它ARM内核的应用和操作系统模型工具 ModelGen ModelGen 是在模拟器上开发和支持复杂半导体器件保留模块的先进建模工具為ARM 独家拥有ARM 的合作伙伴采用ModelGen 在各种仿真器和计算平台上实现信号传输质量和时序模拟 操作可看http://blog.163.com/haoshida_nanjing/blog/static/213358122009622111013200/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值