gpt4 book ai didi

embedded - 工作站和嵌入式程序员的心态差异

转载 作者:行者123 更新时间:2023-12-02 17:01:28 26 4
gpt4 key购买 nike

您认为在桌面环境(Windows、Linux 等)上工作的程序员与在嵌入式系统上工作的程序员在思维方式上有什么区别?

我能想到的一个简单的例子是,在嵌入式环境中,我总是检查malloc是否不为NULL。我见过的大多数代码,目标桌面肯定不会勤于检查 malloc 返回值。

还有其他心态差异的例子吗?

最佳答案

有趣的是,您在示例中特别提到了 malloc() 。

在我工作过的每个硬实时、深度嵌入式系统中,内存分配都是专门管理的(通常不是堆,而是固定内存池或类似的东西)......而且,只要有可能,所有内存分配都会被专门管理。内存分配是在初始化期间预先完成的。这比大多数人想象的要容易得多。

malloc() 容易产生碎片,具有不确定性,并且不区分内存类型。使用内存池,您可以拥有位于/从超快速 SRAM、快速 DRAM、电池供电 RAM(我见过)等中提取的池...

还有一百个其他问题(回答您原来的问题),但内存分配是一个大问题。

另外:

  • 尊重/了解硬件平台
  • 不会自动假设硬件完美甚至功能正常
  • 了解某些可能导致事情迅速出岔子的语言方面和功能(例如 C++ 中的异常)
  • 了解 CPU 负载和内存利用率
  • 了解中断、抢占以及对共享数据的影响(绝对必要时 - 共享数据越少越好)
  • 大多数嵌入式系统都是数据/事件驱动的,而不是轮询的;当然也有异常(exception)
  • 大多数嵌入式开发人员都非常熟悉状态机和状态行为/建模的概念

关于embedded - 工作站和嵌入式程序员的心态差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com