您认为在桌面环境(Windows、Linux 等)上工作的程序员与在嵌入式系统上工作的程序员在思维方式上有什么区别?
我能想到的一个简单的例子是,在嵌入式环境中,我always检查 malloc 是否不为 NULL。我见过的大多数代码,目标桌面肯定不会勤于检查 malloc 返回值。
还有其他心态差异的例子吗?
有趣的是,您在示例中特别提到了 malloc() 。
在我工作过的每个硬实时、深度嵌入式系统中,内存分配都是专门管理的(通常不是堆,而是固定内存池或类似的东西)......并且,只要有可能,所有内存分配都是在初始化期间预先完成。这比大多数人想象的要容易得多。
malloc() 容易产生碎片,具有不确定性,并且不区分内存类型。使用内存池,您可以拥有位于/从超快速 SRAM、快速 DRAM、电池供电 RAM(我见过)等中提取的池...
还有一百个其他问题(回答您原来的问题),但内存分配是一个大问题。
Also:
- 尊重/了解硬件平台
- 不会自动假设硬件是完美的甚至是功能正常的
- 意识到某些语言方面和功能(例如 C++ 中的异常)可能会导致事情很快出岔子
- 了解 CPU 负载和内存利用率
- 了解中断、抢占以及对共享数据的影响(绝对必要时——共享数据越少越好)
- 大多数嵌入式系统是数据/事件驱动的,而不是轮询的;当然也有例外
- 大多数嵌入式开发人员都非常熟悉状态机和状态行为/建模的概念
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)