Questions tagged «arm»

2
RTOS与Bare Metal在MCU编程方面的优势?
请注意:这个问题专门提到了两个RTOS,但更为通用,以前曾为嵌入式RTOS编写过C代码并且直接在MCU上运行其软件的任何人都可以回答。 我有兴趣了解有关嵌入式RTOS的更多信息并为其编写应用程序。我目前正在查看Embox和RIOT,因为它们是开源的,现代的,活跃的并且似乎有出色的文档。我的目标分为两个阶段:第一阶段是弄清楚如何将这些OS编译并刷新到MCU(可能是AVR或ARM)。然后,第2阶段将编写一个简单的C程序(基本上是一个无头的守护程序),该程序会随着时间的流逝而发展为“业余应用程序”。然后,我将该程序刷新/部署到同一MCU,从而成功部署了一个由Embox / RIOT和位于其之上的应用程序组成的应用程序堆栈。 在走上任何最终导致死胡同的道路之前,我偶然发现了这篇文章,很好地解释了为什么用C /汇编器编写并闪存到MCU的实时应用程序真正不需要它们下面的RTOS。 。 所以现在我真的很困惑,并且质疑我对计算理论的一些基本理解。我想我想首先决定是否使用Embox / RIOT,或者: 保持进度,并在两个OS +应用程序的MCU上使用“应用程序堆栈”;要么 请留意本文的警告,并选择运行我的应用程序“裸机”的MCU 显然,前者需要做更多的工作,因此最好还是有一个很好的理由/选择那条路线。因此,我想问:这些(和类似的)嵌入式RTOS为MCU / C应用程序开发人员提供的真正好处是什么?使用RTOS,我的C应用程序可以从哪些特定功能中受益(也许不重新发明轮子?)?抛弃RTOS并裸机失去了什么? 我在这里要求具体的例子,而不是当您进入RTOS的Wikipedia条目时获得的媒体宣传;-)

3
在文件的开头写一些您仅在结尾知道的内容
背景:我正在编写微控制器C代码来编写EBML文件。EBML就像是带有嵌套元素的二进制XML,但是不是开始和结束标签,而是一个开始ID,长度和数据。我将其写入低功耗应用程序的外部Flash中,因此我希望将Flash的访问量降至最低。内存也很有限,因为没有一件事情容易。 当我可以将整个EBML元素保留在内存中时,生成它很容易,因为在知道长度之后,我可以返回并填写每个元素的长度。问题是当我无法将整个元素保存在内存中时该怎么办。我看到的选项是: 写出我所知道的内容,然后返回并添加长度(最简单,但是添加的闪存访问量比我想要的更多) 在开始编写每个元素之前,先计算它们的长度(相对容易,但是需要很多处理器时间) 一旦我的内存填满,就切换模式,这样我就可以继续浏览数据,但是仅是为了计算已经在内存中保留的元素的长度。然后写出内存中的内容,然后返回并继续从上次中断的地方处理数据。(到目前为止,我最喜欢的选项) 在需要编写元素且最终长度未知时,为它们提供最大或最坏情况的长度。(比上面更容易,但可能适得其反并浪费空间) 问题:看来这应该是人们思考过的相对普遍的问题。我知道在形成一些数据包时也会发生这种情况。我在这里缺少更好/更常见/更容易接受的技术吗?还是我可以搜索的一些术语?
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.