Questions tagged «embedded»

嵌入式是指嵌入式系统,涉及微控制器/ DSP固件编程,实时系统,电子接口,硬件驱动程序,串行总线通信等领域。

23
编译用于高放射性环境的应用程序
我们正在编译一个嵌入式C / C ++应用程序,该应用程序部署在受到电离辐射轰击的环境中的屏蔽设备中。我们正在使用GCC并为ARM进行交叉编译。部署后,我们的应用程序会生成一些错误数据,并且崩溃的次数比我们想要的要多。硬件是为此环境设计的,我们的应用程序已在该平台上运行了几年。 我们是否可以对代码进行更改,或者可以进行编译时改进以识别/纠正由单个事件引发的软错误和内存损坏?其他开发人员是否在减少软错误对长期运行的应用程序的有害影响方面取得了成功?
1456 c++  c  gcc  embedded  fault-tolerance 

30
单元测试C代码
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 我今年夏天用C语言编写了一个嵌入式系统。这是我工作的公司接手的一个现有项目。我已经非常习惯于使用JUnit在Java中编写单元测试,但是对于为现有代码(需要重构)以及添加到系统中的新代码编写单元测试的最佳方法感到困惑。 是否有任何项目可以像使用JUnit对Java代码进行单元测试那样简单地对普通C代码进行单元测试?非常感谢任何专门用于嵌入式开发(对arm-linux平台进行交叉编译)的见解。

30
使用1 MB RAM对1百万个8位十进制数字进行排序
我有一台具有1 MB RAM且没有其他本地存储的计算机。我必须使用它来通过TCP连接接受一百万个8位十进制数字,对它们进行排序,然后通过另一个TCP连接将排序后的列表发送出去。 数字列表可能包含重复项,我不能丢弃。该代码将放置在ROM中,因此我不必从1 MB中减去代码的大小。我已经有了驱动以太网端口和处理TCP / IP连接的代码,它的状态数据需要2 KB,包括一个1 KB的缓冲区,代码将通过该缓冲区读写数据。有解决这个问题的方法吗? 问题和答案的来源: slashdot.org cleaton.net

20
如何对Arduino代码进行单元测试?
我希望能够对Arduino代码进行单元测试。理想情况下,我将能够运行任何测试,而无需将代码上传到Arduino。哪些工具或库可以帮助我解决此问题? 开发中有一个Arduino仿真器可能很有用,但似乎尚未准备就绪。 Atmel的AVR Studio包含一个可能有用的芯片模拟器,但是我看不到如何将其与Arduino IDE结合使用。

3
了解Linux / proc / id / maps
我试图了解嵌入式Linux应用程序的内存使用情况。的/proc/pid/maps实用程序/文件似乎是查看详细信息的好资源。不幸的是,我不理解所有的列和条目。 匿名索引节点0条目是什么意思?这些似乎是一些较大的内存段。
155 linux  embedded 

13
日常机器如何编程?
日常机器(不像家用电器,数字手表等那样的计算机和移动设备)如何编程?可口可乐自动售货机的编程中使用哪种代码?我的咖啡机如何接受预先设定的时间,然后在几小时后开始冲泡一壶咖啡? 这些机器内部是否装有操作系统,还是更基本的东西?它们是用Assembly,C还是其他某种语言编写的? 而且,我真的很想找到一些列出这些操作系统或基础代码系统的资源,甚至在可能的情况下甚至还带有源代码。如果有人知道这样的资源(搜索对我没有任何帮助),那就太好了。

16
您如何在C中实现类?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 12个月前关闭。 改善这个问题 假设我必须使用C(没有C ++或面向对象的编译器)并且没有动态内存分配,那么我可以使用哪些技术来实现一个类,或者可以很好地近似一个类?将“类”隔离到单独的文件中总是一个好主意吗?假设我们可以通过假设固定数量的实例,甚至在编译之前将对每个对象的引用定义为常量来预分配内存。随意假设我需要实现哪种OOP概念(它会有所不同),并为每种概念提供最佳方法。 限制条件: 我必须使用C而不是OOP,因为我正在为嵌入式系统编写代码,并且编译器和预先存在的代码库都在C中。 没有动态内存分配,因为我们没有足够的内存来合理地假设如果我们开始动态分配它就不会用光。 我们使用的编译器在函数指针方面没有问题
139 c  class  oop  embedded 


15
快速查找C数组中是否存在值?
我有一个具有时间关键ISR的嵌入式应用程序,该应用程序需要循环访问大小为256(最好是1024,但最小为256)的数组,并检查值是否与数组内容匹配。在bool这种情况下,将A 设置为true。 该微控制器是NXP LPC4357,ARM Cortex M4内核,而编译器是GCC。我已经组合了优化级别2(速度慢3),并将函数放在RAM中而不是闪存中。我还使用了指针算术和一个for循环,该循环进行递减计数而不是递增计数(检查if i!=0的速度比检查if的速度快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; } } 绝对最快的方法是什么?允许使用内联汇编。也可以使用其他“不太优雅”的技巧。

12
目录中所有文件内容的总大小
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 2年前关闭。 改善这个问题 当使用ls或时du,我将获得每个文件占用的磁盘空间量。 如果需要打开每个文件并计算字节数,我需要获取文件和子目录中所有数据的总和。如果我不用打开每个文件并进行计数就可以获得奖励积分。
103 linux  embedded  shell 

10
const和const volatile之间的区别
如果我们在volatile每次更新新值时都 声明一个变量,如果我们声明一个变量,const则该变量的值将保持不变 那么,如上所述const volatile int temp; 声明变量temp有什么用? 如果声明为,会发生什么const int temp?
89 c  embedded 

6
Flex / Bison是否可以在8位嵌入式系统上使用?
我正在使用avr-gcc工具链针对C语言的AVR微控制器上的练习,为一种简单的BASIC语言编写小型解释器。但是,我想知道是否有任何开源工具可以帮助我编写词法分析器和解析器。 如果我将其编写为在Linux机器上运行,则可以使用flex / bison。现在,我将自己限制在一个8位平台上,我是否必须手工完成所有工作?

30
是否有任何理由使用C而不是C ++进行嵌入式开发?
题 我的硬件C ++和C89上有两个编译器 我正在考虑将C ++与类一起使用,但不要使用多态性(以避免使用vtables)。我想使用C ++的主要原因是: 我更喜欢使用“内联”函数而不是宏定义。 我想使用名称空间作为前缀,使代码混乱。 我认为C ++的类型更安全,主要是因为模板和冗长的强制转换。 我真的很喜欢重载的函数和构造函数(用于自动转换)。 在为非常有限的硬件(4kb RAM)开发时,您是否看到任何理由坚持使用C89? 结论 感谢您的回答,它们确实很有帮助! 我考虑了这个问题,因此我坚持使用C,主要是因为: 在C语言中预测实际代码会更容易,如果只有4kb的ram,这非常重要。 我的团队主要由C开发人员组成,因此高级C ++功能将不会经常使用。 我找到了一种在C编译器(C89)中内联函数的方法。 您提供了很多好的答案,很难接受一个答案。不幸的是,我无法创建维基并接受它,因此我将选择一个让我思考最多的答案。
81 c++  c  embedded  c89 

11
嵌入式C ++:是否使用STL?
我一直是嵌入式软件工程师,但通常在OSI堆栈的第3层或第2层。我不是一个真正的硬件专家。我通常总是做电信产品,通常是手提电话/手机,这通常意味着类似ARM 7处理器的东西。 现在,我发现自己处于一个更通用的嵌入式世界中,这是一个小型初创公司,在那儿我可能会转向“功能不那么强大”的处理器(有主观知识)-我无法预测哪个。 我已经读了很多有关在嵌入式系统中的C ++中使用STL的争论,并且没有明确的答案。有一些关于可移植性的小问题,还有一些关于代码大小或运行时的问题,但是我有两个主要的担忧: 1-异常处理;我仍然不确定是否要使用它(请参阅嵌入式C ++:是否使用异常?) 2-由于嵌入式系统可能带来的问题,我非常不喜欢嵌入式系统中的动态内存分配。我通常有一个缓冲池,该缓冲池在编译时静态分配,并且仅提供固定大小的缓冲区(如果没有缓冲区,则系统复位)。STL当然会进行很多动态分配。 现在,我必须决定是整个公司永远使用还是放弃STL(它涉及一些非常核心的软件)。 我跳哪条路?超级安全并丢失了构成C ++的大部分内容(imo,不仅是语言定义),而且以后可能会遇到问题,还是不得不添加大量异常处理以及现在可能还有其他一些代码? 我很想只使用Boost,但是1)我不确定它是否可以移植到我可能要使用的每个嵌入式处理器上,以及2)在他们的网站上,他们说他们不保证/不推荐它的某些部分。用于嵌入式系统(尤其是FSM,这似乎很奇怪)。如果我去助推器&以后我们发现问题....
74 c++  stl  embedded 

16
在微型内存中运行的可用交互语言是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 改善这个问题 我正在寻找通用的编程语言, 具有交互式(实时编码)提示 单独在32 KB的RAM中工作,或者在单独的计算机上托管编译器时,工作8 KB 在总共只有8-32 KB RAM(不带MMU)的微控制器上运行。 到目前为止,这是我的清单,我想念的是什么? Python:PyMite VM需要64K闪存,8K RAM。针对LPC,SAM7和8K或更高的ATmegas。托管。 Lua:eLua常见问题解答建议使用256K闪存,64K RAM。 FORTH:amforth在ATmega上需要8K闪存,150字节RAM,30字节EEPROM。 方案:腋下方案最小的目标是具有32K闪存,4K SRAM的LPC2103。 C:Interactive C在68HC11上运行,没有闪存和32K SRAM。托管。 C:picoc一个开源,交叉编译的交互式C系统。为AVR编译时,它需要63K闪存,8K RAM。可以通过将表保持在闪存中来减少RAM。 C ++:AngelScript是一种开放源代码,基于字节码的C / C ++,类似于脚本语言,可轻松进行本地调用。 Tcl:TinyTCL在DOS上运行,二进制为60K。看起来很容易移植。 BASIC:TinyBasic:初始化为64K堆,可能是可调整的。 Lisp PostScript:(我还没有找到用于内存不足的FOSS实现) Shell:bitlash:Arduino(ATmega)的交互式命令Shell。另请参阅AVRSH。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.