状态机思路在嵌入式开发中的应用详解

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥状态机的概念状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键后切换到了B状态;再触发另一个键后切换到C状态,或者返回到A状态。这就是最简单的按...
📅 2023-08-05 阅读全文 →

读者问:C语言入门要掌握哪些基础知识?

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥01C语言程序的结构认识用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使小伙伴对c语言有个初步认识。例1:计算两个整数之和的c程序:#include main() { int a,b,sum; a=20; /*...
📅 2023-08-05 阅读全文 →

OOPC精要——撩开“对象”的神秘面纱

本文主要探讨的是OOPC的设计思维,重在理解“对象”的本质,因此标题也改为了更符合文章内容的形式。【正文】前言:何为面向过程:面向过程,本质是“顺序,循环,分支” 面向过程开发,就像是总有人问你要后续的计划一样,下一步做什么,再下一步做什么,意外、事物中断、突发事件怎么做。理论上来说,任何一个过程都可以通过“顺序,循环,分支”来描述出来,但是实际上,很多项目...
📅 2023-08-05 阅读全文 →

嵌入式系统编程之内存操作的注意事项

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥在嵌入式系统的编程中,内存操作是我们常用到的,但往往也是易错的地方,怎么避免呢,今天给大家分享一些相关的避坑指南。数据指针在嵌入式系统的编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力。在嵌入式系统的实际调试中,多借...
📅 2023-08-05 阅读全文 →

嵌入式单片机编程魔法之三权分立

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥在单片机编程中,有很多人会因为一些貌似简单的处理而把问题弄得乱七八糟,如林中蛛网一样,错综复杂。而事实上,根据编程魔法之思想,对程序处理的过程严格划分部门、各施其职、部门内部互不干涉内政,是成功编程的关键。也许我这样说,很多人还觉得很抽象。因为人人都知道模块化设计的理念,但是又有几人能把这个理念...
📅 2023-08-05 阅读全文 →

怎么能学好单片机?

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥作为一名电子技术从业人员,你学过单片机吗?你会运用单片机吗?我想你一定学过,但不一定会运用。因为学习单片机比学习其他学科需要付出更多的努力和代价,不仅要学习理论知识还要练习实际操作,而且主要是在实际操作中才能真正学到单片机技术。因主修专业的不同以及电子基础的深浅不同,对于不同的人可能采用不同的学...
📅 2023-08-05 阅读全文 →

怎么能学好嵌入式Linux ?

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥俗话说万事开头难,刚开始的时候,你是否根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去图书馆看书也是找不到方向?又是arm,又是linux,又是uboot头都大了,不知道自己究竟从哪里开始?下面就跟着我学习设计嵌入式工程师的修炼日记吧!简单说,从arm基础知识到裸机编程,从uCOSI...
📅 2023-08-05 阅读全文 →

嵌入式系统编程怎么实现性能优化?

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法使用宏定义在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。写一个“标准”宏MIN ,这个宏输入两个参数并返回较小的一个:错误做...
📅 2023-08-05 阅读全文 →

精心整理的万字Linux内核源码规范

ID:小麦大叔作者:菜刀和小麦从编码风格错误开始快速修改编码风格的工具scripts/checkpatch.plscripts/LindentastyleLinux 内核代码风格1 缩进2 把长的行和字符串打散3 大括号和空格的放置4 命名5 Typedef6 函数7 集中的函数退出途径8 注释9 你已经把事情弄糟了10 Kconfig 配置文件11 数据结...
📅 2023-08-05 阅读全文 →

实时性迷思——是不是越快越好?

【序】不知道你发现没有,平时我们讨论嵌入式软件开发时总绕不开与实时性(Real Time)相关的话题。相信不少朋友和我一样是通过实时性操作系统(Real Time Operating System, RTOS)第一次接触到实时性概念的——我记得那还是大学时代、参加机器人竞赛的时候。工作以后自信地以为加深了不少对实时性的本质认识——现在看来其实还未摸...
📅 2023-08-05 阅读全文 →

嵌入式系统编程软件架构该注意哪些方面?

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥模块划分模块划分的“划”是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了相对论),C语言模块化程序设计需理解如下概念:模块即是一个....
📅 2023-08-05 阅读全文 →

20个成熟软件中常用的宏定义

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大作者:李肖遥写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用的宏定义。1. 防止一个头文件被重复包含1#ifndef COMDEF_H2#define COMDEF_H3//头文件内容4#endif2. 重新定义一些类型...
📅 2023-08-05 阅读全文 →

C语言居然还有Q格式这种用法?

ID:小麦大叔作者:菜刀和小麦用过DSP的应该都知道Q格式吧;1 前言Q格式是二进制的定点数格式,相对于浮点数,Q格式指定了相应的小数位数和整数位数,在没有浮点运算的平台上,可以更快地对浮点数据进行处理,以及应用在需要恒定分辨率的程序中(浮点数的精度是会变化的);需要注意的是Q格式是概念上小数定点,通过选择常规的二进制数整数位数和小数位数,从而达到所需要的数...
📅 2023-08-05 阅读全文 →

嵌入式模块化编程—— 层次框架初探

【说在前面的话】在本系列的前面几篇文章中,我们依次讨论了如下的几个问题:模块化的目的是什么?—— 复用代码,节省开发时间;阻碍模块化实现其最初目的的障碍是什么?—— 把原本的黑盒子当成白盒子,或者更通俗的说:阅读模块的源代码;能不能介绍一种模块化的方法?—— Service模型;如何在Service模型的基础上真正把模块做成黑盒子?——&...
📅 2023-08-05 阅读全文 →

盘点程序员实用书单,你修炼到了第几层?

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥程序员老实、爱学习,也是最有危机感的群体之一,他们每天在GitHub、各大技术论坛上如饥似渴地汲取对自己最有帮助的技术知识,同时怕时间精力跟不上高强度的程序员工作。为此,我们基于华为云各个产品线技术专家多年工作经验和心得体会,再经过层层筛选整理,推出了这份程序员进阶必读书单。无论是1年小白、5年...
📅 2023-08-05 阅读全文 →

从串口驱动到Linux驱动模型,想转Linux的必会!

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大整理:李肖遥本文通过对Linux下串口驱动的分析。由最上层的C库。到操作系统系统调用层的封装。再到tty子系统的核心。再到一系列线路规程。再到最底层的硬件操作。对Linux中的tty子系统进行简要的说明。从理论到实践。以便读者能对OS原理有更深入的了解和更具体的掌握。在具体分析之前。我们必须对串口。驱动。和...
📅 2023-08-05 阅读全文 →

从汇编看C++程序的条件判断语句

关注、星标公众号,直达精彩内容作者 | Mr Six来源| 脚本之家在当下,如果还能熟练地用汇编写程序的人怕是会被当成怪人来对待,即使是研究逆向的人大部分也只能说看得懂汇编,很少有人敢说他精通汇编的。如果是做开发的话,我也觉得汇编确实也没什么用。简单既是汇编的优点同时也是它的缺点。就是因为它的确太简单了,所以,要实现一个很简单的功能也需要很多的代码...
📅 2023-08-05 阅读全文 →

ZYNQ 在嵌入式开发中有什么魔力?

关注、星标公众号,直达精彩内容来源:ZYNQ作者:watchman最近公司开始做一个项目,再一次使用到ZYNQ,今天给大家科普一下ZYNQ是什么,以及ZYNQ在嵌入式系统中的应用情况。ZYNQ是什么?zynq是Xilinx公司7系列的FPGA,其内部除了具有Xilinx公司FPGA逻辑资源之外,还集成了两个ARM核,可用于嵌入式系统的开发,尤其方便于嵌入式软...
📅 2023-08-05 阅读全文 →

Linux 环境变量配置全攻略,初学者必会...

关注、星标公众号,直达精彩内容作者 | 悠悠i来源| 网络素材在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。下面所有例子的环境说明如下:系统:Ubuntu 14.0用户名:uusama需要配置MySQL环境变量路径:/home/uusama/mysql/binLinux读取环境变量读取环境变量的方法:export...
📅 2023-08-05 阅读全文 →

FreeRTOS系列第13篇---FreeRTOS任务通知

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大作者:李肖遥❝公众号回复“freertos”可以获取【freertos系列】汇总链接。❞任务通知的基础知识每个RTOS任务都有一个32位的通知值,任务创建时,这个值被初始化为0。RTOS任务通知相当于直接向任务发送一个事件,接收到通知的任务可以解除阻塞状态,前提是这个阻塞事件是因等待通知而引起的。发送通知的...
📅 2023-08-05 阅读全文 →

程序员翻车时,脑子里都在想什么?

关注、星标公众号,直达精彩内容公众号 | 技术让梦想更伟大 来源| 老九学堂开发工作充满了挑战性。人无完人,对于程序员来说,写出有 bug 的代码是在所难免的。有些人很淡定,也有一些人会感到生气、沮丧、不安或气馁。在修复 bug 的过程中我们都经历了什么?来和大雄一起找找共鸣,看看大家是不是都经历过这种挣扎:1“我不知道该把它删掉还是该重...
📅 2023-08-05 阅读全文 →

只有170字节?最小的64位Hello World程序原来是这样

关注、星标公众号,直达精彩内容作者 | CJ Ting来源| 网络素材最简单的 C 语言 Hello World 程序,底层到底发生了什么?如何编写出最小的 64 位 Hello World 程序?Hello World 应该是每一位程序员的启蒙程序,出自于 Brian Kernighan 和 Dennis Ritchie 的一代经典著作 The ...
📅 2023-08-05 阅读全文 →

FreeRTOS系列第14篇---使用任务通知实现命令行解释器

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大作者:李肖遥❝公众号回复“freertos”可以获取【freertos系列】汇总链接。❞虽然这是介绍FreeRTOS系列的文章,但这篇文章偏重于命令行解释器的实现。这一方面是因为任务通知使用起来非常简单,另一方面也因为对于嵌入式程序来说,使用命令行解释器来辅助程序调试是非常有用的。程序调试是一门技术,基本上...
📅 2023-08-05 阅读全文 →

15张图 | 掌握程序是如何在线升级的...

关注、星标公众号,直达精彩内容作者 | IOT小胡来源| 网络素材最近其中一个项目快搞完,也就涉及到了在线升级的问题,于是便动起手来,这是网上看到的一篇关于程序在线升级的干货文章,转与大家一起学习。一、在线升级基础知识什么是BootLoader?BootLoader可以理解成是引导程序, 它的作用是启动正式的App应用程序. 换言之, B...
📅 2023-08-05 阅读全文 →

C语言函数不能返回数组,却可以返回结构体?

关注、星标公众号,直达精彩内容来源:今日头条作者:IT刘小虎最近有读者问我,为什么C语言函数可以返回结构体,却不可以返回数组。有这样的问题并不奇怪,因为C语言数组和结构体本质上都是管理一块内存,那为何编译器要区别对待二者呢?为何编译器要区别对待二者呢?C语言函数为什么不能返回数组?在C语言程序开发中,我们不可以编写下面这样的代码:char f(vo...
📅 2023-08-05 阅读全文 →

2020秋招——万字面经分享,这一篇超级走心

秋招投递公司23家,简历被刷1家。笔试/测评挂掉3家。至今无消息的8家。获得Offer的公司有小米,兆易创新,全志科技,浙江大华,海格通信,京信通信,景嘉微电子,广州朗国电子,北京华大电子,中国长科技集团。已签约浙江大华。有面试联发科北京(7.16)广州朗国电子科技(8.24)浙江大华股份(9.3)兆易创新(9.3)景嘉微(9.13)全志科技(9.15)小米...
📅 2023-08-05 阅读全文 →

嵌入式系统C编程之错误处理实战篇(附代码)

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大作者:clover-toeic前言本文主要总结嵌入式系统C语言编程中,主要的错误处理方式。文中涉及的代码运行环境如下:一、错误概念1.1 错误分类从严重性而言,程序错误可分为致命性和非致命性两类。对于致命性错误,无法执行恢复动作,最多只能在用户屏幕上打印出错消息或将其写入日志文件,然后终止程序;而对于非致命...
📅 2023-08-05 阅读全文 →

这两种printf()函数重定向方法,太实用了

关注、星标公众号,直达精彩内容来源:CSDN网络素材作者:echobright作者:echobright原文链接:https://blog.csdn.net/qq_29344757/article/details/75363639在前面学习了STM32的串口编程,通过USART1向计算机的串口调试助手打印数据,或者接收计算机串口调试助手的数据,接下来我们可以...
📅 2023-08-05 阅读全文 →

总结了7个技巧,大幅提升你的嵌入式系统可靠性

关注、星标公众号,直达精彩内容ID:技术让梦想更伟大来源:网络素材成为一个正式的嵌入式开发工程师是一个艰辛的过程。从规范完善的开发周期到严格执行和系统检查,开发高可靠性嵌入式系统的技术有许多种。本文介绍7个易操作且可以长久使用的技巧,它们对于确保系统更加可靠地运行并捕获异常行为大有帮助。技巧1:用已知值填充ROM软件开发人员往往都是非常乐观的一群人,只要让他...
📅 2023-08-05 阅读全文 →

使用PyQt5实现自动化测试,太便利了

关注、星标公众号,直达精彩内容公众号:技术让梦想更伟大作者:Boudewijn Rempt 和 David Mertz最近在使用pyqt写个自动化测试软件,对python和Qt都需要有一些了解,输出这篇文章主要是想分享一下Qt和PyQt用于Python的高级GUI库的知识。也有些感慨,当然这个pyqt用不上的可以直接不看了,先分享几点。嵌入式开发学的东西真的...
📅 2023-08-05 阅读全文 →