Questions tagged «embedded»

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

4
是否可以使用arduino制作JTAG接口?
如果是这样,可以将我定向到一个讲述该操作方法的网站吗?我相信我可能已经找到了一种方法,但是我不确定它是否会起作用(需要找到一些测试方法)。 这个问题与这里的我先前的问题有关。 如果需要更多背景信息。
14 arduino  arm  embedded  jtag 


6
在C上使用Verilog或VHDL的动机是什么?
我来自编程背景,对硬件或固件(最多是电子产品和Arduino)的了解不多。 在像C或某些Assembly这样的编程语言上使用Verilog和VHDL等硬件描述语言(HDL)的动机是什么? 这是一个选择问题吗? 我读到它的固件写在HDL中的硬件在并行运行指令方面具有明显的优势。但是,令我惊讶的是,有讨论使人们怀疑是否要用C或Assembly编写固件(如果您不一定要有CPU,如何使用Assembly?),我感到很惊讶,但我得出结论,这也是一个选择。 因此,我有几个问题(不要犹豫,解释一下): 固件真的可以用HDL或软件编程语言编写,还是执行相同任务的另一种方式?我喜欢真实的例子。每个选项产生什么约束? 我知道固件在软件上的普遍用法是在硬件加速器(例如GPU,网络适配器,SSL加速器等)中。据我了解,这种加速并非总是必要的,而只是推荐的(例如,在SSL和复杂算法加速的情况下)。在所有情况下都可以在固件和软件之间进行选择吗?如果不是这样,我很乐意使用固件清晰明确的方式。 我读过,固件大部分刻录在ROM或闪存上。它在其中如何表示?像软件一样?如果是这样,有什么深远的区别?如果是固件,是否可以使用自适应电路? 我想我在某些假设下到处都是错误,请原谅。谢谢!

4
更改寄存器值时,能否将微控制器不同端口的各个引脚映射到寄存器并更改其值?
问:能否将微控制器不同端口的各个引脚映射到寄存器,并在更改寄存器值时更改其值? 场景:我已经用完了微控制器每个端口(8位)的一些引脚。现在,我想连接一个需要8位总线的设备(假设D0至D7 IN SEQUENCE),也就是说我需要来自控制器的8个引脚,以便可以一对一的方式连接它们 portx0 -> D0 // x is the name of port followed by bit location on that port portx1 -> D1 ... portx7 -> D7 但是我没有可以与该设备连接的8个引脚的整个端口,而是从portx,Porty和Portz提供了一些引脚。新的连接方案为(分别从微控制器到设备的连接) portx0 -> D0 portx1 -> D1 portx2 -> D2 porty4 -> D3 porty5 -> D4 porty6 -> D5 porty7 -> D6 …


3
PowerPC在嵌入式设计中受欢迎的原因
该问题之前曾提出过,现在不再活跃,但我对答案完全不满意: PPC有什么优点?一定有东西 根据David Kessner的回答,曾经有使用PowerPC的原因,但今天没有。 尽管这对于台式计算机可能是正确的,但对于嵌入式系统却不正确。三个主要游戏机均使用PowerPC(Wii,Xbox 360,PS3)。微软当时完全专注于英特尔,甚至在2005年将其新Xbox换成了Intel,改用PowerPC。 在许多情况下,网络设备都具有PPC,许多汽车微控制器也具有PPC,并且仍然有新的PPC产品开发(例如Freescale)。另外,PowerPC可以在存储系统,医疗或工业自动化领域中找到。 向后兼容性(支持旧版软件)是一个驱动程序。但是必须有更多。 从小型微控制器到用于高性能计算的处理器,PowerPC系列中是否具有高度可伸缩性和应用程序编程接口兼容性? 设计的坚固性和功能安全认证的经验? 是否支持高温范围,尤其是无风扇高温设计?

4
设计嵌入式软件
我开始使用RTOS进行嵌入式软件编程,并且由于我已经是桌面应用程序的开发人员,所以我一直想知道使用UML图(如活动图,序列图,用例等)对嵌入式软件进行建模的感觉如何。 嵌入式软件是否使用UML设计的,与桌面应用程序一样?是最好的选择还是有更好的选择?我可以举一些例子吗? 是否有执行此操作的特定工具?

6
如何有效地解码非标准串行信号
我是研究团队的一名本科生,从事一个涉及RF传输ASIC及其无线接收器的项目,该无线接收器最终应将数据发送到PC。 接收器输出快速,连续,异步的非标准串行信号(即非SPI,I2C,UART等),因此我的工作是编写微控制器软件以将接收器连接到计算机。当前,我的方法是使用边沿触发的中断将数据放置在循环缓冲区中,并在主循环中执行整个逐位解码过程。微控制器必须同时使用USB(虚拟com端口)将此数据输出到计算机。 这是我遇到的一个问题,也是我预期的一个问题: 即使使用强大的72 MHz ARM Cortex M3处理器,我也无法足够快地处理缓冲的数据。比特率是400 Kbps(2.5 us / bit)。作为参考,每位仅保留180个周期(包括解码和ISR,它具有约30个周期的开销!)。MCU还必须处理在主循环中轮询的许多其他任务。 USB虚拟com端口驱动程序也是基于中断的。这使我几乎可以肯定,驱动程序最终将中断处理器的时间如此之久,以致于错过了可能会传输位的2.5微秒(180周期)窗口。我不确定通常如何解决此类中断冲突/竞赛。 所以问题很简单,一个人可以做什么来解决这些问题,或者这根本不是正确的方法吗?我也愿意考虑减少以软件为中心的方法。例如,使用带有某种硬件状态机的专用USB芯片进行解码,但这并不熟悉。

7
微控制器编程与面向对象编程
我已经用C ++完成了一些基本的面向对象的编程(创建B树,哈希算法,双链表),并且已经在C中完成了小项目(例如制作科学计算器等)。 就程序员必须具有的思维方式和“思维”而言,硬件编程(特别是针对微控制器)与面向软件/对象的编程有何不同? 我大多数人通常认为一个人比另一个人难吗? 以我的背景(如上所述),我是否需要为硬件编程做很多准备工作,还是可以在没有太多准备工作的情况下直接涉足?

8
大多数ALU是如何构建的,是否可以“构建自己的”?
我一直在真正地尝试了解非常低水平的计算机。我一直在浏览许多自制的页面,并且学习的内容很多。我在大学里修了电子工程课程,但是我们并没有真正深入地研究该主题(这是计算机科学,所以大多数实际上是算法等)。 无论如何,大多数ALU是如何构建的?我意识到这不是计算机的唯一组成部分,但仍然是重要组成部分。 您是否可以仅使用逻辑门(出于学习目的)来构建自己的ALU?我知道这对于那些知识渊博的人来说听起来很愚蠢,但我只是想了解一下。(哎呀,即使是简单的加法器也将是一个整洁的项目。)如果是这样,该怎么做?有硬件示例吗?(我环顾了Google,但是找不到任何可以逐步说明问题的指南)。
11 embedded  alu 

2
有没有一种方法不必轮询AVR的UART?
我正在通过UART从另一个AVR接收数据。但是我在做其他事情,所以不想一直不断轮询UART。我知道有中断,但只能看到一个要接收的中断,我认为仍然需要轮询才能完成传输。
10 avr  embedded 


5
FPGA上的嵌入式Linux
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我对FPGA的经验非常有限(Altera-仅使用视觉设计工具)。 我正在计划一个需要FPGA的新项目,并且可以从运行在同一块板上的实际linux中受益匪浅(主要用于TCP通信以及某些DSP)。 我的问题是,是否有推荐的FPGA,它为此准备了受支持的嵌入式Linux?没有花哨的驱动程序(仅以太网,wifi可能是一个加号,...)。我想象FPGA中会内置一个微控制器(这意味着它将占用大量FPGA,而我需要一个更大的FPGA)。
10 fpga  embedded  linux 

5
微控制器中的中断处理和FSM示例
最初的问题 我对微控制器中的中断处理有一个一般性的问题。我正在使用MSP430,但我认为这个问题可能会扩展到其他uC。我想知道是否经常在代码中启用/禁用中断是一种好习惯。我的意思是,如果我有一部分对中断不敏感的代码(或者更糟糕的是,出于某种原因,一定不能监听中断),那么这样做会更好: 在关键部分之前禁用中断,然后在其后重新启用它们。 在相应的ISR中放置一个标志,并(而不是禁用该中断),在关键部分之前将标志设置为false,然后在紧要部分之前将其重置为true。防止执行ISR的代码。 两者都不提供,因此欢迎提出建议! 更新:中断和状态图 我将提供具体情况。让我们假设我们要实现一个状态图,该状态图由4个块组成: 过渡/效果。 退出条件。 进入活动。 做活动。 这就是教授在大学里教给我们的。遵循此方案可能不是最好的方法: while(true) { /* Transitions/Effects */ //---------------------------------------------------------------------- next_state = current_state; switch (current_state) { case STATE_A: if(EVENT1) {next_state = STATE_C} if(d == THRESHOLD) {next_state = STATE_D; a++} break; case STATE_B: // transitions and effects break; (...) } /* Exit activity …

2
为什么MCU寄存器中与逻辑相关的位字段通常位于不同的位置?
如果这个问题已经被回答,请原谅我,但是无论是在此页面还是在更广泛的Internet上我都找不到答案。 我是一位经验丰富的开发人员,在底层编程方面拥有丰富的知识,但是对于嵌入式开发而言却相对较新。我一直在自学使用ST-NUCLEO144板进行嵌入式系统开发,该板具有STM32F746ZG MCU。在我看来似乎不是显而易见的一个问题是,为什么寄存器中与逻辑相关的位字段可能位于不同的位置。 一个例子是USART_CR1STM32746ZG上的寄存器。的M0和M1位字段一起控制USART TX / RX的字长,的组合的2比特值0b00指定8位,0b01指定9个比特,等等,这是所有相当简单的,不同之处在于M0在第12位和M1在比特28 ...为什么呢? 是否出于遗留设计的原因,例如将新功能插入到先前保留的空间中?是出于与芯片设计相关的原因而我没有考虑,还是出于更大的目的而没有看到? 显然,使用位屏蔽可以克服这个问题,但是我很好奇。

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.