令人惊讶的Linux实时调度程序行为

马修·埃斯莱曼 2016年11月5日

我最近一直在为数据采集和可视化设备的嵌入式软件设计和开发提供帮助。该软件在嵌入式Linux环境中执行,由呈现所获取数据的各种动画用户界面组成。

数据通过UART和SPI连接接收。在项目开发过程中,我们注意到在繁重的用户界面动画中,UART数据延迟问题很严重。为了使该产品正确满足其采集要求,UART ...


最喜欢的工具-查找表

马修·埃斯莱曼 2016年10月22日 3条评论

随着我们在工程事业中的成长,我们必须不断向我们的集体工具包中添加新工具。对于许多有经验的嵌入式软件工程师来说,我的工具箱中最喜欢的一种工具是显而易见的。我仍然记得在我的职业生涯早期就通过同事编写的代码来学习这种方法 大卫·史达琳。有问题的工具: 

查找表 

查找表可简化代码并改善固件维护。什么是查询表?查找表通常没有什么比...更复杂的了。


从裸机到RTOS:使用RTOS的5个理由

雅各布·贝宁戈 2016年10月18日7条评论

开发人员可能会想到不使用RTOS的令人困惑的复杂原因。我听说过各种借口,从价格过高(尽管采用开源解决方案)一直到效率低下和占用过多内存。在某些情况下,有些借口是合理的,但是出于很多原因,开发人员应寻求RTOS来帮助满足其实时调度需求。

从裸机到RTOS快速链接
  • 第1部分:  

最佳固件架构属性

Tayyar GUZEL博士 2016年6月4日 6条评论

固件(FW)的体系结构以某种方式定义了产品的生命周期。通常,公司会以一种简单的产品版本开始,以应对业务的上市时间警告,并通过简单的功能集从产品中获利。只需不到2-3年的时间便可以达到公司需要开发源自同一代码库的多个产品并且多个团队需要开发...


现代嵌入式系统编程:超越RTOS

实时操作系统 (实时操作系统)是设计和实现嵌入式软件的最普遍接受的方式。它是超出古老的“超级环路”的任何系统中最受欢迎的组件。但是,设计策略也暗示着某种编程范例,这导致特别脆弱的设计通常只能偶然地起作用。我说的是基于阻塞的顺序编程。

每当您明确地在线等待...时,就会发生阻塞。


嵌入式固件重构,优化和迁移

伊恩·史密斯 2016年3月29日

旧版产品通常基于较旧的硬件平台,这些平台通常电源不足或内存不足,从而限制了产品的进一步开发。客户一直在寻找新功能并提高性能,但往往要么不想投资新硬件,要么需要保留当前的现场设备数量。

这些对于任何产品制造商来说都是持续的挑战,但在嵌入式系统中尤其突出,因为在嵌入式系统中产品...


通过ARM Cortex-M中断优先级消除混乱

疯狂流行的ARM Cortex-M处理器提供了非常通用的中断优先级管理,但是不幸的是,用于管理中断优先级的多个优先级编号约定经常会违反直觉,不一致和混乱,从而可能导致错误。在这篇文章中,我试图解释这个主题并消除混乱。

优先级数字与中断的紧急程度成反比关系

最重要的事实是ARM ...


Cortex-M异常处理(第2部分)

本文的第一部分描述了Cortex-M处理器接受异常请求的条件,主要涉及其优先级与当前执行优先级之间的关系。这部分将描述异常请求被接受并激活后发生的情况。

处理器操作和特权模式

在详细讨论异常请求后处理器内发生的动作顺序之前...


在ELF和DWARF的帮助下分析链接器映射文件

戈文德·穆昆丹 2015年12月27日20条评论

在编写固件时,总会出现需要检查工作量消耗的资源的时间-也许是因为RAM或Flash用光了,或者您想优化某些东西。链接器生成的映射文件是有助于资源分析的有用工具。我想对以交互方式生成的数据进行过滤和排序,所以我编写了一个C#WinForms应用程序,该应用程序从地图中读取数据并将其显示在列表视图中(使用真棒


Cortex-M异常处理(第1部分)

本文介绍了Cortex-M处理器如何处理中断以及更普遍的异常处理,该概念在大多数嵌入式系统的设计和实现中起着核心作用。详细讨论此主题的主要原因是,在过去的几年中,微控制器在处理中断方面的复杂程度(和复杂性)稳步提高,使其与通用处理器相当。


CRC野鹅追逐:PPP是什么?!?!!?!

昨天,当我不得不在我正在编写的串行协议文档中包含有关16位CRC的参考信息时,我感到不舒服。我知道这不会顺利结束。

我上次研究CRC算法的时间大约是五年前。那之前的时间……大概是2004年或2005年?好像它定期出现,例如 十七年蝗虫 要么 黑子 要么 厄尔尼诺 ,...


使用XML描述嵌入式设备(并与之对话)

马丁·斯特鲁贝尔 2011年10月12日 1条评论

本文讨论了嵌入式设备和通信设计中的典型开发周期之一,并提出了使用免费的DClib / netpp框架的可能的轻量级解决方案。

挑战

假设我们面对的是嵌入式设备的设计,无论是简单的SoC单元,还是具有各种连接外围设备的更复杂的,由uC控制的引擎。从第一个原型到市场,通常需要完成以下开发周期:


编码步骤2-源代码控制

本系列文章:

当我刚开始编程时,版本控制不是一个介绍性的话题。至少不是因为它需要一个``服务器''(即我无法负担的青少年计算机),而是因为它似乎很困难并且仅对团队有用,而不是...


最喜欢的工具:C ++ 11 std :: array

马修·埃斯莱曼 2017年2月26日2条评论

许多嵌入式软件和固件项目必须按照高可靠性标准进行开发。为了满足这些可靠性要求,固件项目团队将考虑许多设计权衡。例如,工程团队可能会避免或完全禁止使用动态内存分配,动态内存分配通常是通过C库调用“ 分配 “或C ++分配器”“。在这种情况下编写软件时...


Cortex-M异常处理(第2部分)

本文的第一部分描述了Cortex-M处理器接受异常请求的条件,主要涉及其优先级与当前执行优先级之间的关系。这部分将描述异常请求被接受并激活后发生的情况。

处理器操作和特权模式

在详细讨论异常请求后处理器内发生的动作顺序之前...


重要的编程概念(甚至在嵌入式系统上)第三部分:易变性

1vol·a·tile形容词\ ˈvä-lə-təl,尤其是英式-ˌtī(-ə)l \ :可能会以非常突然或极端的方式改变 :有或表现出极端或突然的情绪变化 :可能会变得危险或失控

韦氏在线词典

本系列的其他文章:


哈希函数功能不佳和其他故事:被困在不负责任和花园耙的笼子里

我最近在使用 发布() MATLAB中的函数来开发一些文档,我遇到了由错误的哈希函数引起的问题。

在资源有限的嵌入式系统中,您不太可能会遇到 哈希函数。它们具有三个主要应用程序:密码学,数据完整性和数据结构。在所有这些情况下,哈希函数用于获取某种类型的数据,并确定性地将其简化为原始数据的固定大小的“指纹”或“哈希”,例如...


最佳固件架构属性

Tayyar GUZEL博士 2016年6月4日 6条评论

固件(FW)的体系结构以某种方式定义了产品的生命周期。通常,公司会以一种简单的产品版本开始,以应对业务的上市时间警告,并通过简单的功能集从产品中获利。只需不到2-3年的时间便可以达到公司需要开发源自同一代码库的多个产品并且多个团队需要开发...


Donald Knuth是所有过早优化的根本

这篇文章讲述的是斯坦福大学一位杰出的年轻教授在45年前写的一篇深刻的文章,而现在我们都被它束缚了。

TL; DR

基本上,这个想法是,尽管优化计算机软件以使其更快地执行是一个崇高的目标,并带来了实实在在的利益,但这却要花费很多时间和精力,因此,这样做的决定不应该凭着异想天开和直觉来做出,而是相反,应该在进行某种分析后证明它具有净...


基于BANO框架的无线门监控器

Fabien Le Mentec 2014年6月10日5条评论
介绍

我一直在考虑一种可以从远程位置监视公寓和车库门状态的系统。功能上,我想从远方监视我的门的状态。典型的情况是我去度假,但在办公室也可以使用。为此,我会将信息集中在可以使用Web浏览器查询的Internet上连接的服务器上。服务器本身将位于公寓中,在...