44得票16回答
在C++中优化空间而非速度

当你提到“优化”时,人们往往会想到“速度”。但是对于内存是主要限制因素的嵌入式系统,速度并不是那么重要。有哪些指导方针、技巧和诀窍可以用来节省ROM和RAM中的额外几千字节?如何“剖析”代码以查看内存膨胀的位置? 补充一下,有人可能认为在嵌入式系统中过早地优化空间并不那么恶劣,因为这样可以为...

43得票21回答
嵌入式系统最糟糕的实践?

当开发嵌入式系统时,您认为应避免哪些“最差的做法”? 以下是我认为不应该做的几件事: 避免抽象硬件层,而是在代码中分散硬件访问。 没有任何类型的仿真环境,只有实际硬件可执行。 避免单元测试,可能是由于上述两点。 不以分层结构开发系统,使得较高层可以依赖于已调试和工作的低层功能。 选择硬件时...

43得票9回答
如何为嵌入式系统设计串行命令协议?

我有一个嵌入式系统通过串口进行通信。现在的命令结构设计是交互式操作的:它显示提示符,接收几个命令,并以人类可读的形式显示结果。 我正在考虑将其更改为更适合机器使用的格式,这样我就可以通过MATLAB GUI与其交互而不会遇到太多麻烦(现在它在交互式提示和变化的消息长度等方面有问题)。 因此...

43得票4回答
如何在树莓派上运行没有操作系统的C程序?

我想尝试使用树莓派进行一些不同的低级嵌入式应用程序的实验。唯一的问题是,与可用的AVR和PIC微控制器板不同,树莓派通常运行一个操作系统(如Raspbian),该操作系统在所有运行的程序之间分配CPU时间,并使得对某些实时应用程序不切实际。 我最近了解到,假设您已经安装了像GRUB这样的引导...

42得票17回答
高效能软件编码

在典型的手持/便携式嵌入式系统设备中,电池寿命是硬件、软件设计以及设备支持的特性中的主要问题。从软件编程角度来看,人们了解MIPS、内存(数据和程序)优化代码。 我知道硬件深度睡眠模式、待机模式可以用于将硬件时钟降低到较低的周期或关闭完全未使用的电路以节省电源,但我正在从这个角度寻找一些想法...

42得票9回答
C++,我能在编译时静态初始化std :: map吗?

如果我编写这段代码std::map<int, char> example = { (1, 'a'), (2, 'b'), ...

42得票3回答
嵌入式项目的C/C++ HTTP客户端库

所以我在StackOverflow和Google上浏览了许多页面的搜索结果,但很少有适用于资源受限的嵌入式环境(例如ARM)的C/C++ HTTP客户端库。但是我找到了一些适用于桌面应用程序的库。 基本上,我需要一个简单易用且方便的API,以进行HTTP GET、POST和HEAD调用(支持...

41得票6回答
C嵌入式软件中的查找表与开关语句比较

在另一个帖子中,有人告诉我,在速度和紧凑性方面,查找表可能比switch更好。因此,我想了解以下内容的区别:查找表static void func1(){} static void func2(){} typedef enum { FUNC1, FUNC2, FUNC...

41得票9回答
如何在原地旋转图像90度?(不使用额外内存的算法)

在嵌入式C应用程序中,我有一张大图片,想要将其旋转90度。目前我使用众所周知的简单算法来实现这一点。然而,这个算法需要我再复制一份图像。我想避免为副本分配内存,而是宁愿就地旋转它。由于图像不是正方形,这很棘手。有人知道一个合适的算法吗? 编辑以添加澄清,因为有人在问: 我按照通常的格式存储...

41得票17回答
有人在嵌入式项目中使用Python吗?

我的公司正在使用Python进行一个相对简单的嵌入式项目。有没有其他人在嵌入式平台上使用Python?总体来说,它对我们很有帮助,应用程序开发快速,调试也快速。我喜欢这种语言的总体“简洁性”。 我在日常工作中唯一真正的问题是,与普通编译器相比,缺少静态检查可能导致问题在运行时被抛出。例如,一...