Tag: 嵌入式

什么是一个很好的开源轻量级c库,具有在嵌入式系统中使用的基本实用程序function

我正在考虑像glib这样的东西,但可能是一个具有最小脚印的纤薄版本。 它需要基本的实用程序,如链表,向量和哈希表。 它还应具有最小的运行时占用空间。

__CC_ARM,__ ICC __,__ GNUC__和__TASKING__宏是什么意思?

我正在通过stm研究STM32l151rct6a,我偶然发现了这些MACRO定义 __CC_ARM, __ICCARM__, __GNUC__, __TASKING__ 有谁知道他们的意思?

8051系列最好的C编译器是什么?

我们正在开始一个基于8051微控制器的新项目。 问题: 什么是最好的C编译器使用? 有没有开源8051编译器,它们有多好?

有没有办法编译C11到C89?

我的一个(嵌入式)目标只有一个C89编译器。 我正在开发一个针对多个设备的(业余爱好)项目。 有没有办法在C89中编译(转换?)C11代码库? (否则我将不得不像1989年那样编码,字面意思。)

程序接收信号SIGTRAP,跟踪/断点陷阱

我正在调试一个(嵌入式)软件。 我在一个函数上设置了一个断点,由于某种原因,一旦我到达那个断点并continue我总是回到函数(这是一个初始化函数,只能调用一次)。 当我删除断点并continue ,GDB告诉我: Program received signal SIGTRAP, Trace/breakpoint trap. 由于我正在使用断点,我假设我陷入了“断点陷阱”。 什么是断点陷阱?

测量皮质m7上的时钟周期计数

我一直在测量皮层m4上的时钟周期计数,现在想在皮层m7上进行测量。 我使用的主板是STM32F746ZG。 对于m4,一切顺利: volatile unsigned int *DWT_CYCCNT; volatile unsigned int *DWT_CONTROL; volatile unsigned int *SCB_DEMCR; void reset_cnt(){ DWT_CYCCNT = (volatile unsigned int *)0xE0001004; //address of the register DWT_CONTROL = (volatile unsigned int *)0xE0001000; //address of the register SCB_DEMCR = (volatile unsigned int *)0xE000EDFC; //address of the register *SCB_DEMCR = *SCB_DEMCR | 0x01000000; *DWT_CYCCNT = 0; […]

在嵌入式设备上将字节流转换为C89中的数据包流的方法

我正在研究使用rs232(通过USB连接的rs232)连接到PC的嵌入式设备。 我正在考虑开发自己的协议: 但我不想重新发明轮子。 请注意 :我正在考虑相当受限的设备:4kb的RAM,没有内核,也没有标准的C lib。 你能想到一个标准的方法来做到这一点(也许是开源库)? 如果您编写自己的解决方案,是否有任何最佳实践? 你是否也在包的末尾使用MAGIC字节? 也许最好使用时间间隔而不是分隔符? 如何在流二进制数据中找到包的开头? 也许最好使用文本协议? 更新:请重新阅读问题。 我不应该要求图书馆,而是要求良好做法。

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

“人类可读的序列化格式”是指YAML , JSON , INI等。 请注意, XML对于我的目的来说太冗长和太不方便了,所以让我们把它作为最后的手段。 格式应将数据存储为“命名键 – 值”对,并允许嵌套和数组。 但是,缺少数组并不重要。 此外,非常感谢类型感知(不仅将数据作为普通字符串返回的能力)。 我真正需要的是一个纯C库,它提供了一个用于解析数据的API(编码是可选的,不太重要)。 在为ARM7编译时,它必须适合大约16-20 KiB。 我已经用Google搜索并在周围徘徊,但找不到符合上述所有要求的工件。

安全存储和访问EEPROM

我最近确定需要在微控制器的EEPROM中存储不经常更新的配置变量。 立即向程序添加状态会让人担心 检测EEPROM中未初始化的数据(即首次启动), 从旧固件版本转换或使数据无效,以及 寻址多个结构,每个结构可能在固件更新中增长。 广泛的谷歌搜索只发表了一篇文章, 通过固件更新保持您的EEPROM数据有效 。 有没有人使用过该文章中讨论的方法? 有更好的替代方法吗?

如何处理嵌入式C中的包装计数器

我需要处理一个计数器,让我为我的申请打勾。 计数器是32位,所以我需要知道的是如何在它包装时处理它。 例如: 我有一个函数返回一个(timestamp + shifttime),我有另一个函数,它将返回1或0,这取决于时间是否已经过去,但我的计数器可能会包装如何处理这个? 。 谢谢 非常感谢所有回复的人。 我将在此编辑中提供更多详细信息。 我使用的是STM32 Cortex-M3。 我想使用RTC计数器将其用作我的应用程序的滴答,以安排需要在特定时间间隔发生的任务。 RTC可以产生溢出中断,因此检测中断不是问题。 我遇到的主要问题(或者至少我认为是一个问题)是某些任务获得(时间戳+class次),即。 int main( void ) { FlashLedTimeStamp = ReturnCounter( 20 ); // currentcounter value + a shift of 20 StatusLedTimeStamp = ReturnCounter( 3 ); // currentcounter value + a shift of 3 //then later on …. while(1) { /* other tasks […]