embedded相关内容

ARM指令SWI和SVC完全一样吗?

ARM 程序集具有用于进入“主管模式"的 SWI 和 SVC 指令. 让我困惑的是,为什么会有两个?这里据说SVC以前是SWI.这是否意味着他们基本上改变了助记词?它们是一样的吗?我可以互换使用它们吗?其中一个存在于架构之前,而另一个存在于之后? 解决方案 是的,SWI 和 SVC 是一回事,只是换了个名字而已.以前,SVC 指令被称为 SWI,软件中断. SVC(和 SWI) ..
发布时间:2022-01-17 13:35:15 其他开发

为什么我们需要在嵌入式设备中使用引导加载程序?

我正在 ARM cortex-A8 上使用 ELinux 内核. 我知道引导加载程序是如何工作的以及它在做什么.但我有一个问题 - 为什么我们需要引导加载程序,为什么引导加载程序诞生? 为什么我们不能在没有引导加载程序的情况下直接将内核从闪存加载到 RAM 中?如果我们加载它会发生什么?其实处理器是不支持的,但我们为什么要按照流程来呢? 解决方案 引导加载程序是一种计算机程 ..
发布时间:2022-01-17 13:33:24 服务器开发

ARM(特别是移动)外设寻址和总线架构的解释?

我首先要说我不是该领域的专家,我的问题可能包含误解,在这种情况下,如果您纠正我并附上资源,我会很高兴,以便我可以了解更多细节. 我试图弄清楚系统总线的方式以及移动设备中出现的各种设备(如传感器芯片、wifi/BT SoC、触摸屏等)如何被 CPU 寻址(和其他 MCU). 在 PC 世界中,我们有将命令/数据路由到设备的总线仲裁器,而且,afaik,地址是硬连线在板上(如果我错了,请纠 ..
发布时间:2022-01-17 13:29:27 其他开发

是否可以将整个数组保存在 cpu 寄存器中

在下面的代码中, int main(){注册 int arr[4];/* ... */} 'arr' 是否有可能在某个 cpu 寄存器中分配.(考虑 cpu 有 4 个或更多寄存器). 否则编译器将忽略 register 数组的存储类. 解决方案 据我了解,答案是YES和NO. 没有因为, 任何数组元素都必须是可显式寻址的(例如,对于 16 位 uC/uP,其地址应始 ..

寻找 16 位 x86 编译器

我正在从事一个嵌入式系统项目,并且遇到了编译器以编程方式嵌入到 Paradigm C++ IDE 中的问题.我希望能够自动构建. 处理器是 AMD186ES.我没有使用操作系统 - 只是裸机的东西.我需要从 C++ 生成实模式 16 位 8086 机器代码. 我的谷歌搜索表明 G++ 可以构建这样的代码. 我的问题是: 可以配置g++来构建这个机器码吗? 是否有其他 ..
发布时间:2022-01-17 08:10:57 C/C++开发

微控制器的 GUI 库

我想为微控制器创建一个 GUI 驱动的应用程序 (Atmel XMEGA) 连接到 128x64 点图形 LCD (EA DOGL128-6) 和 4 个导航按钮. 控制显示器本身(例如绘制像素和字符)是没有问题,但为了防止我重新发明轮子,我在谷歌上搜索用 c 编写的 GUI-Library/-Toolkit,包括其源代码,将在 32 MHz 8 位微控制器上运行,并至少提供以下控件: ..
发布时间:2022-01-16 19:49:39 其他开发

将图像旋转 90 度的算法?(没有额外的内存)

在嵌入式 C 应用程序中,我有一个大图像,我想将其旋转 90 度.目前我使用著名的简单 算法 来做到这一点.但是,此算法需要我制作图像的另一个副本.我想避免为副本分配内存,我宁愿就地旋转它.由于图像不是方形的,这很棘手.有人知道合适的算法吗? 编辑添加澄清,因为人们在问: 我以通常的格式存储图像: //图像为 16 bpp结构图像 {整数宽度;整数高度;uint16_t * 数据;} ..
发布时间:2022-01-16 14:02:00 其他开发

检查经度/纬度坐标是否位于嵌入式设备的复杂多边形内?

我需要用户能够在地图上绘制一个复杂的多边形,然后让应用程序检查给定的经度/纬度是否位于该多边形内. 我只能找到使用不补偿地球曲率的简单 x/y 笛卡尔坐标系的算法. 用户在 PC 上绘制多边形,其中点通过无线电传输到嵌入式设备,然后需要检查给定多边形是否位于其当前位置(从 GPS 获取). 由于这是针对嵌入式设备,我无法使用大型库,而是需要算法自己执行检查或使用非常小的库.但我似 ..
发布时间:2022-01-14 15:54:14 其他开发

用于嵌入式系统的简约人类可读序列化格式解析器

“人类可读的序列化格式"我的意思是 YAML、JSON、INI 等.请注意,XML 对于我的目的来说太冗长而且太不方便了,所以让我们把它放在最后吧. 该格式应将数据存储为“命名键-值" 对,并允许嵌套和数组.不过,没有数组并不重要.此外,类型感知(不仅能够以纯字符串形式返回数据的能力)也受到高度赞赏. 我真正需要的是一个纯 C 库,它提供了一个用于解析数据的 API(编码是可选的并且不 ..
发布时间:2022-01-14 11:24:24 其他开发

将 unix 时间戳转换为没有系统库的日期

我正在构建一个嵌入式项目,它会在显示屏上显示从 GPS 模块检索到的时间,但我也想显示当前日期.我目前有时间作为 unix 时间戳,并且项目是用 C 编写的. 我正在寻找一种从时间戳计算当前 UTC 日期的方法,并考虑闰年?请记住,这是针对没有 FPU 的嵌入式项目,因此会模拟浮点数学,因此需要尽可能避免使用它以提高性能. 编辑 看了@R...的代码后,我决定自己写这篇文章并想出 ..
发布时间:2022-01-13 09:29:13 其他开发

嵌入式 C++ 系统中的持续集成/单元测试

哪些工具通常用于单元测试,尤其是嵌入式系统的持续集成? 我特别认为您通常必须交叉编译和部署,并且您不能轻松地可视化目标平台.此外,运行测试代码和框架可能很困难. 我还能用什么来缓解这些困难? (我认为应该是某种双重目标,构建服务器在更简单的目标上运行测试) 解决方案 对于单元测试,看看 Unity.http://sourceforge.net/apps/trac/unit ..

基于轮询或中断的方法

什么时候应该使用轮询方法,什么时候应该使用基于中断的方法?有没有可以同时使用的场景? 解决方案 如果感兴趣的事件是: 异步 紧急 不常见 那么基于中断的处理程序就有意义了. 如果感兴趣的事件是: 同步(即你知道什么时候在一个小窗口内期待它) 不紧急(即缓慢的轮询间隔没有不良影响) 频繁(即您的大多数轮询周期都会产生“命中") 那么轮询可能更合适. ..
发布时间:2022-01-11 23:05:00 其他开发

将二进制文件与内存中特定位置的函数/数据链接起来

我目前正在为 ATMega 编写中间内存引导加载程序. 我想将一段常用函数和数据放在内存中的特定位置,这样: 无法克服引导加载程序部分的大小限制 应用程序部分不会复制库函数、驱动程序等,因此会浪费空间 为了便于说明,下面是所需内存布局的地图: 在 此线程 在 avrfreaks 上,我已经能够移动未标记为 __attribute__ ((section(".boot")) ..
发布时间:2022-01-11 15:42:18 其他开发

了解 GNU 链接描述文件的位置计数器

我正在从事一个大学项目,我正在从头开始为 Atmel SAM7S256 微控制器编写软件.这比我以前使用过的其他 MCU 更深入,因为这次需要了解链接器脚本和汇编语言. 我一直在仔细研究 SAM7S 芯片的示例项目,以便完全了解如何从头开始启动 SAM7/ARM 项目.一个值得注意的例子是 Miro Samek 的“使用 GNU 构建裸机 ARM 系统"教程 here (这个问题中的代码来自 ..
发布时间:2022-01-11 15:16:35 其他开发

C++,我可以在编译时静态初始化 std::map 吗?

如果我编码这个 std::map例子 = {(1, 'a'),(2, 'b'),(3, 'c')}; 然后g++对我说 从花括号括起来的初始化列表中推导出需要#include 在 C++98 中,‘example’ 必须由构造函数初始化,而不是由‘{...}’ 这让我有点恼火,因为构造函数是运行时的,理论上可能会失败. 当然,如果确实如此,它会很快失败并且应该始终如一地这样做,因此我 ..
发布时间:2022-01-07 11:20:42 C/C++开发

嵌入式 C++:要不要使用 STL?

我一直是一名嵌入式软件工程师,但通常在 OSI 堆栈的第 3 层或第 2 层.我不是一个真正的硬件人.我一般都做电信产品,通常是手/手机,这通常意味着类似于 ARM 7 处理器. 现在我发现自己处于一个更通用的嵌入式世界,在一个小型初创公司中,在那里我可能会转向“不那么强大"的处理器(有主观性) - 我无法预测. 我已经阅读了很多关于在嵌入式系统中使用 C++ 中的 STL 的争论,但 ..
发布时间:2022-01-07 11:17:29 C/C++开发

在 C 中等待中断的有效方法

我在树莓派上使用 WiringPi.有了它,我分配了一个稍后调用的中断函数.我不知道在等待中断被调用时该怎么做. 示例使用 (spinlock?) for (;;) 例如 int main(){//注册中断布线PiISR(18,INT_EDGE_BOTH,&myInterrupt);为了 (;;) {//真的?}返回0;} 而且我注意到 sleep 也有效.无论睡眠如何,都会调用中断 ..
发布时间:2022-01-05 11:15:03 其他开发