IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 嵌入式开发:汇编语言的4种用法 -> 正文阅读

[嵌入式]嵌入式开发:汇编语言的4种用法

  很多嵌入式开发人员认为应该避免使用汇编语言,原因是它特定于所使用的处理器架构,难以阅读、理解和维护。今天,我们将看看仍然适合使用汇编语言的几个领域以及该代码的样子。

  在我们查看仍然可以使用汇编语言的每个领域之前,请记住,这些汇编指令如何集成到代码库中将根据所使用的开发环境而有所不同。通常有一些自定义编译器函数用于让编译器语言知道正在使用汇编指令,例如_asm()。我们检查的代码片段可能需要在使用前进行修改。

?

  汇编用法 1 – 执行断点指令

  每当我开始一个新项目时,我在实施过程中做的第一件事就是将断点的汇编指令放在 CPU 故障、看门狗超时和特殊 RTOS 事件(例如 malloc 失败)的中断服务例程中(即使我避免使用malloc)。这样做的原因是我想在意外到达这些功能之一时收到通知,但我不想管理这些断点。许多现代处理器都有断点汇编指令,使用汇编代码执行该指令是完全合适的。

  对于 Arm Cortex-M 处理器,使用类似于 STM32 CubeIDE 的 IDE,这样的汇编实现可能如下所示:

  当到达该指令时,处理器将停止执行。

  汇编用法 2 – 从引导加载程序到应用程序的转换

  嵌入式开发人员应该考虑使用汇编语言的第二个领域是从引导加载程序到应用程序代码的过渡点。在许多系统中,引导加载程序是第一个执行的应用程序。它设置处理器、验证内存并可能执行其他几个功能。但在某些时候,引导加载程序让位并跳转到主应用程序。为了使跳转成功,处理器中的许多组件需要设置为其初始状态,例如系统堆栈,然后需要加载应用程序的复位向量的函数指针。

  当我将汇编语言集成到应用程序中时,我经常使用 IDE 的汇编功能。这些功能可能因一个 IDE 而异。例如,下面是一个函数,它接受应用程序的复位向量所在的起始地址位置。此代码是使用 NXP 特定工具链为 NXP Kinetis-L 处理器编写的:

?

  另一个相同功能的示例,但在这种情况下,代码是为德州仪器 C2000 处理器编写的:

?

  同样,这提供了对处理器的低级控制,以确保一切都回到原点,然后应用程序可以从头开始执行。

  汇编用法 3 – 控制循环中的代码优化

  在某些情况下,可能需要在使用汇编的高频控制循环中优化代码。在装配中手动编码快速控制回路过去很常见,虽然有时这仍然是合适的,但在当今拥有超快处理器和使用复杂优化技术的编译器的嵌入式开发环境中,汇编语言使用的最后一种情况正在消失。

  汇编用法 4 – 教授微控制器基础知识

  虽然今天许多人都希望从可能的最高抽象级别开始,但对于嵌入式系统来说,开发人员了解底层发生的事情至关重要,并且没有比在汇编中编写软件更好的学习方法了。

  虽然不应该花很多时间在编写汇编上,但刚接触嵌入式系统的开发人员应该编写一些非常基本的应用程序,例如“Hello World”应用程序和闪烁 LED 应用程序,以了解如何初始化处理器,控制寄存器并稍微熟悉底层指令集。如果开发人员了解底层架构,这些细节可以帮助开发人员用 C/C++ 编写更高效的代码,而真正理解它的唯一方法就是使用它自己的自然语言来使用它。

  总结

  今天在大多数情况下应该避免使用汇编语言,但是当使用它时,它可以提供一种机制来非常精细地控制应用程序的行为方式。如果你确实决定使用某种汇编语言,请确保你大量记录该代码区域,以便你自己和其他嵌入式开发人员将来更容易维护该代码。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 12:02:29  更:2022-04-28 12:02:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:25:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码