数据结构对嵌入式软件工程的重要性



我是嵌入式软件工程师。我从未使用过像树、图或链表这样的数据结构。我只使用了循环缓冲区,数组等。我很想知道嵌入式系统数据结构的哪一部分是明确使用树、图和链表的。有没有具体的例子?

您使用的数据结构与您的软件运行(即微控制器与PC)的关系不大。它更多地与您的软件正在做的事情有关。

你在快餐店看到的触摸屏收银机可以完全在微控制器上运行。也可能是Windows应用程序(我以前在麦当劳看到过蓝屏)。

话虽这么说,树和图表等结构经常用于机器人规划路线并记住他们去过的地方。3D打印机广泛使用这些结构,并且经常在嵌入式环境中运行。PC机将为要打印的物体的切片创建各种图形,然后将它们放在树上。然后,打印机中的微控制器遍历树并打印图形。

链表可以用于类似于循环缓冲区或数组(或堆栈或队列)的地方,这些地方需要更多的灵活性。我经常看到它们被用在任务调度算法中。它们也可以用于前面提到的树和图。

您必须了解每种特定数据结构的优点-即每种数据结构旨在解决的特定数据存储,组织或访问问题。一旦您理解了对于常用数据结构的选择,您将能够识别可能使用某个数据结构的情况。

由于缺乏知识或经验,或者由于次优解决方案的可接受性和简单性,您可能已经实现了使用次优数据结构的系统。例如,如果一个简单数组的穷举搜索满足性能要求;因为数组足够小,处理器足够快,或者实时需求足够允许,那么您可以合理地选择不使用更适合高效和确定性搜索的数据结构使事情复杂化。尤其是因为,例如,调试器很擅长显示数组内容,但通常不知道更高级的数据结构。

另一方面,你可能已经使用了其他的数据结构,而没有意识到这一点。堆栈(FILO)和队列(FIFO)在许多嵌入式系统中很流行,如果您没有使用它们,我会感到惊讶,即使它们是基于数组的临时实现。

最新更新