单片机开发从小工到专家

news2024/11/26 8:38:15

有道无术,术尚可求;有术无道,止于术

背景

向单片机嵌入式开发小伙伴推荐了几本书,阅读量破10+
在这里插入图片描述
在这里插入图片描述

1. 适用范围

2. 书籍推荐

书籍推荐
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 大师介绍

大师介绍

4. 大师书籍编写逻辑

25年大师出版的关于:嵌入式单片机开发方向的书籍

  • 思想:
    • OOP OOA OOD
    • UML建模
  • 软件开发生命周期
  • 软件开发模型
    • 螺旋模型
  • 软件开发方法论
    • DDD
    • 敏捷
    • 极限编程
  • 实时嵌入式操作系统
  • 设计模式
  • 故障分析:FMEA

4. 实战

知行合一

5. 读后感:

“Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit” 这本书的复杂性和专业性让很多读者难以理解,主要原因在于它覆盖了多个高级主题和专业领域。为了充分理解书中的内容,读者需要具备以下方面的知识和经验:

  1. 专业背景:主要面向有嵌入式系统学术或工作背景的读者。对这一领域缺乏经验的读者可能难以理解复杂的概念。

  2. 编程和软件设计知识:书中设计模式和实例主要基于C语言,同时涉及面向对象分析(OOA)、设计(OOD)和编程(OOP)的理念。

  3. 设计模式的复杂性:设计模式是解决特定问题的抽象方案。没有一定的软件设计经验可能难以理解其应用和好处。

  4. 交叉学科知识:书中还涉及如统一建模语言(UML)、实时操作系统(RTOS)等领域的知识。

  5. 项目周期管理和产品研发流程:理解整个项目生命周期和产品研发的各个阶段对实现嵌入式系统至关重要。

  6. 丰富的项目经验:没有丰富的项目经验,尤其是在嵌入式系统领域,可能导致读者难以将理论应用到实践中。

  7. 嵌入式系统的特殊性:这类系统通常对资源、性能和可靠性有特别要求,理解这些特性对于理解书中的内容至关重要。

  8. 理论与实践结合:理论知识和实际应用的结合是理解书中内容的关键。单纯的理论学习可能不足以领会书中的深层次知识。

9.硬件知识:嵌入式系统设计涉及硬件和软件的紧密结合,了解硬件对软件设计的影响是必要的。

8. 软件工程化

硬件设计有硬件设计图纸,
机械设计有机械设计图纸,
建筑设计有建筑设计图纸,
园林设计有园林设计图纸,
电气工程有电气设计图纸
服装设计有服装设计图纸。
各行各业都有设计图纸,都遵循各领域行业标准画图纸。
大到航空母舰小到盖个鸡舍都需要图纸。

然而,令人遗憾的是,在嵌入式实时系统软件设计领域,UML(统一建模工具)使用仍然不普及,有时甚至完全缺失。
尽管UML已有三四十年历史,但在嵌入式实时系统软件设计领域仍步履蹒跚。
在医疗仪器龙头企业干几年,没人使用UML统一建模工具绘制嵌入式实时系统软件设计图纸,仅绘制非标设计图。

在嵌入式实时系统软件设计领域内,常见的做法是先行写代码,再补充设计图纸,
这种做法类似于“先盖楼,后画图”,在没有图纸的情况下盖起高楼,待楼房建成后才绘制设计图。

“先盖楼,后画图”已经是很负责的了,绝大多数是没有图纸没有文档的,
这种现象在该领域中普遍存在,导致网络上频频吐槽代码晦涩难懂,
只有开发者自己努力回想才能理解(大多数没有图纸,这似乎成了一种“价值”,因为可见的未来无人能替代)。
这不仅体现了行业内某种程度的自满和保守,也暴露了对软件建模的忽视,
所以随之而来的超乎想象的产品投诉率、产品故障率、甚至产品召回,但可以肯定的是都与项目负责人有关系,
毕竟将帅无能累死三军,其中大多数故障都是嵌入式开发工程师们的“杰作”,
因为,其他方向工程师都有标准化图纸,都有实体,实体都有质量属性,
就只有软件只有逻辑没有图纸,甩锅小能手,扯呼起来舍我其谁,谁与争峰……

9. 从小工到专家

完全理解并掌握 “Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit” 这本书中的内容是达到高级研发工程师岗位要求的重要一步,但需要注意的是,成为一名高级研发工程师通常还需要以下几方面的能力和经验:

  1. 实际项目经验:理论知识固然重要,但高级工程师通常需要在实际项目中应用这些知识。成功的项目经验能展示一个人的技能不仅限于理论,还能在实际问题中找到解决方案。

  2. 问题解决能力:高级工程师应能独立解决复杂的技术问题。这不仅包括编程技能,还包括系统设计、性能优化、问题诊断和创新解决方案的能力。

  3. 团队合作与领导能力:高级工程师通常需要在团队环境中工作,有时还需要领导项目或团队。良好的沟通能力和团队合作精神是必不可少的。

  4. 持续学习和适应能力:技术领域不断进步,高级工程师需要持续学习新技术和方法论,以保持其技能的相关性和前沿性。

  5. 软件工程的全面知识:除了嵌入式系统,高级工程师还应对软件工程的其他方面有深入的理解,如软件架构、测试、维护和软件生命周期管理。

  6. 创新和研究能力:在某些情况下,高级工程师还需要能够进行技术创新和研究,以推动领域的发展。

总之,虽然完全理解这本书是成为高级研发工程师的重要条件之一,但还需要广泛的技术知识、丰富的实践经验和良好的软技能。在职业生涯中不断学习和积累经验是达到高级水平的关键。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1342864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA中的回调函数

回调函数的基本概念: 回调函数是一种常见的编程模式,也称为回调机制。回调函数是一种特殊的函数,它允许将一段代码作为参数传递给另一个方法,并在需要时调用。回调函数通常用于异步编程或事件处理,可以将程序的控制权…

NFC物联网智能购物车设计方案

智能购物车是综合利用计算机网络、射频识别技术、数据库技术、单片机于一体的设备具有先进性、便于管理性、经济性、普适性。基于NFC (Near Field Communication,近场通信)技术的智能购物车,能够大幅缩短结账排队时间,实现“无感支付”。NFC是…

对SPI总线上挂接多个X5045的读写操作

#include<reg51.h> //包含单片机寄存器的头文件 #include<intrins.h> //包含_nop_()函数定义的头文件 sbit SCKP3^4; //将SCK位定义为P3.4引脚 sbit SIP3^5; //将SI位定义为P3.5引脚 sbit SOP3^6; //将SO位定义为P3.6引脚 sbit CS1P3^7; …

【js控制页面的模糊程度】【lenis禁止页面滚动】

文章目录 前言一、效果图二、使用步骤1.下载studio-freight/lenis2.使用studio-freight/lenis 三、下载 gsap在编写页面动画1. 下载gsap2.引入gsap3.调用gsap的方法&#xff0c;让页面模糊 总结 前言 在项目中&#xff0c;我们经常会遇到弹窗功能&#xff0c;当弹框弹出时&…

MPI并行程序设计 —— C 和 fortran 环境搭建 openmpi 示例程序

1.安装环境 wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.6.tar.g tar zxf openmpi-4.1.6.tar.gz cd openmpi-4.1.6/ 其中 configure 选项 --prefix/.../ 需要使用绝对路径&#xff0c;例如&#xff1a; ./configure --prefix/home/hipper/ex_open…

python subprocess run 和 Popen 的一些使用和注意事项

文章目录 一、run二、Popen NAME subprocess - Subprocesses with accessible I/O streams MODULE REFERENCE https://docs.python.org/3.9/library/subprocess The following documentation is automatically generated from the Python source files. It may be incomplete, …

【事故总结】Mybatis-Wrapper导致的生产事故

近期遭遇了一次生产环境的严重告警&#xff0c;涉及慢接口和CPU过载。经过排查&#xff0c;发现问题根源在于一段使用MyBatis的查询代码。当传入空列表作为查询条件时&#xff0c;MyBatis会忽略该条件&#xff0c;导致全表扫描&#xff0c;进而引发系统资源耗尽和频繁的Full GC…

浅谈技术架构的演进过程

前言 最近在学习Redis、Doctor相关技术知识&#xff0c;它们与分布式系统有着很大的关系。 而对于分布式系统&#xff0c;它本身就是随着业务的不断推进&#xff0c;技术架构不断演进而得到发展和实现的。而所谓的分布式系统&#xff0c;实际上就是想办法引入更多的硬件资源&am…

OpenHarmony之分布式软总线

分布式软总线是多设备终端的统一基座&#xff0c;为设备间的无缝互联提供了统一的分布式通信能力&#xff0c;能够快速发现并连接设备&#xff0c;高效地传输任务和数据。 分布式软总线实现近场设备间统一的分布式通信管理能力&#xff0c;提供不区分链路的设备间发现连接、组网…

消息队列基础知识

学一点&#xff0c;整一点&#xff0c;基本都是综合别人的&#xff0c;弄成我能理解的内容 https://blog.csdn.net/BenJamin_Blue/article/details/125946812 https://blog.csdn.net/qq_46119575/article/details/129794304 &#x1f4cc;导航小助手&#x1f4cc; 生产者-消费者…

14.12-常见的对于非阻塞复制的误解

常见的对于非阻塞复制的误解 1&#xff0c;非阻塞赋值和$display1.1&#xff0c;RTL案例1.2&#xff0c;功能实现1.3&#xff0c;解释误解 2&#xff0c;#0延时赋值2.1&#xff0c;RTL案例2.2&#xff0c;功能实现2.3&#xff0c;解释误解 3&#xff0c;对同一变量进行多次非阻…

家用洗地机哪个牌子好?2024年洗地机热门品牌测评

随着科技水平的不断发展&#xff0c;人们对家居设备的要求也在不断提高&#xff0c;追求省时省力的家务工具变得越来越受欢迎。家用洗地机的出现满足了这一需求&#xff0c;其洗拖吸一体的特点使其成为现代家庭的必备神器。 使用家用洗地机可以极大地提高地面清洁的效率&#…

因数据侵权,纽约时报起诉OpenAI、微软

12月28日&#xff0c;金融时报消息&#xff0c;因为非法使用数百万篇新闻数据训练ChatGPT等生成式AI产品&#xff0c;《纽约时报》正在起诉OpenAI和微软。 这是第一家起诉生成式AI厂商的著名媒体。《纽约时报》没有公布具体数额&#xff0c;但希望获得数十亿美元的赔偿金。 O…

两向量叉乘值为对应平行四边形面积--公式推导

两向量叉乘值为对应平行四边形面积--公式推导 介绍 介绍

PowerShell Instal 一键部署gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…

Ubuntu22.04-安装后Terminal无法调出

参考&#xff1a; Ubuntu20.04 终端打开不了的问题排查_ubuntu终端打不开-CSDN博客 https://blog.csdn.net/u010092716/article/details/130968032 Ubuntu修改locale从而修改语言环境_ubuntu locale-CSDN博客 https://blog.csdn.net/aa1209551258/article/details/81745394 问…

2023年度总结:技术旅程的杨帆远航⛵

文章目录 职业规划与心灵成长 ❤️‍&#x1f525;我的最大收获与成长 &#x1f4aa;新年Flag &#x1f6a9;我的技术发展规划 ⌛对技术行业的深度思考 &#x1f914;祝愿 &#x1f307; 2023 年对我来说是一个充实而令人难以忘怀的一年。这一年&#xff0c;我在CSDN上发表了 1…

有效解决vcruntime140_1.dll丢失的问题,关于vcruntime140_1.dll文件

今天在使用电脑的过程中突然提示找不到vcruntime140_1.dll&#xff0c;出现这样的提示后&#xff0c;想要在打开程序时&#xff0c;有再一次提示找不到vcruntime140_1.dll&#xff0c;不能在正常打开程序&#xff0c;那么有什么办法可以解决vcruntime140_1.dll丢失的问题呢&…

用python画最简单的图案,用python画小猫简单代码

本篇文章给大家谈谈用python画小猫简单100行代码&#xff0c;以及用python画最简单的图案&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 Source code download: 本文相关源码 from turtle import * #两个函数用于画心 defcurvemove():for i in range(200): …

Java基础02-Java编程基础

文章目录 变量&#xff08;Variables&#xff09;局部变量和成员变量局部变量&#xff08;Local Variables&#xff09;成员变量&#xff08;Instance Variables&#xff09; 标识符&#xff08;Identifiers&#xff09;八种基本数据类型原始数据类型&#xff08;Primitive Dat…