Questions tagged «embedded»

嵌入式系统是一种计算机系统,通常被设计为执行具有实时计算约束的一个或几个专用功能。它被嵌入为通常包括硬件和机械零件的完整设备的一部分。

16
C ++是否适合嵌入式系统?
一个普遍的问题,在这里和其他地方。C ++是否适合嵌入式系统? 微控制器?实时操作系统?烤面包机?嵌入式PC? OOP在微控制器上有用吗? C ++是否会将程序员从硬件中移走太远以至于效率不高? Arduino的C ++(没有动态内存管理,模板,异常)是否应被视为“真正的C ++”? (希望这个Wiki将成为包含这场潜在的圣战的地方)

9
嵌入式系统的实时操作系统
我看过很多文章,告诉我应该将RTOS用于时间管理和资源管理。我的时间不允许进行自己的研究,因此我向Chiphacker寻求建议。 我使用低资源微控制器(MSP430,PIC),并正在寻找可以使用的RTOS。 要点: 系统资源成本 系统优势 系统的缺点 实施技巧 不应/不应使用RTOS的情况。 我没有使用像arduino这样的系统,我从事的项目无法支持这种系统的成本。

9
在嵌入式C开发中使用volatile
我一直在阅读一些文章,并在Stack Exchange的答案中找到有关使用volatile关键字来防止编译器对可能以编译器无法确定的方式更改的对象进行任何优化的答案。 如果我正在从ADC读取数据(我们将其称为变量adcValue),并且将该变量声明为全局变量,那么volatile在这种情况下是否应该使用关键字? 不使用volatile关键字 // Includes #include "adcDriver.h" // Global variables uint16_t adcValue; // Some code void readFromADC(void) { adcValue = readADC(); } 使用volatile关键字 // Includes #include "adcDriver.h" // Global variables volatile uint16_t adcValue; // Some code void readFromADC(void) { adcValue = readADC(); } 我问这个问题是因为在调试时,虽然最佳实践表明(在我的情况下(直接从硬件更改的全局变量))volatile是强制性的,但我看不出两种方法之间的区别。


6
面向初学者的嵌入式编程:Arduino还是Raspberry Pi?[关闭]
我是计算机科学专业的学生,​​并且渴望扩展我在嵌入式编程和电气工程方面的知识。 我在这里已经读到,使用像Arduino微控制器这样的工具是一个很好的开始。 我主要是Java和Python程序员,但有一些C ++经验。此外,我还喜欢ArchLinux。 我想做的一个小项目是通过Arduino / Pi上的Wi-Fi 控制一些灯泡。 从我看过的书中,Pi和Arduino都是面向学生的,但我想不出哪一种更适合像我这样的人,他们想了解计算机的底层工作原理。 作为一个初学者,我会遇到很多问题,因此,一个庞大而有用的社区(我听说Pi有)是一大优势。 那么哪一个更适合自学的初学者:Arduino还是Raspberry Pi? 提前致谢。 编辑: 从您的许多精彩答案以及这些有价值的 文章中,我得出以下结论 结论 我选择Arduino作为嵌入式编程的切入点,因为它是比Pi更简单的系统,并使我更容易接近金属。 深入学习是有价值的:我以后可能会研究AVR或mbed微控制器,以了解有关计算底层细节的更多信息。 两种设备都允许我在没有操作系统的情况下进行编程,而这正是我想要的(首先)。 我还发现 项目使用一个PI控制一个Arduino。我发现这很吸引人,因为这两种设备都非常便宜,而且我喜欢使用可以在Pi上运行的Linux的功能。 另外,我发现这本书应该可以帮助我在尝试Arduino的同时学习更多有关电气工程的知识。 用Arduino进行灯泡项目似乎很困难。但是没关系。我确定我可以想到其他激励性的项目,也可以在这里或这里获得灵感。 谢谢大家的答案。

5
什么是JTAG?
我对嵌入式系统还很陌生,我一直都在使用这个术语,但是我不太明白它是什么。在线快速搜索即可找到以下Wikipedia页面:https : //en.wikipedia.org/wiki/Joint_Test_Action_Group,将其描述为某种调试协议。但是在其他情况下,它就像能够像程序员一样对芯片的存储器进行编程。它是什么?
30 embedded  jtag 

9
嵌入式程序完成后会发生什么?
当执行到达最后一条return语句时,嵌入式处理器中会发生什么?一切都照原样冻结吗?功耗等,天空中永远只有一个NOP?还是连续执行NOP,或者处理器将完全关闭? 我问的部分原因是,我想知道处理器是否需要在完成执行之前关闭电源,并且如果确实关闭了电源,那么它将如何完成执行?

3
什么是微控制器的不同存储器类型?
编译后,从C代码将不同类型的数据放入不同的内存段。即:.text,.data,.bss,栈和堆。我只想知道这些段中的每一个在微控制器存储器中的位置。也就是说,给定存储器类型为RAM,NVRAM,ROM,EEPROM,FLASH等,哪些数据将进入哪种类型的存储器。 我在这里找到了类似问题的答案,但是他们无法解释每种不同内存类型的内容。 任何帮助都将受到高度赞赏。提前致谢!

4
您如何确定微控制器需要多少闪存/ RAM?
假设您正在启动具有某些已知功能的嵌入式项目。选择微控制器时,如何选择所需的RAM? 您是否使用开发板并先对项目进行编码,然后查看已使用了多少内存,然后选择适合该内存的合适微控制器? 您是否只是选择功能强大的微控制器作为原型,然后在拥有可用的产品后缩小规模? 您是否只是选择一种您肯定会够用的东西,如果空间不足,只是升级到更高的内存密度,否则,您只需保留现有的微控制器? 什么被认为是好的做法?

2
AVR和PIC控制器上的固件保护
有人可以提取在我提供的微控制器中刻录的HEX文件吗? 如果可能的话,某人如何确保其代码在嵌入式系统中得到保护?对于PIC和AVR微控制器,如何保护其固件不被复制?
23 pic  avr  embedded  firmware 

7
对于嵌入式代码,为什么我应该使用“ uint_t”类型而不是“ unsigned int”类型?
我正在使用gcc在c中为STM32F105编写应用程序。 在过去的(有比较简单的项目),我一直定义为变量char,int,unsigned int,等等。 我看,这是普遍使用在stdint.h中定义的类型,如int8_t,uint8_t,uint32_t,等。这是在多个API的,我使用,并且还从ST的ARM CMSIS库真。 我相信我理解为什么我们应该这样做;使编译器可以更好地优化内存空间。我希望可能还有其他原因。 但是,由于c的整数提升规则,每次尝试添加两个值,进行按位运算等操作时,我都会不断遇到转换警告,警告显示为conversion to 'uint16_t' from 'int' may alter its value [-Wconversion]。在这里和这里讨论这个问题。 使用声明为int或的变量时不会发生这种情况unsigned int。 给出几个示例,考虑到这一点: uint16_t value16; uint8_t value8; 我将不得不更改此: value16 <<= 8; value8 += 2; 对此: value16 = (uint16_t)(value16 << 8); value8 = (uint8_t)(value8 + 2); 很难看,但是如果需要的话我可以做。这是我的问题: 是否有一个地方从转换的情况下,未签名来签署和返回无符号将使结果不正确的? 使用/反对使用stdint.h整数类型还有其他重要原因吗? 根据我收到的答案,它看起来像stdint.h类型通常是优选的,既是C转换uint到int和背部。这导致了一个更大的问题: 我可以通过使用类型转换(例如value16 = (uint16_t)(value16 << 8);)来防止编译器警告。我只是隐藏问题了吗?有更好的方法吗?
22 c  embedded  gcc 


10
如何成为嵌入式软件开发商?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 对于想要成为优秀嵌入式软件开发人员或希望在此领域进行改进的人,我想提供一些技巧。 我需要了解什么有关硬件,软件的信息? 最推荐哪些书?博客? 最后,我怎么能从一个初学者变成一个优秀的专业人士?
22 embedded 

6
您如何构造大型嵌入式项目?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5个月前关闭。 背景: 初级研发电子工程师(公司中唯一的EE)-硬件和编码不是问题。我最大的问题是对项目以及从何处开始进行适当的概述。 到目前为止,我只做过较小的软件项目(不到500行代码),但是我不能设想自己做更大的项目而不丢失功能概述或缺乏功能。 您如何最好地构建结构/使用什么工具来构建大型嵌入式软件系统? 我目前正在做什么: 我通常从勾勒项目的功能开始。它可以是一对多的分层流程图或相关图表(框图等),并且可以对组件/芯片进行一些研究。然后,我在参考数据表/ Internet时直接跳入编码(我想很快失败了),一次编码一种功能,并用伪数据对其进行测试,或类似的测试。它可能正在将数据写入MEM芯片,然后如果可行,则它可能是主芯片和MEM芯片之间的SPI驱动器。 我在寻找什么答案: 真的是。我会整理出我认为明智的内容。它可能是一本书,一篇文章,个人经历,建议等。 我对了解老年人如何解决这一问题非常感兴趣。 编辑 首先,感谢您分享您的多年经验!非常感谢所有答案。我的看法是: 创建清晰准确的规格文档。 创建一个软件设计文档。(我现在要添加的内容) 设计文档模板 在模块中考虑它看起来有多冗余。(我需要更多地关注) 遵循编码标准来构造头文件/源文件。(从未这样做) Barr C组标准 首先专注于创建底层实现。(通讯等) 尽可能/合理地实施设计模式。 设计模式 设置一些用于版本控制的内容(Github等-从未使用过太多) 研究持续集成/持续部署(偶然发现的新事物) CI和CD基础知识

4
为什么基于SRAM的FPGA比基于NVM的FPGA使用更多?
基于SRAM的FPGA需要在断电后再次加载位流。同时,基于非易失性的人不需要这一点。 我想知道,为什么在SRAM FPGA上进行的实验和安全性研究要比基于NVM的实验和安全性研究更多,但似乎易失性技术在不受安全性限制的情况下使用得更多(当涉及确保安全启动时)。 (PS:我没有统计数据,这是个人观察)

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.