工作站和嵌入式程序员之间的心态差异[关闭]

2024-05-08

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

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

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


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

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

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

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

Also:

  • 尊重/了解硬件平台
  • 不会自动假设硬件是完美的甚至是功能正常的
  • 意识到某些语言方面和功能(例如 C++ 中的异常)可能会导致事情很快出岔子
  • 了解 CPU 负载和内存利用率
  • 了解中断、抢占以及对共享数据的影响(绝对必要时——共享数据越少越好)
  • 大多数嵌入式系统是数据/事件驱动的,而不是轮询的;当然也有例外
  • 大多数嵌入式开发人员都非常熟悉状态机和状态行为/建模的概念
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工作站和嵌入式程序员之间的心态差异[关闭] 的相关文章

  • 识别android中的DTMF音

    我计划在 android 中创建一个 centerx 系统应用程序 其中有一个语音信箱会设置在接收方 根据语音邮件中的指示 呼叫者必须按下拨号盘中的号码 接收方应识别该号码并执行相应的操作 有谁知道如何在接收方检测呼叫者按下的号码 其背后的
  • 使用指针功能 - 1 个设备上的 2 个独立应用程序

    我前段时间问过这个问题如何使用主应用程序和引导加载程序中的一项功能 嵌入 https stackoverflow com questions 45459776 how can i use one function from main app
  • Arm裸机系统CPU使用率测量

    我正在研究一个ARM cortex M4评估板 它是bare metal应用程序 无需在其上运行任何操作系统 现在我想测量CPU使用给定的流程 算法 最好的方法是什么 我应该实施一个操作系统来衡量CPU具有满足这种需求的功能的用法 这个问题
  • ANSI C 中的超便携、小型复杂配置文件库?

    我正在寻找一个非常可移植 简约 小型的 ANSI C 语言库 没有外部依赖项 或很少 编译后大小小于 100K 我需要它来创建一个中等复杂的配置文件 并且它必须支持 Unicode 还有一些要求 可以使用 嵌入 静态链接到专有代码 在应得的
  • 读取时不返回写入 I2C 的缓冲区

    我试图在写入后从 I2C 总线上的内存位置读取一个值 当我在终端中运行它时 我得到奇怪的输出 这是我的程序 include
  • 退出前是否需要关闭文件描述符?

    当然 大多数情况下的直接答案是 yes 而且我坚信进程应该正确地清理它分配的任何资源 但我的情况是一个长期运行的系统守护进程 它在启动时打开固定数量的文件描述符 并在启动之前关闭它们 退出 这是一个嵌入式平台 我试图使代码尽可能紧凑 同时不
  • 控制 Linux 嵌入式应用程序的启动屏幕

    在嵌入式编程中 通常需要用一些自定义的 加载 动画或从开机到启动并运行的启动屏幕来替换默认的 Linux 启动输出 达到这个目的的方法是什么 有没有办法在整个启动序列中使用相同的 进程 如何解决这个问题 我猜我们需要一个自制内核来实现这一点
  • 嵌入式Linux中的busybox显示“未找到小程序”

    我自己编译了busybox 并将其放在我们的嵌入式linux中 但我有一些问题 问题1 当我尝试使用某些命令 例如gzip 时 它打印 gzip 未找到小程序 当我检查busybox的菜单配置时 我确保我选择了 gzip 问题2 我曾经使用
  • 将 ASM 转换为 C(不是逆向工程)

    我用谷歌搜索 发现数量惊人的轻率回复 基本上都是在嘲笑提出这样问题的提问者 Microchip 免费提供一些源代码 我不想将其发布在这里 以防万一 基本上 谷歌 AN937 单击第一个链接 其中有一个 源代码 链接及其压缩文件 它在 ASM
  • 适用于嵌入式设备的良好串行通信协议/堆栈? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在为各种项目编写了几个不同的自定义串行协议后 我开始对每次重新发明轮子感到沮丧 我一直在寻找更通用的解
  • 针对低内存使用情况,康威生命游戏的有效实现是什么?

    我正在寻找一种快速且节省内存的方法来实现康威的生命游戏 限制 96x128 板 大约 2kB 可用 RAM 和 52MHz 处理器 请参阅此处的技术规格 http www getinpulse com features http www g
  • 如何调试 STL/C++ 的 GCC/LD 链接过程

    我正在用 C 开发裸机 cortex M3 以获取乐趣和利润 我使用 STL 库 因为我需要一些容器 我认为通过简单地提供我的分配器 它不会向最终的二进制文件添加太多代码 因为您只得到您使用的内容 实际上我根本没想到与 STL 有任何链接过
  • 下载控制板软件模拟器

    我有兴趣学习如何用 c 进行嵌入式系统编程 但是 我需要一些硬件 我想知道有什么软件可以模拟控制板的功能吗 控制板在下面的教程中列出 http www learn c com hardware htm http www learn c co
  • 浮点线性插值

    在两个变量之间进行线性插值a and b给定一个分数f 我目前正在使用这段代码 float lerp float a float b float f return a 1 0 f b f 我认为可能有一种更有效的方法 我使用的是没有 FPU
  • c - 将 uint8_t* 转换为 uint32_t* 行为

    我读过这个问题 将 uint8 转换为 uint32 如何工作 https stackoverflow com questions 28603243 how does casting uint8 to uint32 work但我不确定给出的
  • 我可以从哪里开始使用可编程硬件?

    一段时间以来 我一直渴望至少学习一点有关硬件编程的知识 并想在这里提出要求以获得一些起点 我是一位相当有成就的程序员 具有 Delphi 和 Objective c 经验 但从未听过设备端口 中断 我什至不知道术语 更不用说对硬件进行编程了
  • 创建 32 位计数器时出现全局变量问题

    我正在尝试做正交解码 using 爱特梅尔 Xmega AVR微控制器 Xmega只有16 bit柜台 另外 我已经用完了所有可用的计时器 现在要做32 bit柜台我用过一个16 bit柜台并在其over under flow interr
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • MISRA C++(规则 18-4-1)和动态内存分配 - 是否允许 std::string?

    MISRA C 规则 18 4 1 说 不得使用动态堆内存分配 See http dist sonarsource com reports coverage misra c 2008 html http dist sonarsource c
  • 在嵌入式 Jetty 上使用 DefaultServlet 提供静态 html 文件

    我正在开发一个需要独立的项目 因此我决定将 Jetty 嵌入到我的应用程序中 我将提供静态 HTML 页面 一些 JSP 页面 并且还将使用一些自定义 servlet 我找到了一个完美的示例 说明如何设置嵌入式 Jetty 来完成所有这一切

随机推荐

  • gRPC(HTTP/2) 比使用 HTTP/2 的 REST 更快吗?

    目标是引入一种性能更好的传输和应用层协议latency and 网络吞吐量 目前 该应用程序使用REST with HTTP 1 1并且我们遇到了很高的延迟 我需要解决这个延迟问题并且我愿意使用gRPC HTTP 2 or 休息 HTTP2
  • 使填充的值成为ggplot2中的实际填充

    有没有办法让填充的值 标签 成为填充本身 例如 在堆积条形图中 我有 require ggplot2 big votes movies movies movies votes gt 100000 p ggplot big votes mov
  • Objective-c:如何创建不同深浅的颜色

    是否有任何算法可以为给定的十六进制或 RGB 值创建不同的阴影 我尝试过增加和减少 alpha 但浅色 例如 白色 看起来不太好 实现此目的的最佳方法是使用 HSB 色彩空间 这就是我在最新的应用程序中完成键盘左手部分的方式 颜色的 阴影
  • 如何在rails中定义自定义路径?

    我有一个用户模型 如果我做 def my action user User new end then I get undefined method users path for
  • 在 Cocoa 中实现源代码语法高亮的最佳方法是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发 Cocoa 应用程序 它应该能够分析和突出显示用 Objective C SQL JavaS
  • git am:补丁格式检测失败

    我以前从未在 Git 中使用过补丁 我需要一些帮助 我正在尝试将补丁应用到 Git 存储库来测试 Wine 补丁 特别是这个补丁在这里 https bugs winehq org attachment cgi id 60752 所以我做了以
  • 如何从同一网络中的另一台计算机访问我的 nodejs-express 本地主机服务器?

    我努力了this https stackoverflow com questions 5524116 accessing localhost xampp from another computer over lan network how
  • xpath 的多个 string() 结果?

    string 在我试图从中提取文本的某个网页上效果很好 具有类似的结构 对于 bing 我尝试过的 xpath 是 string h3 a 即使有强标签等 它也能很好地获取搜索结果 但只返回第一个结果 有没有类似 strings 的东西 这
  • 将 for 循环中的值传递给事件侦听器 - Javascript [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Google Maps API v3 循环遍历标记问题 https stackoverflow com questions 2670356 looping through markers wit
  • 闪亮的如何阻止用户访问选项卡?

    我需要阻止用户访问其他选项卡 直到完成某些操作 在这个可重现的示例中 我想阻止用户访问Tab 2直到他按下按钮 该应用程序如下所示 这是该应用程序的代码 library shiny ui lt shinyUI navbarPage tabP
  • 如何真正释放 Linux 中的大页面以供新进程使用?

    真的找不到太多关于此的信息 希望有人可以提供帮助 我正在假脱机使用 100GB java 堆作为大数据缓存 为了避免与文件系统缓存等内容发生冲突 并且因为它通常性能更好 我将其分配在大页面中 我保留了 51 200 x 2MB 大页面 一切
  • 如何在 VS Code 中集成 babun shell

    我尝试过更改设置 terminal integrated shell windows to babun mintty地点 但是 babun shell 窗口单独打开 并且不与 VS code 集成 有人知道如何实现这一目标吗 经过2个小时的
  • 如何强制send_data在浏览器中下载文件?

    好吧 我的问题是我正在使用send data on my Rails 3应用程序向用户发送文件AWS S3类似的服务 Base establish connection access key id gt my key secret acce
  • Python 使用 pandas 和 str.strip 崩溃

    这段最少的代码使我的 Python 崩溃了 设置 pandas 0 13 0 python 2 7 3 AMD64 Win7 import pandas as pd input file r c3 csv input df pd read
  • Google Pub/Sub 是否有队列或主题?

    我熟悉 JMS 对 Google Pub Sub 还很陌生 在 JMS 中有 2 个选项 Queue 只有一个消费者可以接受消息 Topic 每个消费者接受来自主题的每条消息 我相信 Google Pub Sub 应该支持这样的东西 但是快
  • 如何通过值获取 JavaScript“Map”中的键?

    我有一个像这样的 JavaScript 地图 let people new Map people set 1 jhon people set 2 jasmein people set 3 abdo 我想要某种方法按值返回键 let jhon
  • 通过vba在每个空间范围之间添加求和公式

    我试图进行自动化 但我被困在这里 我需要在空间范围之间动态添加总和公式 我完全迷失了使用 VBA 添加公式的能力 任何人都可以帮助我 先感谢您 我假设您想要的是 如果单元格中有空白 您希望将所有其他元素相加并将结果放置在该空白中 可能有很多
  • 没有找到任务运行程序配置?

    我有 新安装的 Visual Studio Professional 2017 V 15 9 4 视觉工作室解决方案 https learn microsoft com en us visualstudio ide solutions an
  • 尝试使用 python 连接 mongodb atlas 时连接超时

    我正在尝试连接到我的 mongodb atlas 集群 但是当我尝试对我的数据库执行某些操作时 我总是超时 我使用的数据库是在 mongoshell 中创建的 也是我在 mongodb compass 中检查它们是否存在的集合 ERROR
  • 工作站和嵌入式程序员之间的心态差异[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi