《嵌入式处理器体系结构》教学大纲
(2013版)
课程编码:0611102803
课程名称:嵌入式处理器体系结构
学时/学分:48/3
先修课程:《程序设计基础》、《数字逻辑》、《计算机组成原理》、《汇编语言与微机原理》
适用专业:计算机科学与技术
开课教研室:嵌入式系统教研室
执笔:
审定:
一、课程性质与任务
1.课程性质:本课程是计算机科学与技术专业的专业选修课。
2.课程任务:本课程主要介绍ARM的体系结构、ARM开发语言、开发平台以及基于ARM的编程。通过本课程的学习,使学生能够理解基本的嵌入式开发流程、开发使用的工具,掌握嵌入式产品的开发方法及编程。
二、课程教学基本要求
本课程围绕目前流行的ARM处理器,讲述嵌入式系统的概念、软硬件组成、开发过程以及嵌入式应用程序开发设计方法。课程教学所要达到的目的是:使学生掌握嵌入式系统体系结构,嵌入式处理器结构,异常处理、系统控制过程、存储处理、ARM内部资源、各种I/O接口;嵌入式系统开发应用方法。本课程将为学生今后从事嵌入式系统研究与开发打下坚实的基础。
本课程为工科本科生的选修课程之一,在强调概念和理论的同时,更要注重加强引导学生对课程内容的深入理解,注重引导学生自学,注重加强学生上机练习。课程要求学生必须同时掌握硬件与软件方面的基本知识与技能,了解和熟悉一些常用的嵌入式系统的开发工具和开发方法,培养学生软件与硬件综合测试与调试的技能。
成绩考核形式:末考成绩(闭卷考试)(70%)+平时成绩(平时测验、作业、课堂提问、课堂讨论等)(30%)。成绩评定采用百分制,60分为及格。
三、课程教学内容
第一章 ARM概述及其编程模型
1.教学基本要求
理解和掌握ARM处理器的应用领域、ARM处理器的分类以及处理器的基本构成。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解ARM体系版本的命名格式、以及ARM处理器各个系列比如ARM7、ARM9等之间的差异,了解ARM处理器的组成,主要包括ARM寄存器、ARM存储系统、异常中断系统等。
3.教学重点和难点
教学重点是ARM处理器各个系列的性能参数、中断响应和存储空间格式。教学难点是各系列间的差异、中断响应过程、存储空间访问。
4.教学内容
(1)ARM技术的应用领域及其特点
主要知识点:IP核。
(2)ARM的体系结构的版本及命名方式
主要知识点:ARM体系的各个版本的特点。
(3)ARM处理器系列
主要知识点:ARM7、ARM9等各个系列的特点。
(4)ARM处理器模式
主要知识点:7种模式以及特点。
(5)ARM处理器寄存器介绍
主要知识点:37个寄存器的功能和使用方法。
(6)ARM体系的异常中断
主要知识点:异常中断的类型、中断响应过程、中断程序的返回。
(7)ARM体系中的存储系统
主要知识点:存储器空间、存储器格式。
第二章 ARM指令分类及其寻址方式
1.教学基本要求
理解和掌握ARM指令集分类以及寻址方式。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解数据处理的操作数寻址方式、各种Load/Store指令的寻址方式。
3.教学重点和难点
教学重点是寻址方式。教学难点是字及无符号操作字节的Load/Store指令的寻址方式、杂类Load/Store指令的寻址方式、批量Load/Store指令的寻址方式、协处理器Load/Store指令的寻址方式。
4.教学内容
(1)ARM指令集概要介绍
主要知识点:ARM指令的分类;ARM指令的编码格式;ARM指令的条件码域。
(2)ARM指令寻址方式
主要知识点:数据处理的操作数寻址方式;字及无符号操作字节的Load/Store指令的寻址方式;杂类Load/Store指令的寻址方式;批量Load/Store指令的寻址方式;协处理器Load/Store指令的寻址方式。
第三章 ARM指令集介绍
1.教学基本要求
理解和掌握常用的ARM指令集、基本的ARM指令功能段以及Thumb指令。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解ARM指令集,主要包括跳转、数据处理指令、状态寄存器访问指令、异常中断产生指令等,并且需要掌握算术逻辑运算指令的应用、跳转指令的应用、批量Load/Store指令的应用等。
3.教学重点和难点
教学重点是各个指令集的格式、各种指令功能段的应用。教学难点是各种指令功能段的应用。
4.教学内容
(1)ARM指令集
主要知识点:跳转指令、数据处理指令、乘法指令、杂类的算术指令、状态寄存器访问指令、Load/Store内存访问指令、批量Load/Store指令访问指令、异常中断产生指令。
(2)一些基本的ARM指令功能段
主要知识点:算术逻辑运算指令的应用、跳转指令的应用、批量Load/Store指令的应用。
(3)Thumb指令介绍
主要知识点:Thumb指令的功能。
第四章 ARM汇编语言程序设计
1.教学基本要求
理解和掌握伪操作的定义以及形成伪操作的方式、ARM汇编语言的伪指令,了解ARM汇编语言的语句格式和程序格式,并且要掌握汇编语言编译器armasm的使用,最终让学生掌握ARM汇编语言设计的方法。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解伪操作如何定义,主要包括数据定义伪操作、符号定义伪操作、汇编控制伪操作、栈中数据描述伪操作等,了解汇编语言的符号、汇编语言的表达式、汇编语言的程序格式以及子程序调用等。
3.教学重点和难点
教学重点是汇编语言的伪操作、汇编语言的符号和表达式以及程序格式和子程序调用。教学难点是汇编语言的伪操作、汇编语言的程序格式和程序调用。
4.教学内容
(1)伪操作
主要知识点:符号定义伪操作;数据定义伪操作;汇编控制伪操作;框架描述伪操作;信息报告伪操作。
(2)ARM汇编语言伪指令
主要知识点:ADR;ADRL;LDR;NOP。
(3)ARM汇编语言语句格式
主要知识点:变量;标号;局部标号;数字常量;字符串表达式;数字表达式;基于寄存器和基于pc的表达式;逻辑表达式。
(4)ARM汇编语言程序格式
主要知识点:段的概念以及用AREA定义段;BL命令调用子程序。
(5)ARM汇编编译器的使用
主要知识点:ARMASM的各个参数。
(6)汇编语言程序设计距离
主要知识点:使用伪操作、跳转表等的程序实例。
第五章 ARM存储系统
1.教学基本要求
理解和掌握存储管理的各种技术,系统包含的各种存储器件以及如何通过CACHE和WRITEBUFFER技术提高系统的整体性能,并且要掌握如何实现虚拟空间到物理空间的映射等。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解ARM中用于存储管理的系统控制协处理器CP15、ARM中的存储管理部件MMU、ARM中的CACHE以及WRITEBUFFER技术。
3.教学重点和难点
教学重点是CP15、MMU的使用。教学难点是CP15寄存器的使用、MMU如何实现地址映射。
4.教学内容
(1)ARM存储器系统概述
主要知识点:存储器件;空间映射机制;存储系统的各个部件。
(2)ARM中用于存储管理的系统控制协处理器CP15
主要知识点:MCR MRC访问CP15寄存器;寄存器C0、C1。
(3)存储器管理单元MMU
主要知识点:禁止/使能MMU;MMU中地址变换过程;页表的概念;一级页表的地址变换;二级页表的地址变换过程;MMU中的存储访问权限控制;ARM中的存储访问失效。
(4)高速缓冲存储器和写缓冲区
主要知识点:CACHE的工作原理和地址映像方法;CACHE的分类;CACHE的替换算法;CACHE的存储系统的一致性。
(5)快速上下文切换技术
主要知识点:切换技术原理;快速上下文切换技术编程接口。
(6)与存储系统相关的程序设计指南
主要知识点:存储器格式;非对齐的存储访问操作;指令预取和子修改代码;存储映射的I/O空间。
(7)ARM存储系统的实例
主要知识点:L7205中的MMU、SDRAM。
第六章 ATPCS介绍
1.教学基本要求
理解和掌握ARM/Thumb过程调用的标准ATPCS,并且使用这些标准实现子程序调用。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解子程序调用过程中寄存器的使用规则、数据栈的使用规则和参数的传递的规则等。
3.教学重点和难点
教学重点是寄存器的使用规则、参数传递规则、数据栈使用规则。教学难点是寄存器、数据栈的使用规则。
4.教学内容
(1)APTCS概述
主要知识点:APTCS规定的规则。
(2)基本APTCS
主要知识点:寄存器的使用规则、数据栈使用规则、参数传递规则。
(3)几种特定的ATPCS
主要知识点:支持数据栈限制检查的ATPCS;支持只读段位值无关(ROPI)的ATPCS;支持可读写段位置无关(RWPI)的ATPCS;支持ARM程序和Thumb程序混合使用的ATPCS;处理浮点运算的ATPCS。
第七章 ARM程序和Thumb程序混合使用
1.教学基本要求
理解和掌握ARM程序和Thumb程序混合使用的方法,学会使用编译时可用的选项和编程技术。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解ARM程序和Thumb程序混合使用的方法,选项-apcs/interwork如何使用。
3.教学重点和难点
教学重点是-apcs/interwork如何使用。教学难点是-apcs/interwork如何使用。
4.教学内容
(1)概述
主要知识点:ARM程序和Thumb程序混合使用的场合;在编译或者汇编时使用选项-apcs/interwork。
(2)在汇编语言程序中通过用户代码支持interwork
主要知识点:程序状态切换指令BX指令、BLX指令;CODE16和CODE32伪操作的使用。
(3)在C/C++程序中实现interwork
主要知识点:tcc –apcs/interwork;armcc –apcs/interwork;tcpp –apcs/interwork armcpp –apcs/interwork。
(4)在汇编语言程序中通过连接器支持interwork
主要知识点:veneers指令的使用。
第八章 C/C++以及汇编语言的混合编程
1.教学基本要求
理解和掌握ARM汇编程序以及C/C++程序之间相互调用的技术,了解C编译器中内嵌的汇编器的使用方法。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生掌握内嵌汇编器的使用,并学会使用_asm如何来标识汇编程序;使用IMPORT 、LDR 和STR等指令来在汇编程序中使用C程序变量;使用extern来实现C++程序中使用C程序头文件。
3.教学重点和难点
教学重点是指令IMPORT 、LDR 、STR以及extern的使用。
4.教学内容
(1)内嵌汇编器的使用
主要知识点:操作数、物理寄存器、常亮、指令展开等ARM指令在C/C++中的注意事项;内嵌的汇编器和armasm的区别;_asm命令的使用。
(2)从汇编程序中访问C程序变量
主要知识点: IMPROT、LDR、STR等指令实现在汇编中使用C中的全局变量。
(3)汇编程序、C程序以及C++程序的相互调用
主要知识点:汇编程序、C程序以及C++程序的相互调用实例。
第九章 异常中断处理
1.教学基本要求
理解和掌握ARM体系中异常中断技术。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解异常中断处理的处理过程;各种异常中断处理的进入和返回机制,在应用程序中使用异常中断处理的方法以及各种异常中断的详细使用技术。
3.教学重点和难点
教学重点是中断的进入和返回以及各种异常中断的使用方法。教学难点是各种异常中断的使用方法。
4.教学内容
(1)ARM中异常中断处理概述
主要知识点:异常中断的种类;异常中断向量表及异常中断优先级;异常中断使用的寄存器。
(2)进入和退出异常中断的过程
主要知识点:各种异常中断处理程序中CPSR、SPSR、IRQ、FIQ如何使用和设置。
(3)在应用程序中安装异常中断处理程序
主要知识点:使用地址0X0ROM地址和使用0X0RAM地址在系统启动中安装异常中断处理程序;在C程序中安装异常中断处理程序。
(4)SWI异常中断处理程序
主要知识点:两级SWI异常中断处理;特权模式下调用SWI;应用程序中调用SWI; 应用程序中动态调用SWI。
(5)FIQ和IRQ异常中断处理程序
主要知识点:重入和不可重入的IRQ/FIQ。
(6)复位异常中断处理程序
主要知识点:复位异常中断处理程序的处理。
(7)未定义指令异常中断
主要知识点:未定义指令异常中断的处理过程。
(8)指令预取中止异常中断处理程序
主要知识点:含有MMU的指令预取中止异常中断处理过程。
(9)数据访问中止异常中断处理程序
主要知识点:可能引起数据访问中止异常中断处理程序的三种情况。
第十章 ARM C/C++编译器
1.教学基本要求
理解和掌握ARM体系中C/C++语言程序设计的基本知识;掌握开发嵌入式C/C++应用程序的基本知识和方法,进一步了解嵌入式应用系统的特点。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解ARM C/C++语言的一些特性;ARM C/C++编译器的使用方法;ARM C/C++运行时库的使用方法。
3.教学重点和难点
教学重点是ARM编译器命令行格式,ARM C/C++运行时库的使用方法。教学难点是ARM编译器命令行格式。
4.教学内容
(1)ARM C/C++编译器概述
主要知识点:编译器armcc、tcc、armcpp、tcpp;编译器输出的文件格式;ARM 中包含的C\C++语言的库 ARM C、Rogue Wave C++、支持库;编译时搜索头文件和源文件的方式。
(2)ARM编译器命令行格式
主要知识点:过程调用标准;设置源程序语言类型;制定搜索路径;设置输出文件类型;指定目标处理器和ARM体系版本;生成调试信息;代码生成的控制;控制警告信息的产生;控制错误信息。
(3)ARM 编译器中的pragmas
主要知识点:ARM 编译器支持的各种pragmas。
(4)ARM 编译器特定的关键词
主要知识点:声明函数的关键词_asm、_inline、_irq、_pure等;声明变量的关键词register、_int64等;用于限定数据类型的关键词_align等。
(5)ARM编译器支持的基本数据类型
主要知识点:char、short、Int等。
(6)ARM编译器中预定义宏
主要知识点:各种预定义宏以及应用场合。
(7)ARM中C/C++库
主要知识点:在semihosted环境下使用C/C++运行库;在semihosted环境下使用C/C++运行库;在nonsemihosted环境下使用C/C++运行库;。
第十一章 RAM连接器
1.教学基本要求
理解和掌握如何由目标文件以及库文件得到可执行的映像文件。
2.要求学生掌握的基本概念、理论、技能
通过本章学习使学生了解ELF格式的可执行映像文件的组成;ARM连接器的是使用方法,以及连接过程中的各个操作。
3.教学重点和难点
教学重点是映像文件的组成;ARM连接器介绍以及其生成符;连接器的优化功能;运行时库的使用。教学难点是映像文件;运行时库的使用等。
4.教学内容
(1)ARM映像文件
主要知识点:映像文件的组成和入口点。
(2)ARM连接器介绍
主要知识点:armlink的使用。
(3)ARM连接器生成的符号
主要知识点:ARM连接器生成的与域相关的符号;ARM连接器生成的与输出端相关的符号;ARM连接器生成的与输入端相关的符号。
(4)连接器优化功能
主要知识点:删除重复的调试信息段;删除重复的代码段;删除未使用的段;生成小代码段。
(5)运行时库的使用
主要知识点:使用库的步骤;查找需要的C/C++运行时库等。
(6)从一个映像文件中使用另一个映像文件
主要知识点:symdefs的组成、建立以及使用。
(7)隐藏或者重命名全局符号
主要知识点:stering文件的格式和命令。
(8)ARM连接器命令行选项
主要知识点:-help、-vsn等。
(9)使用scatter文件定义映像文件的地址映射
主要知识点:加载时域的描述、运行时域的描述、输入段描述、输入段选择符等。
四、学时分配
1.讲授内容及学时分配
章序 |
内容 |
课时 |
备注 |
一 |
ARM概述及其编程模型 |
2 |
|
二 |
ARM指令分类及其寻址方式 |
4 |
|
三 |
ARM指令集介绍 |
4 |
|
四 |
ARM汇编语言程序设计 |
4 |
|
五 |
ARM存储系统 |
3 |
|
六 |
ATPCS介绍 |
1 |
|
七 |
ARM程序和Thumb程序混合编程 |
4 |
|
八 |
C\C++以及汇编语言的混合编程 |
2 |
|
九 |
异常中断处理 |
4 |
|
十 |
ARM C\C++编译器 |
2 |
|
十一 |
ARM 连接器 |
2 |
|
合计 |
32 |
|
2.实践内容及学时分配
序号 |
项目 名称 |
内容提要 |
学时 |
必/选开 |
1 |
ADS工程项目实践 |
1.ADS安装与配置。 2.ADS集成开发环境应用。 3.ADS CodeWarrior应用。 |
4 |
必开 |
2 |
串口通信应用 |
1.板级支持包。 2.串口通信。 |
4 |
必开 |
3 |
通用I/O口应用 |
1.班级驱动程序配置开发。 2.I/O口通信。 |
4 |
必开 |
4 |
中断应用 |
1.中断向量表 2.中断保存栈。 3.中断响应机制。 4.中断开关和优先级控制。 5. 中断处理返回 |
4 |
必开 |
合计 |
16 |
|
五、主用教材及参考书
(一)主用教材:
《ARM体系结构与编程》主编:杜春雷 出版社:清华大学出版社 出版时间:2003年。
(二)参考书:
1. 《ARM嵌入式系统基础教程》主编:周立功 出版社:北京航空航天大学出版社 出版时间:2008年。
2. 《ARM体系结构及其嵌入式处理器》主编:任哲 出版社:北京航空航天大学出版社 出版时间:2008年。
3.《嵌入式系统基础教程》主编:金建设 出版社:大连理工出版社 出版时间:2009年。