标签: embedded

编译用于高放射性环境的应用程序

我们正在编译嵌入式C/C++应用程序,该应用程序部署在受电离辐射轰击的环境中的屏蔽设备中.我们正在使用GCC和ARM进行交叉编译.部署后,我们的应用程序会生成一些错误的数据,并且比我们想要的更频繁地崩溃.硬件专为此环境而设计,我们的应用程序已在此平台上运行了数年.

我们可以对代码进行更改,还是可以进行编译时改进,以识别/纠正由单个事件干扰引起的软错误和内存损坏?是否有其他开发人员能够成功地减少软错误对长期运行的应用程序的有害影响?

c c++ embedded gcc fault-tolerance

1414
推荐指数
20
解决办法
11万
查看次数

单元测试C代码

今年夏天,我用直接C编写了一个嵌入式系统.这是我工作的公司接管的现有项目.我已经习惯于使用JUnit在Java中编写单元测试,但是对于为现有代码(需要重构)编写单元测试的最佳方法以及添加到系统中的新代码感到茫然.

有没有办法让单元测试普通的C代码像使用JUnit进行单元测试Java代码一样简单?任何专门针对嵌入式开发(交叉编译到arm-linux平台)的见解都将非常感激.

c testing embedded unit-testing

836
推荐指数
18
解决办法
38万
查看次数

在1 MB RAM中排序100万个8位数字

我有一台1 MB RAM的计算机,没有其他本地存储.我必须使用它通过TCP连接接受100万个8位十进制数,对它们进行排序,然后通过另一个TCP连接发送排序列表.

数字列表可能包含重复项,我不能丢弃.代码将放在ROM中,因此我不需要从1 MB中减去代码的大小.我已经有驱动以太网端口和处理TCP/IP连接的代码,它的状态数据需要2 KB,包括1 KB缓冲区,代码将通过该缓冲区读写数据.有这个问题的解决方案吗?

问答来源:
slashdot.org

cleaton.net

sorting embedded algorithm ram

641
推荐指数
17
解决办法
13万
查看次数

我如何单元测试Arduino代码?

我希望能够对我的Arduino代码进行单元测试.理想情况下,我可以运行任何测试而无需将代码上传到Arduino.哪些工具或库可以帮助我解决这个问题?

正在开发Arduino仿真器可能很有用,但它似乎还没有准备好使用.

来自Atmel的AVR Studio包含一个可能有用的芯片模拟器,但我看不出如何将它与Arduino IDE结合使用.

embedded unit-testing avr arduino avr-gcc

167
推荐指数
13
解决办法
6万
查看次数

如何编程日常机器?

日常机器(不是电器,数字手表等电脑和移动设备)是如何编程的?什么样的代码可用于可口可乐自动售货机的编程?我的咖啡机如何接受预先设定的时间并在几小时后开始冲泡一壶咖啡?

这些机器内部是否有操作系统,还是更基本的东西?它们是用Assembly,C还是其他语言编写的?

而且,我真的想找到一些列出这些操作系统或底层代码系统的资源,如果可能的话,甚至可能使用源代码.如果有人知道这样的资源(搜索没有给我任何东西),那就太棒了.

c embedded microcontroller assembly operating-system

145
推荐指数
8
解决办法
1万
查看次数

了解Linux/proc/id/maps

我试图了解我的嵌入式Linux应用程序的内存使用情况.该/proc/pid/maps实用程序/文件似乎是看到细节的好资源.不幸的是,我不理解所有列和条目.

/proc/pid/maps实用程序/文件是否有良好的资源/文档?

匿名inode 0条目是什么意思?这些似乎是一些较大的内存段.

linux embedded

143
推荐指数
4
解决办法
11万
查看次数

你如何在C中实现一个类?

假设我必须使用C(没有C++或面向对象的编译器)并且我没有动态内存分配,我可以使用哪些技术来实现类,或者类的良好近似?将"类"隔离到单独的文件中总是一个好主意吗?假设我们可以通过假定固定数量的实例来预分配内存,或者甚至在编译时将每个对象的引用定义为常量.随意假设我将需要实施哪个OOP概念(它会有所不同)并为每个概念提出最佳方法.

限制:

  • 我必须使用C而不是OOP,因为我正在编写嵌入式系统的代码,编译器和预先存在的代码库位于C语言中.
  • 没有动态内存分配,因为我们没有足够的内存来合理地假设如果我们开始动态分配它就不会用完.
  • 我们使用的编译器没有函数指针的问题

c oop embedded class

131
推荐指数
6
解决办法
14万
查看次数

快速查找C数组中是否存在值?

我有一个具有时间要求严格的ISR的嵌入式应用程序需要迭代256个大小的数组(最好是1024,但256是最小的),并检查一个值是否与数组内容匹配.如果bool是这样,A 将设置为true.

微控制器是NXP LPC4357,ARM Cortex M4内核,编译器是GCC.我已经结合优化级别2(3更慢)并将功能放在RAM而不是闪存中.我还使用指针算法和for循环,它进行向下计数而不是向上(检查是否i!=0比检查是否更快i<256).总而言之,我的最终持续时间为12.5μs,必须大幅度降低才能实现.这是我现在使用的(伪)代码:

uint32_t i;
uint32_t *array_ptr = &theArray[0];
uint32_t compareVal = 0x1234ABCD;
bool validFlag = false;

for (i=256; i!=0; i--)
{
    if (compareVal == *array_ptr++)
    {
         validFlag = true;
         break;
     }
}
Run Code Online (Sandbox Code Playgroud)

什么是绝对最快的方法呢?允许使用内联汇编.其他'不太优雅'的技巧也是允许的.

c embedded optimization assembly arm

124
推荐指数
9
解决办法
1万
查看次数

CRC何时比MD5/SHA1更适合使用?

何时使用CRC进行错误检测而不是更现代的散列函数(如MD5或SHA1)?前者在嵌入式硬件上更容易实现吗?

embedded hash crc

121
推荐指数
12
解决办法
8万
查看次数

目录中所有文件内容的总大小

当我使用ls或时du,我得到每个文件占用的磁盘空间量.

如果我打开每个文件并计算字节数,我需要文件和子目录中所有数据的总和.如果我可以在不打开每个文件并计数的情况下获得此奖励积分.

linux embedded shell

99
推荐指数
5
解决办法
13万
查看次数