嵌入式ARM系统原理与实例开发(第2版)04 ADS环境下汇编C编程PPT课件
嵌入式系统C语言编程基础PPT课件

精选ppt
小测验?
精选ppt
Quiz 1
• 所有嵌入式系统的主流程最后都进入一个 死循环,怎样用C语言实现一个死循环?
精选ppt
Quiz 2
• while(){….}和do{….}while()有什么区别?
精选ppt
Quiz 3
• 用变量a给出下列定义:
a) 一个整型数 b) 一个指向整型数的指针 c) 一个有10个整型数的的数组 d) 一个有10个指针的数组,该指针是指向一个整型
精选ppt
Quiz 10
• 请评论下面一段程序代码: void test() { char string[10]; char *str = “0123456789”; strcpy(string,str); }
精选ppt
Quiz 11
• 请评论下面一段程序代码: void GetMemory(char *p){ p = (char *)malloc(0x20); } void Test(void){ char *str = NULL; GetMemory(str); strcpy(str,”Hello World!”); printf(str); }
数的
精选ppt
Quiz 4
• 关键字static的作用是什么?
精选ppt
Quiz 5
• 关键字const的作用是什么?
精选ppt
Quiz 6
• 定义一个标准宏MIN ,这个宏输入两个参 数并返回较小的一个。
精选ppt
Quiz 7
• 嵌入式系统中经常要对变量或寄存器进行 位操作。给定一个int型变量a,写两段代码, 第一个将a的bit 3置为1,第二个将a的bit 3 置为0。以上两个操作中,要保持其它位不 变。
第四讲 ARM汇编语言及嵌入式C混合编程ppt课件

TM
23
内嵌汇编器与armasm汇编器的区别
指令中使用的C变量不能与任何物理寄存器同名, 否则会造成混乱
不支持BX和BLX指令 使用内嵌汇编器,不能通过对程序计数器PC赋值,
(4)通用寄存器R13用作数据栈指针,记作 SP。
TM
5
(5)通用寄存器R14用作链接寄存器 ;
(6)通用寄存器R15用作程序计数器,记作 PC 。
TM
6
8.5.2数据栈使用规则
过程调用标准规定数据栈为FD类型,并且对 数据栈的操作时要求8字节对齐的。
TM
7
8.5.3参数传递规则
1.参数个数可变的子程序参数传递规则 对于参数个数可变的子程序,当参数个数不
超过4个时,可以使用寄存器R0~R3来传递; 当参数个数超过4个时,还可以使用数据栈进 行参数传递。
TM
8
2.参数个数固定的子程序参数传递规则
如果系统不包含浮点运算的硬件部件且没有浮点参 数时,则依次将各参数传送到寄存器R0~R3中, 如果参数个数多于4个,将剩余的字数据通过数据 栈来传递;
如果包括浮点参数则要通过相应的规则将浮点参数 转换为整数参数,然后依次将各参数传送到寄存器 R0~R3中。如果参数多于4个,将剩余字数据传送 到数据栈中,入栈的顺序与参数顺序相反,即最后 一个字数据先入栈。
TM
35
每一步:建立启动C程序的代码,请读者参阅前面 的章节自行建立。
每二步:建立C语言源文件main.c
TM
36
每三步:建立汇编源文件Factorial.s
ARM嵌入式开发实例解析PPT教学课件

名公司Keil(现已并入
ARM公司)开发嵌入式
微控制器软件开发平台,
也是目前ARM嵌入式单片
机开发的主流工具。在该
软件平台中,uVision的
界面与微软VC++的界面类
似,具有友好的人机交互
环境,启动界面如右图所
示。
第18页/共28页
18
RealView MDK用户操作界面
• 在uVision开发工具链中 包含了指令模拟器,用户 可以通过使用该功能来模 拟“纯粹”的ARM嵌入式 代码,即用户不需要外部 硬件平台的支持也可以在 软件平台中模拟代码的运 行,基本的界面框架如右 图所示。
嵌入式系统开发要点
它分散在有通信连接的宿主机与目标机环境之中:
• 宿主机(Host)是一台通用计算机,一般是PC机。它通过串口或网 络连接与目标机通信。
• 目标机(Target) 可以是嵌入式应用软件的实际运行环境(可以是 能替代实际环境的仿真系统)
典型的开发环境
源程序 目标文件
第9页/共28页
可执行文件
• 优点:简单方便,不需要目标板,成本低 • 缺点:功能非常有限,无法实时调试 大多数调试工具都提供Simulator功能
第12页/共28页
• 软件调试(Debugger)(监控器方式)
主机和目标板通过某种接口(通常是串口)连接,主机 上提供调试界面,待调试软件下载到目标板上运行。
这 种 方 式 的 先 决 条 件 是 要 在 H o s t 和 Ta r g e t 之 间 建 立 起 通信联系(目标板上称为监控程序Monitor)
• 优点:纯软件,价格较低,简单,软件调试能力较强
• 缺点:需要事先烧制Monitor(往往需多次试验才能
《嵌入式ARM教案》课件

《嵌入式ARM教案》课件第一章:嵌入式系统概述1.1 嵌入式系统的定义介绍嵌入式系统的概念、特点和应用领域解释嵌入式系统与通用计算机系统的区别1.2 嵌入式系统的历史与发展概述嵌入式系统的发展历程介绍嵌入式系统在不同领域的应用发展情况1.3 嵌入式系统的组成与架构讲解嵌入式系统的常见架构介绍嵌入式系统的主要组成部分及其作用1.4 嵌入式系统的优势与挑战阐述嵌入式系统的优势分析嵌入式系统面临的挑战和发展趋势第二章:ARM处理器简介2.1 ARM处理器的发展历程介绍ARM公司的起源和发展历程讲解ARM处理器的发展阶段和产品系列2.2 ARM处理器的特点与优势阐述ARM处理器的特点分析ARM处理器在嵌入式系统中的应用优势2.3 ARM处理器的架构与工作原理讲解ARM处理器的架构设计介绍ARM处理器的工作原理和指令集2.4 ARM处理器的选型与评估指导如何选择合适的ARM处理器介绍评估ARM处理器性能的方法和指标第三章:嵌入式操作系统基础3.1 嵌入式操作系统的概念与分类解释嵌入式操作系统的定义和分类介绍常见的嵌入式操作系统及其特点3.2 嵌入式操作系统的核心功能与架构讲解嵌入式操作系统的核心功能阐述嵌入式操作系统的常见架构设计3.3 嵌入式操作系统的移植与优化介绍嵌入式操作系统移植的基本步骤讲解嵌入式操作系统的优化方法和技巧3.4 嵌入式操作系统的应用与案例分析分析嵌入式操作系统在实际应用中的案例探讨嵌入式操作系统的发展趋势和挑战第四章:嵌入式系统设计与开发流程4.1 嵌入式系统设计的基本原则介绍嵌入式系统设计的重要原则讲解设计过程中需要考虑的因素4.2 嵌入式系统硬件设计讲解嵌入式系统硬件设计的基本步骤和方法介绍硬件选型和硬件设计中的注意事项4.3 嵌入式系统软件设计阐述嵌入式系统软件设计的基本步骤和方法讲解软件开发工具和编程语言的选择4.4 嵌入式系统开发的流程与实践介绍嵌入式系统开发的典型流程分析实际开发过程中需要注意的问题和实践经验第五章:嵌入式系统编程基础5.1 嵌入式编程语言概述介绍嵌入式编程的常用语言及其特点分析不同编程语言在嵌入式系统中的应用场景5.2 C语言编程基础讲解C语言的基本语法和编程技巧介绍C语言在嵌入式编程中的应用和实践5.3 汇编语言编程基础介绍汇编语言的基本概念和语法讲解汇编语言在嵌入式编程中的应用和实践5.4 嵌入式编程的实践技巧讲解嵌入式编程的常见技巧和注意事项分析实际项目中遇到的问题和解决方法《嵌入式ARM教案》课件第六章:嵌入式系统硬件接口与驱动6.1 嵌入式系统硬件接口概述介绍嵌入式系统中常见的硬件接口类型讲解硬件接口的工作原理和功能6.2 UART接口与驱动编程讲解UART接口的基本概念和功能介绍UART接口的驱动编程方法和实践6.3 I2C接口与驱动编程介绍I2C接口的基本概念和协议讲解I2C接口的驱动编程方法和实践6.4 SPI接口与驱动编程讲解SPI接口的基本概念和协议介绍SPI接口的驱动编程方法和实践第七章:嵌入式系统存储与文件系统7.1 嵌入式系统存储概述介绍嵌入式系统中常见的存储设备和技术讲解存储器接口和存储器控制器的选择7.2 NAND闪存与驱动编程介绍NAND闪存的基本概念和特点讲解NAND闪存的驱动编程方法和实践7.3 NOR闪存与驱动编程讲解NOR闪存的基本概念和特点介绍NOR闪存的驱动编程方法和实践7.4 文件系统的设计与实现讲解嵌入式文件系统的设计原理介绍常见嵌入式文件系统的实现方法和实践第八章:嵌入式系统网络通信8.1 嵌入式系统网络通信基础介绍嵌入式系统网络通信的基本概念和技术讲解网络通信协议和网络架构8.2 TCP/IP协议栈与嵌入式网络应用讲解TCP/IP协议栈的基本原理和组成介绍基于TCP/IP协议栈的嵌入式网络应用实践8.3 Wi-Fi通信模块与驱动编程介绍Wi-Fi通信模块的基本概念和功能讲解Wi-Fi通信模块的驱动编程方法和实践8.4 蓝牙通信模块与驱动编程讲解蓝牙通信模块的基本概念和功能介绍蓝牙通信模块的驱动编程方法和实践第九章:嵌入式系统实时性与调度策略9.1 嵌入式系统实时性概述讲解嵌入式系统实时性的概念和重要性介绍实时系统的分类和实时性要求9.2 嵌入式调度策略与算法讲解嵌入式系统的调度策略和算法分析不同调度策略的优缺点和适用场景9.3 实时操作系统(RTOS)简介介绍实时操作系统的基本概念和特点讲解RTOS在嵌入式系统中的应用和实践9.4 实时调度器的实现与优化讲解实时调度器的实现方法和流程介绍调度器的优化技巧和注意事项第十章:嵌入式系统项目管理与实践10.1 嵌入式系统项目管理概述介绍嵌入式系统项目管理的概念和重要性讲解项目管理工具和方法在嵌入式系统中的应用10.2 项目需求分析与规划讲解项目需求分析和规划的方法介绍需求文档编写和项目进度管理的实践经验10.3 嵌入式系统开发的实践技巧讲解嵌入式系统开发中的实践技巧和注意事项分享实际项目开发中的经验和最佳实践10.4 项目验收与维护介绍项目验收的标准和方法讲解项目维护和升级的策略与实践《嵌入式ARM教案》课件第十一章:嵌入式系统安全与加密技术11.1 嵌入式系统安全概述讲解嵌入式系统安全的重要性介绍常见的嵌入式系统安全威胁和攻击手段11.2 加密技术在嵌入式系统中的应用介绍加密技术的基本原理和算法讲解加密技术在嵌入式系统中的应用场景和实践11.3 安全存储与传输讲解如何在嵌入式系统中实现安全存储和传输介绍常见的加密存储和传输技术及其实现方法11.4 安全认证与授权讲解嵌入式系统中的安全认证和授权机制介绍常见的认证和授权方法及其在嵌入式系统中的应用第十二章:物联网与嵌入式系统的融合12.1 物联网概述介绍物联网的概念、架构和应用领域讲解物联网与嵌入式系统的关联和融合趋势12.2 物联网协议与技术讲解物联网中常用的通信协议和技术介绍物联网协议栈和网络架构12.3 物联网在嵌入式系统中的应用案例分析物联网在嵌入式系统中的应用案例探讨物联网技术在嵌入式系统中的实践经验和挑战12.4 物联网安全与隐私保护讲解物联网安全的重要性和挑战介绍物联网中的安全技术和隐私保护措施第十三章:嵌入式系统在智能家居的应用13.1 智能家居系统概述介绍智能家居系统的概念、架构和应用讲解智能家居系统与嵌入式系统的关联和融合13.2 智能家居设备与控制讲解智能家居设备的选择和控制方法介绍智能家居设备的嵌入式系统设计和开发实践13.3 智能家居平台的构建与优化讲解智能家居平台的构建方法和实践介绍智能家居平台的优化技巧和注意事项13.4 智能家居安全与隐私保护讲解智能家居系统中的安全问题和隐私保护需求介绍智能家居系统中的安全技术和隐私保护措施第十四章:嵌入式系统在工业控制的应用14.1 工业控制系统概述介绍工业控制系统的概念、架构和应用领域讲解嵌入式系统在工业控制中的应用和重要性14.2 工业控制设备与接口讲解工业控制设备的选择和接口技术介绍工业控制设备的嵌入式系统设计和开发实践14.3 工业控制协议与通信讲解工业控制中常用的通信协议和技术介绍工业控制协议的实现和通信实践14.4 工业控制系统的安全性与优化讲解工业控制系统中的安全问题和优化需求介绍工业控制系统中的安全技术和优化措施第十五章:嵌入式系统在自动驾驶的应用15.1 自动驾驶系统概述介绍自动驾驶系统的概念、架构和应用前景讲解嵌入式系统在自动驾驶中的应用和挑战15.2 自动驾驶感知与决策讲解自动驾驶系统中的感知技术和决策算法介绍嵌入式系统在自动驾驶感知和决策中的应用15.3 自动驾驶控制与执行讲解自动驾驶系统中的控制技术和执行策略介绍嵌入式系统在自动驾驶控制和执行中的应用15.4 自动驾驶安全与伦理问题讲解自动驾驶系统中的安全问题和伦理挑战介绍自动驾驶系统中的安全技术和伦理指导原则重点和难点解析1. 嵌入式系统的基本概念、特点和应用领域。
嵌入式系统原理与开发PPT参考课件

第二章 嵌入式处理器(上)
第二章 嵌入式处理器
2.1 引言 2.2 嵌入式处理器概述 2.3 ARM处理器基础 2.4 ARM指令系统 2.5 ARM程序设计基础
嵌入式系统原理与开发》
2.1 引言
嵌入式处理器是嵌入式系统最核心的部件。 RISC结构已经被证明是嵌入式处理器最适合的 结构。 ARM处理器是真正意义上的RISC结构的处理器, 且具有处理速度快、功耗低、价格便宜等方面 的优点,得到了广泛使用。
1. 嵌入式微控制器(MicroController)
比较有代表性的通用系列包括8051、C166/167、 MCS-251、MCS-96/196/296、P51XA、MC 68HC05/11/12/16、68300等。
半通用系列,如支持USB接口的MCU8XC930/931、 C540、C541;支持I2C、CAN、LCD及众多专用MCU和 兼容系列。
嵌入式系统原理与开发》
例:Intel 8085 Microprocessor
➢ Introduced in 1974
➢ 8-bit architecture
➢ Still used in some
➢ microcontroller ➢ applications !
嵌入式系统原理与开发》
2.2.1 嵌入式处理器的分类
SoC最大的特点就是成功实现了软硬件无缝结合,直 接在处理器片内嵌入操作系统的代码模块,满足了单片系 统所要求的高密度、高速度、高性能、小体积、低电压和 低功耗等指标。
嵌入式系统原理与开发》
2.2.1 嵌入式处理器的分类
4. 嵌入式片上系统 (System on Chip )
目前比较典型的几款SoC产品包括Siemens 的TriCore、Philips的Smart XA、Motorola的 M-Core、某些ARM系列器件、Echelon和 Motorola联合研制的Neuron芯片等。
最新嵌入式系统2PPT课件

是否包括目标硬件设备驱动程序
是否具有可裁剪性
选择编程语言
大部分系统使用C、C++、Java
有严格时间要求和访问硬件部分使用汇编语言
可视化应用使用Embedded Visual Tools
8
评估板的选择
具有设计参考价值,使系统的硬件、软件开发同时进行,可
加快开发进度,降低开发风险。
编写板级支持包BSP代码
与硬件结构有关。不同操作系统供应商会提供BSP的开发方
法和开发模板。
软件开发过程
开发过程
建立交叉开发环境(如gcc、ARM SDT、Tornado等)
交叉编译和链接
重定位和下载
联机调试
9
在主机系统上对软件进行仿真验证 在目标系统上运行,测试软件功能 代码优化
清除无用代码 清除调试代码 浮点运算尽量使用浮点处理器 访问最频繁的变量使用寄存器型或自动变量 耗时大的函数使用汇编语言编写 编译时设置较高的优先级(通常0~3级,3级最高)
10
2.4 系统测试
硬件测试
部件功能测试、可靠性测试、电磁兼容性测试、性 能指标测试(如通信系统的误码率)等
软件测试
功能测试(黑盒测试)
输入测试数据,观察输出是否为预期结果。 极限情况测试(如使输入通道、内存缓冲区、磁盘控制器
等超载) 边界测试(输入特定输入范围边界的值) 异常测试(测试触发异常模式) 随机测试(如测试用户界面代码的健壮性)
特定部分。
性能测试
对系统的综合性能进行测试
12
第2章 嵌入式系统开发过程
本章主要介绍以下内容:
需求分析 系统设计 系统实现 系统测试
1
选择操作系统
实时系统?非实时系统?有无人机界面要求?无需操作 系统?
ARM嵌入式系统简介PPT课件
9
何谓嵌入式系统
广义地说
一个嵌入式系统就是一个具有特定功能或用途的 计算机软硬件集合体。
即以应用为中心、以计算机技术为基础、软件硬 件可裁剪、适应应用系统对功能、可靠性、成本、 体积、功耗严格要求的专用计算机系统 。
在工业和服务领域中,大量嵌入式技术也已经应 用于工业控制、数控机床、智能工具、工业机器 人、服务机器人等各个行业,正在逐渐改变着传 统的工业生产和服务方式
3
何谓嵌入式系统
国际芯片市场来看
据统计每年只有10-20%的计算机芯片是为台式PC 或膝上电脑而设计的。
嵌入式系统设计制造的CPU每年大概有10-20亿片。
11
何谓嵌入式系统
嵌入式处理器的分类和现状 微控制器(MCU) 数字信号处理器(DSP) 片上系统(SOC) 可编程片上系统(SOPC)
12
何谓嵌入式系统
MCU 嵌入式微控制器的典型代表是单片机,这种8
位的电子器件,目前在嵌入式设备中仍然有着极 其广泛的应用。
单片机芯片内部集成ROM/EPROM、RAM、 总线逻辑、定时/计数器、看门狗、I/O、串行 口、脉宽调制输出、A/D、D/A、Flash、 EEPROM等各种必要功能和外设。
DSP是运算密集处理器,一般用在快速执行算法, 用在控制比较困难场合。由于为了追求高执行效 率,不适合运行操作系统,核心代码使用汇编。
15
何谓嵌入式系统
SOC
SOC(片上系统)是IC设计的发展趋势。采用 SOC设计技术,可以大幅度地提高系统的可靠性, 减少系统的面积和功耗,降低系统成本,极大地 提高系统的性能价格比。
ARM体系结构与编程(第2版)_ppt
MRS:状态寄存器到通用寄存器的传送指令。
28
3.1.6 Load/Store 内存访问指令
Load指令用于从内存中读取数据放入寄存器中; Store指令用于将寄存器中的数据保存到内存。 ARM有两大类的Load/Store指令:一类用于操作 32位的字类型数据以及8位无符号的字节类型数 据;另一类用于操作16位半字类型的数据以及8位 的有符号字节类型的数据。 Load/Store 内存访问指令的一个操作数放在寄存 器中,另一个操作数的寻址方式参见2.2节。
MOV:数据传送指令。
MVN:数据求反传送指令。
CMP:比较指令。 CMN:基于相反数的比较指令。
TST:位测试指令。
TEQ:相等测试指令。 ADD:加法指令。
SUB:减法指令。
24
3.1.2 数据处理指令
RSB:逆向减法指令。 ADC:带位加法指令。 SBC:带位减法指令。 RSC:带位逆向减法指令。 AND:逻辑与操作指令。 BIC:位清除指令。 EOR:逻辑异或操作指令。 ORR:逻辑或操作指令。
10
2.2.2 字及无符号字节的Load/Store指令的寻址方式 各种类型的Load/Store指令的寻址方式由两部分组 成。一部分为一个的基址寄存器;另一部分为一个 地址偏移量。基址寄存器可以为任一个通用寄存 器;地址偏移量可以有以下3种格式:
立即数。 寄存器。 寄存器及一个移位常数。
同样,寻址方式的地址计算方法有如下3种:
25
3.1.3 乘法指令
ARM有两类乘法指令:一类为32位的乘法指令,即 乘法操作的结果为32位;另一类为64位的乘法指 令,即乘法操作的结果为64位。两类指令共有以下 6条。
嵌入式系统PPTPPT课件
物联网与5G技术
嵌入式系统将与云计算和边缘计算技术结 合,实现数据处理和分析能力的提升。
物联网和5G通信技术的发展为嵌入式系统 提供了更广阔的应用空间,嵌入式系统将 更加网络化、智能化。
02 嵌入式系统硬件
微控制器
微控制器是嵌入式系统的核心,它是一 种集成电路芯片,包含了计算机的基本 组成要素,如中央处理器、存储器、输
嵌入式系统PPT课件
目录
CONTENTS
• 嵌入式系统概述 • 嵌入式系统硬件 • 嵌入式系统软件 • 嵌入式系统开发流程 • 嵌入式系统应用案例 • 嵌入式系统面临的挑战与解决方案
01 嵌入式系统概述
定义与特点
定义
嵌入式系统是一种专用的计算机系统 ,主要用于控制、监视或帮助操作机 器设备。
特点
嵌入式系统在智能家居控制系统中发 挥着核心作用,通过嵌入式处理器和 相关硬件设备,实现对家庭设备的控 制和管理。
智能家居控制系统可以实现的功能包 括:远程控制、定时控制、语音控制 等,为家庭生活带来便利和舒适。
工业自动化控制系统
工业自动化控制系统是嵌入式系统的另一个重要应用领域,通过嵌入式系统技术, 可以实现生产过程的自动化和智能化。
调研市场需求
了解行业发展趋势和市场需求,为系统设计提供参考 和依据。
制定开发计划
根据需求分析结果,制定详细的开发计划,包括时间 安排、人员分工、资源需求等。
系统设计
硬件设计
根据系统需求,设计合适的硬件架构,包括 处理器、存储器、接口电路等。
软件设计
设计嵌入式系统的软件架构,包括操作系统、 中间件和应用软件等。
01
02
03
系统集成
将硬件和软件集成在一起, 形成完整的嵌入式系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式ARM系统原理与实例开发
19.08.2020
1
嵌入式ARM系统原理与实例开发(第2版)
整体概述
概况一
点击此处输入相关文本内容 点击此处输入相关文本内容
概况二
点击此处输入相关文本内容 点击此处输入相关文本内容
概况三
点击此处输入相关文本内容 点击此处输入相关文本内容
19.08.2020
北京大学出版社出版
14
嵌入式ARM系统原理与实例开发(第2版)
6
嵌入式ARM系统原理与实例开发(第2版)
使用main()函数时标准C调用过程
(1)汇编程序入口 (2)系统初始化,设置中断向量 (3)关看门狗及中断
(1)初始化存储设备 (2)初始化堆栈空间 (3)初始化必要的硬件设备
IMPORT _main LDR lr, =_main MOV pc,lr
_main
• (2)运行main()函数,如果是在AXD下模拟调试程序,如果 程序员没有显示完成第(1)步操作,在运行main()函数时将 由模拟器自动完成,当然,如果要将程序运行于嵌入式设备上, 第(1)步操作是必不可少的。
• (3)如果有必要,还将设置捕捉及处理C函数异常的处理函数。
19.08.2020
北京大学出版社出版
19.08.2020
北京大学出版社出版
12
嵌入式ARM系统原理与实例开发(第2版)
内链汇编禁止和使能中断请求
__inline void disable_IRQ(void) {
int tmp; __asm {
MRS tmp, CPSR ORR tmp, tmp, #0x80 MSR CPSR_c, tmp } } int main(void) { disable_IRQ(); enable_IRQ(); }
__scatterload (1)把RW/RO段从装载域复制到 相应的RAM中(即运行域) (2)初始化ZI段
__rt_entry (1)初始化库函数 (2)建立堆栈 (3)调用main() (4)退出应用 (5)用main()函数的返回值做为 exit()参数
19.08.2020
main()
如果是调用main()函数,灰度部分将自动完成
19.08.2020
北京大学出版社出版
4
嵌入式ARM系统原理与实例开发(第2版)
标准C库函数在ADS下的应用
19.08.2020
北京大学出版社出版
5
嵌入式ARM系统原理与实例开发(第2版)
标准C库使用流程
• (1)建立一个可供C函数运行的环境,主要包括设置栈空间, 如果需要,还将初始化堆空间,移植相应的库函数;
• 与输入/输出相关的函数 – 不同的硬件系统具有不同的输入输出,例如在AXD调试环境下 (ARMulator),其输入输出为键盘和它的信息输出窗口,而在 嵌入式设备上,其输入输出为串口、键盘以及LCD,因此,这类 函数依赖于所应用的硬件。
• 与存储器相关的函数 – 因嵌入式存储设备的多样性(8bit,16bit,32bit),为了更好的 利用这些设备,在编写时需要将代码定位到特定的位置以便取得 更好的运行效果,为了达到这一目的,可以使用分散装载技术 (虽然不是必须,下一章将详细介绍这一内容)来对存储系统进 行映射,而设备动态内存区(堆空间和栈空间)的函数则是跟目 标系统的存储器分布相关的,因此,需要重定义初始化栈函数 __user_initial_stackheap(),否则链接时会提示错误。
//禁止IRQ
//CPSR->temp //置I位 //temp->CPSR
//主函数调用 //调用子函数 //调用子函数
19.08.2020
北京大学出版社出版
13
嵌入式ARM系统原理与实例开发(第2版)
内链汇编实现64位乘法
• 实现一个两个数组元素的64位乘法运算,然后求和,即将两个 数字a[10]与b[10]对应位相乘,然后将结果相加。在进行乘法 运算时,使用内嵌汇编程序实现64位的乘法运算。
19.08.2020
北京大学出版社出版
8
嵌入式ARM系统原理与实例开发(第2版)
重写堆栈空间初始化函数
• 在ADS环境下使用函数__user_initial_stackheap()来初始化栈
19.08.2020
北京大学出版社出版
9
嵌入式ARM系统原理与实例开发(第2版)
第4章 ADS环境下汇编/C编程
北京大学出版社出版
7
嵌入式ARM系统原理与实例开发(第2版)
重新写C函数以实现信息从串口输出
• printf函数是通过调用了fputc()函数实现信息的输出,因此只需 要重定fputc()函数即可,即在fputc()中将欲输出的字符输出到 串口即可以实现printf函数打印的信息输出到串口中。fputc()修 改后的代码如下:
1
ARM标准C语言编程
2
ADS编译器对C语言的扩展
3
C程序与汇编程序汇合编程
19.08.2020
北京大学出版社出版
10
__asm内嵌汇编
嵌式ARM系统原理与实例开发(第2版)
19.08.2020
北京大学出版社出版
11
嵌入式ARM系统原理与实例开发(第2版)
内链汇编禁止和使能中断请求
• 功能说明 – 本程序在C语言程序中嵌套汇编程序来实现使能和禁止IRQ请求,在C语言 子程序中,使用__asm来实现CPSR寄存器I位清零和置位操作。 – 因为此函数只能在私有模式中运行,因为修改CPSR和SPSR寄存器的数据 必须在非用户模式下进行 .
嵌入式ARM系统原理与实例开发(第2版)
第4章 ADS环境下汇编/C编程
1
ARM标准C语言编程
2
ADS编译器对C语言的扩展
3
C程序与汇编程序汇合编程
19.08.2020
北京大学出版社出版
3
嵌入式ARM系统原理与实例开发(第2版)
硬件相关函数
• ARM应用程序的硬件相关性,部分与硬件相关的C语言函数需要进 行适当的修改。而与硬件相关的函数包括 :
• 源代码 __inline void enable_IRQ(void) {
int tmp; __asm {
MRS tmp, CPSR BIC tmp, tmp, #0x80 MSR CPSR_c, tmp } }
//使能IRQ
//临时变量 //内嵌汇编程序指示
//CPSR->temp //清I位 //temp->CPSR