1624得票23回答
在高放射环境中编译应用程序

我们正在编译一个嵌入式C++应用程序,部署在一个受电离辐射轰击的屏蔽设备中。我们使用GCC并进行ARM交叉编译。当应用程序部署后,会生成一些错误数据,并且比我们希望的更频繁地崩溃。硬件是为此环境设计的,我们的应用程序已在该平台上运行了几年。 我们是否可以对代码进行更改或进行编译时优化以识别/...

957得票31回答
C代码单元测试

我这个夏天参与开发了一款使用C语言编写的嵌入式系统。这是一项由我们公司接手的现有项目。我已经习惯了使用JUnit在Java中编写单元测试,但对于需要重构的现有代码以及添加到系统中的新代码,我不知道编写单元测试的最佳方法。 是否存在任何项目可以使像JUnit一样轻松地为C语言编写的代码进行单元...

761得票36回答
使用1MB RAM对100万个8位小数进行排序

我有一台只有1MB RAM和没有其他本地存储的电脑。我必须使用它通过TCP连接接受100万个8位十进制数,对它们进行排序,然后通过另一个TCP连接发送已排序的列表。 这个数字列表可能包含重复项,我不能丢弃它们。代码将被放在ROM中,因此我不需要将我的代码大小从1MB中减去。我已经有了驱动以太...

224得票20回答
如何对Arduino代码进行单元测试?

我希望能够对我的Arduino代码进行单元测试。理想情况下,我希望能够运行任何测试而不必上传代码到Arduino。有哪些工具或库可以帮助我完成这个任务? 目前正在开发一款Arduino模拟器(Arduemu),这可能会有所帮助,但它似乎还没有准备好供使用。 Atmel的AVR Studio...

205得票4回答
了解Linux /proc/pid/maps或/proc/self/maps

我想了解嵌入式Linux应用程序的内存使用情况。 /proc/pid/maps 工具/文件似乎是查看详细信息的好资源。不幸的是,我不理解所有的列和条目。 什么是匿名inode 0条目?它们似乎是一些较大的内存段。

171得票16回答
如何在C语言中实现一个类?

假设我必须使用C语言(不能使用C++或面向对象的编译器),并且我没有动态内存分配,那么我可以使用哪些技术来实现一个类或一个好的类似物?对于“类”,将其隔离到单独的文件中总是明智的吗?假设我们可以通过假定固定数量的实例或甚至在编译时定义每个对象的引用作为常量来预先分配内存。您可以假设需要实现哪些...

154得票13回答
日常机器是如何编程的?

日常机器(不仅限于计算机和移动设备,还包括家用电器、数字手表等)如何进行编程?可口可乐自动售货机的编程中需要哪些代码?我的咖啡机如何接受预先编程的时间,在几个小时后开始冲一壶咖啡? 这些机器内部是否有操作系统,或者它们使用的是更基础的东西?它们是用汇编语言、C语言还是其他语言编写的? 我希...

148得票14回答
何时使用CRC比MD5/SHA1更合适?

在何时使用循环冗余校验(CRC)进行错误检测,而不是更现代的哈希函数,例如MD5或SHA1?前者在嵌入式硬件上更容易实现吗?

127得票15回答
快速查找C数组中是否存在某个值?

我有一个嵌入式应用程序,其中有一个时间关键的ISR需要遍历一个大小为256(最好是1024,但256是最小值)的数组,并检查是否匹配数组内容。如果匹配,则会将bool设置为true。 微控制器是NXP LPC4357,ARM Cortex M4内核,编译器是GCC。我已经使用了组合优化级别2...

111得票9回答
const和const volatile的区别

如果我们把一个变量声明为volatile,那么每次刷新值时都会更新。 如果我们把一个变量声明为const,那么该变量的值不会被改变。 那么,声明变量temp为const volatile int temp;有什么用处?如果我们声明为const int temp会发生什么?