ARM嵌入式软件开发教程.
ARM嵌入式软件开发5.ppt

三 预备知识
预备知识
在ADT1000开发环境中编写、编译和调试程序 了解看门狗的原理和作用 学习S3C2410看门狗的使用
5
四 实验设备
实验设备
JX2410教学实验箱 ADT1000仿真器和ADT IDE集成开发环境
6
五 基础知识
看门狗的功能
嵌入式系统运行时受到外部干扰或者系统错误,程序有 时会出现"跑飞",导致整个系统瘫痪。为了防止这一现 象的发生,在对系统稳定性要求较高的场合往往要加入 看门狗(WATCHDOG)电路。看门狗的作用就是当系统“跑 飞”而进入死循环时,恢复系统的运行。
7
五 基础知识
看门狗的工作原理
其基本原理为:设本系统程序完整运行一周期的时间是
Tp,看门狗的定时周期为Ti,Ti>Tp,在程序运行一周期
后就修改定时器的计数值,只要程序正常运行,定时器
就不会溢出,若由于干扰等原因使系统不能在Tp时刻修
改定时器的计数值,定时器将在Ti时刻溢出,引发系统
复位,使系统得以重新运行,从而起到监控作用。 在一个完整的嵌入式系统或单片机小系统中通常都有看
T = WTCNT * t_watchdog
10
五 基础知识
看门狗定时器寄存器
控制寄存器(WTCON) 数据寄存器(WTDAT) 计数器寄存器(WTCNT)
11
五 基础知识
控制寄存器
12
五 基础知识
数据寄存器(WTDAT)
13
五 基础知识
计数器寄存器(WTCNT)
14
五 基础知识
实验说明
#define WDT_CLK_SEL
(0X3 <<3)
ARM开发教程之ARM体系的嵌入式系统BSP的程序设计

ARM开发教程之ARM体系的嵌入式系统BSP的程序设计简介:ARM公司在32位RISC的CPU开发领域不断取得突破,其结构已经从V3发展到V6。
BSP(Board Support Package)板级支持包介于主板硬件和操作系统之间,其功能与PC 机上的BIOS相类似,主要完成硬件初始化并切换到相应的操作系统。
BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说,尽管实现的功能一样,可是写法和接口定义是完全不同的。
另外,仔细研究所用的芯片资料也十分重要,例如尽管ARM在内核上兼容,但每家芯片都有自己的特色。
所以这就要求BSP程序员对硬件、软件和操作系统都要有一定的了解。
本文介绍基于ARM体系的嵌入式应用系统初始化部分BSP的程序设计。
本文引用的源码全部是基于HMS320C7202芯片设计,并已成功运行。
1 ARM开发教程之初始化过程尽管各种嵌入式应用系统的结构及功能差别很大,但其系统初始化部分完成的操作有很大一部分是相似的。
嵌入式系统的启动流程如图1所示。
1.1 设置入口指针启动程序首先必须定义指针,而且整个应用程序只有一个入口指针。
一般地,程序在编译链接时将异常中断向量表链接在0地址处,并且作为整个程序入口点。
入口点代码如下:ENTRY(_start);开始1.2 ARM开发教程之设置异常中断向量表ARM要求中断向量表必须放置在从0开始、连续8×4字节的空间内。
各异常中断向量地址以及中断的算是优先级如表1:表1 各异常中断的中断向量地址以及中断的处理优先级中断向量地址异常中断类型异常中断模式优先级(6最低)0x0 复位特权模式(SVC)10x4 未定义中断未定义指令中止模式(Undef) 60x8 软件中断(SWI)特权模式(SVC)60x0c 指令预取中止中止模式50x10 数据访问中止中止模式20x14 保留未使用未使用0x18 外部中断请求(IRQ)外部中断(IRQ)模式40x1c 快速中断请求(FIQ)快速中断(FIQ)模式 3每当一个中断发生后,ARM处理器便强制把程序计数器(PC)指针置为向量表中对应中断类型的地址值。
ARM应用系统开发详解—嵌入式uClinux及应用开发

第7章嵌入式uClinux及其应用开发本章从构建一个针对S3C4510B硬件平台的嵌入式uClinux操作系统和在其上进行应用程序的开发入手,逐步讲述如何在Linux环境下编写用户应用程序的方法和步骤,并为熟悉Windows操作系统的用户介绍在这种平台之上,使用何种工具编写和编译自己的应用。
通过本章的学习,读者可以对嵌入式uClinux有一定的了解,并且掌握在Linux和Windows 下嵌入式系统应用开发的基本方法。
本章主要内容有:-嵌入式uClinux系统概况-开发工具GNU的使用-建立uClinux开发环境-在uClinux下开发应用程序7.1 嵌入式uClinux系统概况在PC机上开发应用程序的用户都会有这样的感觉,PC机有完善的操作系统并提供应用程序接口(API),开发好的应用程序可以直接在操作系统上运行。
虽然嵌入式系统的应用程序完全可以在裸板上运行,但为了使系统具有任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理和中断处理的能力,提供多任务处理,更好的分配系统资源的功能,用户就需要针对自己的硬件平台和实际应用选择适当的嵌入式操作系统(Embedded Operating System,以下简称EOS)。
本节将结合本书所谈到的硬件平台S3C4510B,介绍一种针对不带MMU的ARM微处理器的嵌入式操作系统uClinux。
uClinux是一个完全符合GNU/GPL公约的操作系统,完全开放代码,现在由Lineo公司支持维护。
uClinux的发音是“you-see-linux”,它的名字来自于希腊字母“mu”和英文大写字母“C”的结合。
“mu”代表“微小”之意,字母“C”代表“控制器”,所以从字面上就可以看出它的含义,即“微控制领域中的Linux系统”。
为了降低硬件成本及运行功耗,有一类CPU在设计中取消了内存管理单元(Memory Management Unit,以下简称MMU)功能模块。
ARM嵌入式系统基础与开发教程 丁文龙

第1章嵌入式系统概述1.填空题(1)嵌入式系统硬件平台嵌入式软件(2)硬件抽象层HAL 板级支持包BSP 设备驱动程序(3)嵌入式微处理器嵌入式微控制器嵌入式片上系统SoC2.选择题(1)B (2)A B D (3)D3.简答题(1)什么是嵌入式系统?列举几个熟悉的嵌入式系统的产品。
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
常见的有汽车、手机、MP3等等。
(2)嵌入式系统由哪几部分组成?嵌入式系统从大的方面分嵌入式系统硬件平台和嵌入式软件两大部分,其中软件部分又具体分为若干层次。
对于包含有操作系统的嵌入式系统来讲,嵌入式系统软件结构包含4个层次:设备驱动层、实时操作系统RTOS层、应用程序接口API层、应用程序层。
(3)简述嵌入式系统的特点。
系统内核小;专用性强;系统精简;软件固化;嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统;嵌入式系统开发需要开发工具和环境。
第2章ARM体系结构1.填空题(1)Cortex-R4处理器Cortex-A8处理器(2)ARM Thumb(3)R13 R14 R15(4)8 16 322.选择题(1)A C D (2)A (3)B C D3.简答题(1)简述ARM可以工作的几种模式。
ARM体系结构支持7种处理器模式:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。
(2)ARM7内部有多少个寄存器?在ARM7TDMI处理器内部有37个用户可见的32位寄存器,其中31个通用寄存器,6个状态寄存器。
(3)描述一下如何禁止IRQ和FIQ的中断?在一个特权模式下,都可通过置位CPSR中的I位来禁止IRQ。
在一个特权模式中,可通过置位CPSR中的F标志来禁止FIQ异常。
(4)请描述ARM7TDMI进入异常或退出异常时内核有何操作?当异常发生时,ARM处理器尽可能完成当前指令(除了复位异常)后,再去处理异常,并执行如下动作:①进入与特定的异常相应的操作模式;②将引起异常指令的下一条指令的地址保存到新模式的R14中;③将CPSR的原值保存到新模式的SPSR中;④通过设置CPSR的第7位来禁止IRQ;如果异常为快中断,则要设置CPSR的第6位禁止快中断;⑤给PC强制赋向量地址值。
第3章 基于ARM的嵌入式软件开发基础.ppt

语句段2 ENDIF IF、ELSE、ENDIF伪指令是条件分支伪指令,能根据条件的成立与
否决定是否执行某个语句。伪指令IF可以对条件进行判断;伪指令 ELSE产生分支;伪指令ENDIF定义分支结束。
当IF后面的逻辑表达式为真,则执行语句段1,否则执行语句段2。其 中,ELSE及语句段2可以没有,此时,当IF后面的逻辑表达式为真, 则执行指令序列1,否则继续执行后面的指令。
LCLA(LCLL或LCLS) 局部变量名 LCLA、LCLL和LCLS伪指令是声明局部变量伪指令,用于定义一个 ARM程序中的局部变量,并将其初始化。 其中: LCLA用于声明一个局部的数字变量,并初始化为0; LCLL用于声明一个局部的逻辑变量,并初始化为F(假); LCLS用于声明一个局部的字符串变量,并初始化为空。对于局部 变量来说,变量名在使用的范围内必须是唯一的,范围限制在定义这个 变量的宏指令程序段内。
其中,表达式可以为程序标号或数字表达式。DCD也可用 “&”代替。
伪指令DCD用来为字分配一段对准的内存单元,并用 指定的数值或标号初始化;伪指令DCDU用来为字分配一 段可以非对准的内存单元,并用指定的数值或标号初始化。
指令示例: DATA1 DCD 4,5,6 ;分配一片连续的字存储单元并初始化。 DATA2 DCDU LOOP ;为LOOP标号的地址值分配一个内存单元。
局变量来说,变量名在源程序中必须是唯一的。
指令示例: GBLA DATE1
;声明一个全局数字变量DATE1 GBLL DATE1
;声明一个全局逻辑变量DATE2 GBLS DATA3
;声明一个全局的字符串变量DATE3 DATE3 SETS “Testing”
第3章 基于ARM的嵌入式软件开发基础(3)

常量编译控制伪操作
8) .fill 1)语法格式 .fill 2)说明 分配一段字节内存单元, size长度的 value填充 长度的value 填充, 分配一段字节内存单元 , 用 size 长度的 value 填充 , 重复repeat repeat次 size缺省为 缺省为1 value缺省为 缺省为0 重复repeat次。size缺省为1,value缺省为0 3)示例 .fill 8,4,0xffffffff repeat{,size},{value}
ARM汇编语言的伪操作、 ARM汇编语言的伪操作、宏指令与伪指令 汇编语言的伪操作
1、伪操作、宏指令 及伪指令的概念 伪操作、
伪操作是 汇编语言程序里的一些特殊指令助记符, 伪操作是ARM汇编语言程序里的一些特殊指令助记符, 汇编语言程序里的一些特殊指令助记符 主要是为完成汇编程序做各种准备工作, 主要是为完成汇编程序做各种准备工作,在源程序进行汇编时 汇编程序处理,而不是在处理器运行期间由机器执行。 由汇编程序处理,而不是在处理器运行期间由机器执行。
GNU编译环境下的伪操作和宏指令 2、 GNU编译环境下的伪操作和宏指令
基于ARM的嵌入式软件开发

6. 测试寄存器
1.选择File → Reload Current Image
2.选择 Execute →Go (或者按 F5),允许到缺 省断点Main
3.Processor Views →Registers打开寄存器窗口 4.按F10单步执行,这时每一步产生的变量变化
将反映在registers窗口中。
程序自动支持ISO-defined functions 的使用 能够捕获 runtime errors 和signals ,还能够终止
出错程序的执行或使程序正常退出。
4.1 建立一个使用semihosted 环境应用
需要提供下面两者之一的执行环境:
使用缺省提供的标准 semihosting 函数 ,如 ARMulator, Angel, and Multi-ICE
被C / C++ compilers使用 的help函数.
C++ 库包含:
Rogue Wave Standard C++ Library version 2.01.01
C++ compiler使用的help 函数
其它未被 Rogue Wave library支持的C++ 函数
3. Semihosting 机制
2). 链接映像文件
armlink main.o -o embed.axf
其中: -o 指定链接输出文件名 embed.axf.
3). 用 armsd or AXD 载入映像进行调试运行
6 从命令行Building项目
2. 在命令行使用汇编器
armasm -list addreg.lst addreg.s armlink addreg.o -o addreg 在Debugger中运行程序:
嵌入式ARM开发教程之用GNU工具开发基于ARM的嵌入式

火龙果 整理
通常汇编源程序用于系统最基本的初始化,如 初始化堆栈指针、设置页表、操作arm的协处理器 等。初始化完成后就可以跳转到C代码执行。需要 注意的是,GNU的汇编器遵循AT&T的汇编语法, 读者可以从GNU的站点()上下载 有关规范。汇编程序的缺省入口是start标号,用户 也可以在连接脚本文件中用ENTRY标志指明其它入 口点(见下文关于连接脚本的说明)。
火龙果 整理
概述 1 硬件平台 2 自举模式 3 GNU的编译器和开发工具 (1)编写C、C++语言或汇编源程序 (2)用gcc或g++生成目标文件 (3)编写连接脚本文件 (4)用连接器生成最终目标文件 (5)生成二进制代码 4 调试工具 结束语
火龙果 整理
火龙果 整理
MC928MX1(以下简称MX1)是摩托罗拉公司基于 ARM核心的第一款MCU,主要面向高端嵌入式应用。内部 采用arm920T内核,并集成了SDRAM/Flash、LCD、USB、 蓝牙(bluetooth)、多媒体闪存卡(MMC)、CMOS摄像 头等控制器。关于MX1的详细资料,感兴趣的读者可以参考 /semiconductors/。作为 应用开发的最小系统必须包括RAM(程序运行空间)、 Flash(存放目标代码)和串行接口(用于调试和下载程 序)。MX1提供了6个片选端(CS0~CS5),内置了 SDRAM控制器,数据宽度32位。在笔者的系统中采用了2 片8M×16位的SDRAM和2片4M×16位的同步Flash存储器, 分别接入数据线的低16位和高16位,如图1所示。 图1中SDRAM接片选端CS2,Flash接片选端CS3,其 余为SDRAM/Flash的控制信号。最小系统还包括至少1个串 行接口,可以采用MX1内置的UART控制器,图略。