0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式系统开发的思维和注重方法

Q4MP_gh_c472c21 来源:技术让梦想更伟大 作者:李肖遥 2021-09-02 11:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

开头的话

嵌入式开发是一个比较苦、容易背锅、可能仍然需要996而且拿钱较少,但也有些许乐趣的活,我一直称之为跳坑里了。如果你在里面深耕,那终究会成为大佬,软硬结合的高手;如果你刚入坑,我可能劝你转,但是可能你自己还有点舍不得。

总之,确定了在这一行,靠的就是思维与技巧结合,注重实践方法,方能在其中有一席之地。

从裸机思维开始

嵌入式系统是一个面向应用高度裁减的专用计算机系统,嵌入式软硬件也可以这样定义

软件:人们借助某种语言,“尝试”固化下来的,自己的思维

硬件:业已固化下来的逻辑,可以稳定的提供确定的服务和功能软件的本质是设计人员的思维,因而程序设计人员最重要的是自己根据任务的需求想通所有的逻辑,并借助一定的语言作为工具,把自己的思维“固化”下来,而硬件,本质上一个固化下来的逻辑。

这个是行业内在心底里约定俗成已经默默在做的事情,嵌入式系统、模块化编程、状态机、层次框架等等,都是在其中摸索探究。

注重方法

思维的设计有很多辅助工具,如大家熟知的流程图、UML图、数据流图等等。然而,具体代码往往并不是一个好的辅助工具。

进行思维设计的开发人员,叫做Programmer,也就是所谓的码农,而要做一个好的码农,真的需要注意方法,比如状态机编程,怎么理解状态?如何才算一个状态。

我们看到图中,我们用圆圈来表示一个状态,图中最左的箭头表示从别的什么地方“跃迁”到了当前状态;下方的箭头表示从当前状态离开;右上角从当前状态“扇出”后又“返回到”当前状态。这里需要很多转变,而好的架构很关键。

在之前我分享过很多状态机的知识,可以说万物皆可状态机,而嵌入式软件开发时总绕不开与实时性(Real Time)相关的话题,大部分人对实时性的认知过程通常会分以下几个阶段:。

v1:“实时性” = “越快越好”

Lv2:“实时性” = RTOS,认为选一个好的RTOS,或者会用RTOS就可以保证实时性;

Lv3:“实时性” = 任务拆分;

Lv4:开始思考实时性模型的特点;

Lv5:到了这个阶段,不仅脑洞大开、战斗力惊人总而言之需要深入理解,才能在注重方法的前提下,成为一个高级码农。

注重技巧

为大家庖丁解牛、由浅入深,就要不惧怕优化,不要把编译器的行为看作是玄学,深入底层,才能把编译器、内存、寄存器、语言本质理解的透彻。

比如位域和volatile,前者用于将指定类型的整形变量按照我们的意愿切分;后者用于告诉编译器不允许对被修饰的变量做优化。如果我们对编译器的优化等级忽略的话,很难定义到bug,或者当我们对内存块理解的不深入不透彻,关于内存的七七八八就会莫名其妙的找上门来。

volatile在嵌入式系统中的应用范围非常广泛,假设某32位外设寄存器的地址为XXXXX_IO_REG_BASE_ADDRESS,则对应的寄存器可以定义为如下的形式:

#defineXXXXX_IO_REG ( *((volatile uint32_t*)XXXX_IO_REG_BASE_ADDRESS) )

而应用中很多针对外设寄存器的连续操作都可以通过优化来大幅度提高效率,在保证程序逻辑正确的情况下,应该尽可能减少volatile的使用,或者是限制其使用的范围,那么你知道为什么吗?

这就是编译器、语言本身、变量的一些特别之处,搞定这些底层原理知识,必定让我们打开语言的大门。

最后的话

嵌入式开发所涉及到的思维训练、C语言以及编译器相关的关键知识、裸机环境下的开发者模型等等,可以帮助我们深入理解底层原理知识,以不变应万变,最终对知识点实现完整和全面的覆盖。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5209

    文章

    20656

    浏览量

    337026
  • C语言
    +关注

    关注

    183

    文章

    7646

    浏览量

    146154

原文标题:大佬谈:嵌入式系统开发的思维、方法、技巧

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式驱动开发,需要掌握哪些技能?

    单元测试、集成测试、系统测试等,并学会使用调试工具进行问题排查。 6、 其他嵌入式驱动开发,实质也是软件开发,还需要掌握开发文档的编辑、
    发表于 01-20 16:46

    什么是嵌入式应用开发

    概述 所谓的嵌入式应用开发就是在嵌入式操作系统下进行开发、软硬件综合开发
    发表于 01-12 16:13

    从小白到大牛:Linux嵌入式系统开发的完整指南

    从小白到大牛:Linux嵌入式系统开发的完整指南 一、小白入门:搭建 Linux 嵌入式开发的认知地基​ 对于零基础学习者,首先要打破 “嵌入式开发高深莫测”的误区。Linux
    发表于 12-16 10:42

    分享一个嵌入式开发学习路线

    拓展期(3-4个月) 学习嵌入式操作系统(RTOS)和物联网通信技术,能开发“多任务、联网”的复杂项目,理解企业级嵌入式开发的“架构思维
    发表于 12-04 11:01

    使用xmake+zig更优雅的进行嵌入式系统开发

    引言在嵌入式系统开发领域,构建工具的稳定性与可维护性对项目长期发展至关重要。嵌入式项目通常需要针对不同硬件平台进行交叉编译,每个平台都需要依赖特定的构建工具链,环境搭建复杂。随着LLVM工具链的普及
    的头像 发表于 11-30 10:04 4932次阅读
    使用xmake+zig更优雅的进行<b class='flag-5'>嵌入式</b><b class='flag-5'>系统开发</b>

    C语言在嵌入式开发中的应用

    C 语言在汽车电子控制系统开发中的主导地位。 2、设备驱动程序 设备驱动程序是嵌入式系统中连接硬件和软件的桥梁,它负责实现嵌入式系统
    发表于 11-21 08:09

    新一代嵌入式开发平台 AMD嵌入式软件和工具2025.1版现已推出

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。 2025.1 版嵌入式软件和工具的新 增功能 AMD
    的头像 发表于 08-20 09:15 4213次阅读

    AMD 2025.1版嵌入式软件和工具的新增功能

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。
    的头像 发表于 08-15 15:32 1438次阅读

    入行嵌入式应该怎么准备?

    、CAN和Ethernet等)以及它们的工作原理和使用方法是必不可少的。此外,对于无线通信协议(如Bluetooth、Wi-Fi和LoRa等)的了解也是有益的。 五、调试和故障排除能力嵌入式系统开发中经
    发表于 08-06 10:34

    明远智睿SSD2351:开启嵌入式系统开发新时代

    在当今科技飞速发展的时代,嵌入式系统已经广泛应用于各个领域,从智能家居到工业自动化,从智能交通到医疗设备,嵌入式系统无处不在。而开发板作为
    的头像 发表于 07-15 15:47 698次阅读

    明远智睿SSD2351:嵌入式系统开发的卓越之选

    嵌入式系统开发这一充满挑战与机遇的领域,一款出色的开发板就如同开发者手中的利器,能助力他们披荆斩棘,创造出令人惊叹的成果。明远智睿SSD2351便是这样一款集性能、功能与易用性于一身
    的头像 发表于 07-15 15:46 751次阅读

    Linux嵌入式和单片机嵌入式的区别?

    区别 单片机嵌入式系统和Linux嵌入式系统是两种不同的嵌入式系统开发方式,它们在应用领域、
    发表于 06-20 09:46

    泰克MSO2024B混合信号示波器在嵌入式系统开发中的应用

    MSO2024B混合信号示波器以其高性能参数、灵活的触发机制和全面的协议解码能力,成为嵌入式系统开发中的理想选择。本文将深入探讨其在嵌入式系统开发中的具体应用及优势。   一、泰克MS
    的头像 发表于 06-16 15:40 1020次阅读
    泰克MSO2024B混合信号示波器在<b class='flag-5'>嵌入式</b><b class='flag-5'>系统开发</b>中的应用

    嵌入式开发,如何选择适合的系统

    嵌入式ARM开发中,面对多种操作系统的选择,如何做出最适合项目的决策?本文将为您梳理常见系统的特性,帮助您快速了解它们的优缺点,以便更好地选择适合的
    的头像 发表于 05-20 11:32 1297次阅读
    <b class='flag-5'>嵌入式开发</b>,如何选择适合的<b class='flag-5'>系统</b>?

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之一。以下将为初学者提供一份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1. 嵌入式系统的定义与应用
    发表于 05-15 09:29