![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
文笔
文章平均质量分 62
嵌入式开发星球
以培养优质嵌入式工程师为目的,持续分享优质嵌入式内容;答疑解惑,获取资源,可添加博主微信:18270720391;关注公众号:“嵌入式开发爱好者”,输入:“1024” 领取资料。
展开
-
嵌入式岗位“面试失败”的宝贵经验分享
一个良好的、张弛有度的面试状态,可能在面试开场的前3秒就能让你赢得HR的信任。其实用人单位决定是否录用一个人,有很多因素要考虑,这是一个综合的结果,而不简单的是你优秀与否、学校好不好、学位高不高的问题。把每一次面试都当做对职场、对工作的了解过程,用积极的心态去面对,不自负也不气馁,把握好状态,离面试成功也不会太远。以上任何一点,都会影响的面试结果,做得不到位或没有分寸,都会让你失去offer.检查出的问题,有必要一一记录总结,并根据自身的状况准备好下一次应对的方法。面试失败,在所难免。原创 2024-04-12 14:14:45 · 241 阅读 · 0 评论 -
嵌入式中常见的面试题分享
1.关键字static的作用是什么?为什么static变量只初始化一次?1)修饰局部变量:使得变量变成静态变量,存储在静态区,存储在静态区的数据周期和程序相同,在main函数开始前初始化,在退出程序时销毁(无论是局部静态还是全局静态)。2)修饰全局变量:全局变量本身就是存储在静态区,因此static并不能改变其存储位置。但是,static限制了其链接属性,被static修饰的全局变量只能被该包含该定义的文件访问(即改变了作用域)原创 2024-04-03 22:25:26 · 769 阅读 · 0 评论 -
嵌入式方向还有希望吗?
现在的电路集成化都很高了,直接有现成的芯片方案,芯片手册大多数都有参考电路,哪怕电路实现细节看不懂,都不影响使用,有些关键器件,数据手册也有说明,比如Buck电源电路,调哪些电阻值,输出多少V。工作了才知道,如果走单片机开发,根本不用像学模电那样学电路,三极管只要知道开关原理就够了,模电那种是给用三极管分立元件搭放大器的人学的,我们只是应用而已,不用学这么深。后面我转变了学习方向,买了个51开发板跟着教程学,就是那种手把手的,有讲C语言,有讲硬件基础,也有讲单片机一起的。原创 2024-03-14 22:00:48 · 484 阅读 · 0 评论 -
2023年,跳槽了4家电源公司
最后压跨我离职的稻草是,需要给其他部门的人讲PPT。我就一直拖着,然后等截止日期的时候,我就找了人事提了离职,然后他来问我什么原因离职,我也不说。在谈话的过程中发现,总监对部门主管意见也是很大的,只是因为他跟着公司五年之久了,也就没有说什么。一直是一起去吃饭的,但是我发现老是多一个人,我刚好找借口去接触其他部门的人,不然真的非常的闭塞。很急的一个项目,我直接加班一周,还好老子干出来了,不然真的对自己的自信打击非常大。身为打工人很多时候是没有选择的,除非自身素质非常好,有讲条件的资本,否则都是别人的鱼肉。原创 2024-02-11 14:14:13 · 564 阅读 · 0 评论 -
编程水平是怎么训练出来的?
刚开始,我学编程的动力,来自于对hacker的兴趣,觉得很酷,不学编程,似乎成不了真正的hacker...花点钱,找个数学厉害的人,给他需求,让他把这个换算成加减乘除的公式,你再用编程语言去实现,不就完了?可惜..我入职的时候,大佬已经离职了,不然非得看下,到底什么形状的大脑,才能写出这么牛逼的程序。当经历的多了,记得要把知识活用,多举一反三,靠死记硬背,换道数学题,又懵逼了。工程师的任务,就是把道数学题,找一个正确的公式,用编程语言,把题解出来。可惜,真正的天赋型选手,真的非常少,我不是,你可能也不是。原创 2024-01-16 16:19:58 · 392 阅读 · 0 评论 -
嵌入式应用和驱动,哪个更难!
暂不说20年前,就是10年前搞嵌入式开发,大部分中小公司对嵌入式开发的岗位要求都不算高,你懂一些基本原理,哪怕没有独立开发过项目,都能找到一个开发(研发)的工作。如果你还在维护10年的老代码,可能会看到网上传言的“屎山代码”,那就是因为当时的要求不高,导致屎山代码遗留至今(当然,10年也有很多优秀的代码)。如果只考虑自己那一层,写出来的代码,多半是不合格的,你看看那些互相甩锅的工程师,可能就是这么导致的。如今搞嵌入式,要求更高了,两个方向你都需要掌握,但是,你需要侧重一方,其他作为“选修课”,及格就行。原创 2023-12-09 15:17:52 · 516 阅读 · 0 评论 -
嵌入式软件开发要注意这七中错误事项
是啊,能不急吗,排到后边,还需要解决代码冲突的问题。这句话在某种程度上是对的,但是你从事这项工作的年限,并不一定代表你获得了相同年限的工作经验,正如一句话所说:“我们以为我们是工作了十年,其实却只有一年的工作经验,只不过又重复用了九年”。其实不只是新人——一些有几年工作经验的开发人员也会表现出这种傲慢,一部分原因是其满足于个人获得的专业成就,另一部分可能的原因是其缺乏和优秀的人共事的机会,有点坐井观天。缺乏经验的开发人员不接受任何建设性的建议,甚至代码评审中的评论,他都会认为是对他个人的一种攻击。原创 2023-12-02 18:25:26 · 427 阅读 · 0 评论 -
嵌入式技术面试基本规则
而且,从心里角度来说,人们一般只会集中精力关注一个点,如果你的期望薪水高一点,那么他在考虑是否录取你时考虑的就是薪水问题,或者就是考虑你的技术问题,但是工资是老板发,技术是自己使用,所以从某方面来说如果有几个人与你技术差不多,但是从潜意识里,就会因为你的期望工资高而觉得你的技术好一点,最后录取你,这就像假设我们要求买一件羽绒衣服,同时看上了两件,一件800元,另一件1000元,我相信大多数人都会认为1000元这件质量好点,如果再加上买这件衣服的钱不是你出,那么你会选择那件呢?原创 2023-10-03 17:49:38 · 289 阅读 · 0 评论 -
北大硕士7年嵌入式学习经验分享
学习本专业知识(EE专业),学习嵌入式软件开发需要的计算机课程(汇编原理,计算机组成原理,操作系统,C语言等),学习嵌入式项目(来源于实验室项目,自己想到的项目以及各种比赛)。时不与我,明明选择了做底层的导师,结果导师转做深度学习了,还好是做终端+AI相关的方向,也不算完全偏离嵌入式,这让人多少有点欣慰(毕竟我还是放不下嵌入式的)。至于未来的风口是什么,就要靠我们自己去探索了。要弄明白你编译各个阶段产生的各个文件是什么,什么是分散加载,什么是重定位,什么是代码段,什么是数据段,等等。原创 2023-10-03 16:53:00 · 1669 阅读 · 0 评论 -
20道嵌入式经典面试题(附答案)
但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也跟着死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。而线程是共享进程中的数据,使用相同的地址空间,因此,CPU切换一个线程的花费远比进程小很多,同时创建一个线程的开销也比进程小很多。因为在 嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。原创 2023-06-11 17:32:38 · 1006 阅读 · 0 评论 -
2023 年嵌入式世界的3 大趋势分析
Jacob Beningo是一名嵌入式软件顾问,专门研究基于微控制器的实时系统。他通过大量文章、博客和网络研讨会积极推广软件最佳实践,主题包括软件架构设计、嵌入式 DevOps 和实施技术。Jacob 在该领域拥有 20 年的经验,拥有三个学位,包括密歇根大学的工程硕士学位。每年,都有无数的会议涵盖电子、嵌入式系统和软件。经理、工程师、开发人员等都有机会了解行业、网络中正在发生的事情,并看到所有即将推出的很酷的新东西,我的意思是工具。我最喜欢的三个会议是嵌入式世界大会,嵌入式在线会议和传感器融合会议。今年3原创 2023-04-11 20:18:40 · 2770 阅读 · 1 评论 -
为什么努力学模电依然学不好的原因?
模电想必是近来小伙伴们很头疼的一门课程了。小编结合自己的感受用一句话形容一下:"老师说第一遍不懂,第二遍还是不懂,第三遍还是不懂。原创 2023-03-29 20:59:35 · 530 阅读 · 0 评论 -
嵌入式软件开发学习路线精心总结
之所以总结这篇嵌入式软件开发学习路线图,是因为工作中好多的新人朋友以及一些粉丝小伙伴经常咨询我开始是如何学习嵌入式软件的。而且好多刚开始学习的小伙伴也不知道从何学习,不知道学习哪些知识。想让我给他们分享一下我的学习经历。所以就花费些了精力做了总结。这份学习路线图可能不是最全最好的,但是可以说涵盖了绝大部分的知识,学习好了面对工作还是不成问题的。还是那句话,难免有疏漏,欢迎交流指正。原创 2023-03-16 23:18:04 · 1818 阅读 · 1 评论 -
嵌入式面试题目汇总之经典
因为tcp传输的数据满足3大条件,不丢失,不重复,按顺序到达。原创 2023-01-03 20:33:24 · 3362 阅读 · 3 评论 -
认知篇----学习Linux的基本方法与路线
2、比如想深入钻研内核的内存管理时,它有页表映射(你需要阅读ARM架构的手册)、SLAB分配器、vmalloc/malloc实现、mmap实现、缺页中断、父进程子进程之间的页面管理等等,内容非常多。7、入门之后,如果你想从事内核开发、驱动开发,那么可以去钻研几个驱动程序(输入系统、I2C总线、SPI总线等),掌握若干个大型驱动程序后,你对内核的套路就有所了解了,再去研究其他部分(比如进程管理、文件系统)时你会发现套路是如此通用。在Linux中,“一切皆文件”,要访问某个硬件,也是要打开文件、读写文件。...原创 2022-07-22 18:02:42 · 145 阅读 · 0 评论 -
认知篇----2022高考志愿该如何填报
给高考填报志愿的同学一点建议原创 2022-06-26 16:43:44 · 297 阅读 · 0 评论 -
认知篇----C语言中面向对象的核心思想
一、前言在嵌入式开发中,C/C++语言是使用最普及的,在C++11版本之前,它们的语法是比较相似的,只不过C++提供了面向对象的编程方式。虽然C++语言是从C语言发展而来的,但是今天的C++已经不是当年的C语言的扩展了,从2011版本开始,更像是一门全新的语言。那么没有想过,当初为什么要扩展出C++?C语言有什么样的缺点导致C++的产生?C++在这几个问题上的解决的确很好,但是随着语言标准的逐步扩充,C++语言的学习难度也逐渐加大。没有开发过几个项目,都不好意思说自己学会了C+..原创 2022-04-19 07:26:02 · 608 阅读 · 0 评论 -
嵌入式优秀资源网址整理
## 嵌入式相关开源项目、库、资料------持续更新中在产品开发的过程,难免会遇到各种各样的问题,为了方便大家快速查找。学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言、单片机、开源项目、物联网、操作系统、Linux等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资料库。有好的嵌入式相关资源的朋友欢迎做贡献,利人利己。## 1、OS[鸿蒙OS](https://openharmony.gitee.com/openharmony): 一款面向全原创 2022-04-08 11:35:42 · 3677 阅读 · 5 评论 -
C++语言中多文件组合方式之经典
1、解决问题:C++多个文件如何进行组合编译以前大家经常操作,基本上所有的代码都是写到一个源文件中,例如://main.cpp#include <iostream>using namespace std;class Student{public: char *name; int age; float score; void say(){ cout<<name<<"的年龄是"<<age&l原创 2022-03-15 22:13:41 · 2295 阅读 · 0 评论 -
C++中继承与虚继承本质之优秀
1、C++类继承作用域本质类其实也是一种作用域,每个类都会定义自己的作用域,在这个作用域内我们再定义类的成员。当存在继承关系时,派生类的作用域嵌套在基类的作用域之内,如果一个名字在派生类的作用域内无法找到,编译器会继续到外层的基类作用域中查找该名字的定义。 换句话说,作用域能够彼此包含,被包含(或者说被嵌套)的作用域称为内层作用域(inner scope),包含着别的作用域的作用域称为外层作用域(outer scope)。一旦在外层作用域中声明(或者定义)了某个名字,那么它所嵌套着的所有...原创 2022-03-13 21:03:11 · 170 阅读 · 0 评论 -
C++语言中类与引用感悟之经典
1、硬件电路连接情况2、原创 2022-03-12 21:53:48 · 144 阅读 · 0 评论 -
C语言与C++之常见问题分享
1 变量的声明和定义有什么区别 变 量 的 定 义 为 变 量 分 配 地 址 和 存 储 空 间 , 变 量 的 声 明 不 分 配 地 址 。 一 个 变 量 可 以 在 多 个 地 方 声 明 , 但 是 只 在 一 个 地 方 定 义 。 加 入 e x t e r n 修 饰 的 是 变 量 的 声 明 , 说 明 此 变 量 将 在 文 件 以 外 或 在 文 件 后 面 部 分 定 义 。 说 明 : 很 多 时 候 一 个 变 量 , 只 是 声 明 不 分 配 内 存 空 间 ,原创 2022-03-01 12:21:21 · 581 阅读 · 0 评论 -
认知篇----提高学习效率,珍惜大学时光
1、大学是人生最好的学习时光,大家务必珍惜。在学校最好能培养出自己的一技之长,最起码有个爱好也可以,不要浪费人生最宝贵的时光。 这里说的一技之长指的是,编程能力、硬件设计、机械设计、仿真模拟等;或者培养自己的兴趣爱好,例如乒乓球、羽毛球、篮球、画画等。自己的一技之长最好和本省的专业结合起来。拥有一技之长或者兴趣爱好将让我们受用一生:一技之长让我们找到优质工作,获得更多回报,并且拥有更多选择权和休息时间; 兴趣爱好让我们结交朋友,在工作之外找到更多生活乐趣,成为一个有趣的灵魂。大学是...原创 2022-02-09 22:00:00 · 298 阅读 · 0 评论 -
鸿蒙系统分享----鸿蒙系统硬件驱动开发
第一个:鸿蒙系统驱动开发的过程中,首先要清楚驱动框架是如何布局的,鸿蒙系统內部为开发者提供了驱动框架能力,包括驱动加载、驱动服务管理和驱动消息机制。这样做也是为了,构建一个驱动架构平台,为驱动开发者提供更加精准、高效的开发环境,力求做到一次开发,多系统部署。第二个:驱动模型HDF框架以组件化的驱动模型作为核心设计思想,为开发者提供更精细化的驱动管理,让驱动开发和部署更加规范。第三个:硬件代码实现驱动添加:驱动配置分为两个部分——HDF框架定义的驱动设备描述和驱动的私有配置信息HC原创 2022-02-02 21:39:40 · 4523 阅读 · 0 评论 -
扩展知识点-----数据封装的使用方法
定义上讲:数据封装是一种把数据和操作数据的函数绑定在一起的机制,数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。#include <iostream>#include <string>using namespace std;class Dog{public: string name; Dog(int i = 0) { total = i; } ...原创 2021-12-22 20:41:13 · 655 阅读 · 0 评论 -
扩展知识---中断程序的实现
1、在学习M4的时候,知道了中断的实现方法,能够使用寄存器的方式和库函数的方式进行设计。2、如何开发中没有使用到的M4芯片呢?或者有其他芯片公司的库能否会使用?接下来,从一个实例中,体会利用SDK实现中断开发。常用的API函数有:GIC_Init 初始化GIC ; GIC_Enable 表示使能指定的外设中断3、不同点:这种实现中断服务函数的方式,是以注册的方式,调用中断服务函数。其它功能配置的方式和M4一样。//中断处理函数的形式typedef void (*system_irq_原创 2021-09-29 20:28:57 · 343 阅读 · 0 评论 -
扩展知识点---利用应用程序控制输入设备进行数据显示
第一:什么是输入设备?解答:常见的输入设备为鼠标、键盘、遥控器、电脑、画板等,用户利用输入设备与系统进程交互。第二:Linux系统为了统一设备,实现了兼容所有的输入设备框架,这个框架就是input子系统。驱动开发人员基于input子系统开发输入设备驱动程序,input子系统可以屏蔽硬件的差异,向应用提供统一的接口。第三:输入设备读取数据的流程是什么?1、应用程序打开/dev/input/event0设备文件;2、应用程序发起读操作(譬如调用read),如果没有数据可读则会进入休眠(阻塞I原创 2021-09-25 22:04:22 · 181 阅读 · 0 评论 -
串口通信中关键知识点4
串口基本配置的寄存器,配置过程总结为:1、串口时钟使能。这里的串口1设置是APB2ENR寄存器的第4位。2、串口波特率设置。每个串口都有一个自己独立的波特 率寄存器 USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的。3、串口控制。STM32F429 的每个串口都有 3 个控制寄存器 USART_CR1~3,串口的很多 配置都是通过这 3 个寄存器来设置的。这里我们只要用到 USART_CR1 就可以实现我们的功能。4、数据发送与接收。STM32F429 的发送...原创 2021-09-22 21:25:34 · 2075 阅读 · 0 评论 -
江山代有才人出,各领风骚数百年
最近华为的天才少年结果公布,高达年薪201万。印证了那句,一份耕耘,一份收获。 让我感受最深的就是天才少年定制的成长计划,分享给大家可以看下: 任务量满满,其实,看到这里让我吃惊的并不是具体的内容,而是他是如何做到将每个任务细致的罗列出来。 如果才能做到,在短时间处理大量的事情,可以告诉你秘诀在于:多任务并行。 总结:1、对每一个人来说,当你能清楚地把自己要完成的任务,完整的写出来得时候,你已经完成了一半。 ...原创 2021-09-19 21:14:57 · 177 阅读 · 0 评论 -
阻塞I/O与非阻塞I/O之间的关系--知识点3
第一:利用阻塞式I/O和非阻塞式I/O对文件进行读写操作的时候,在调用open()函数的时候,打开文件时,为参数flags指定O_NONBLOCK标志,open()调用成功后,后续I/O操作以非阻塞的方式进行操作。如果没有指定O_NONBLOCK标志,默认是阻塞方式I/O进行操作。第二:本次实验练习,以鼠标为例,使用两种I/O方式进行读写,来进行对比,鼠标是一种输入设备,对应的设备文件在/dev/input/目录下。第三:通常情况下是mouseX(X表示序号0、1、2),但是也不一定,也有可能是e.原创 2021-09-18 21:20:51 · 150 阅读 · 0 评论 -
标准IO函数---扩展练习知识点2
getchar()函数用于从标准输入设备中读取一个字符(一个无符号字符),函数原型为:#include <stdio.h> int getchar(void);返回值:该函数以无符号char强制转换为int的形式返回读取的字符,错误是返回EOF练习1:获取一个字符功能实现#include <stdio.h>#include <stdlib.h>int main(void){ int ch; ch=ge...原创 2021-09-17 21:47:45 · 163 阅读 · 0 评论 -
库函数与系统调用之间的区别--扩展知识点1
何为系统调用,系统调用是内核直接向应用层提供的应用编程接口,譬如 open、write、 read、close 等,关于这些系统调用后面会给大家进行详细介绍。编写应用程序除了使用系统调用之外,我们 还可以使用库函数,本小节来聊一聊库函数。 库函数也就是 C 语言库函数,C 语言库是应用层使用的一套函数库,在 Linux 下,通常以动态(.so) 库文件的形式提供,存放在根文件系统/lib 目录下,C 语言库函数构建于系统调用之上,也就是说库函数其 实是由系统调用封装而来的,当然也不能完全这么说,原因在于有些原创 2021-09-16 21:24:25 · 397 阅读 · 3 评论 -
Zigbee代码调试问题,hex乱问题?
解决办法:在Linker-->Extra Output -->Output Format 设置为inter-extended原创 2021-08-31 23:13:49 · 198 阅读 · 0 评论 -
Zigbee协议栈编译不通过问题:FatalError[e72]: Segment ZIGNV_ _ADDRESS_ _SPACE must bedefined in asegment defini
在IAR8.1中,基于CC2530F256芯片对Z-STACK进行bui Ider,如果对IAR环境设置不当会出现: FatalError[e72]: Segment ZIGNV_ _ADDRESS_ _SPACE must bedefined in asegment definition option (-Z, -b or -P)解决方法如下:1、在General options设置:选Target,在Deviceinformation下的Device选C: \Program Files \I原创 2021-08-31 10:27:12 · 1535 阅读 · 0 评论 -
Linux中RK3399中挂在U盘的操作具体方法
使用命令的挂载方式:mount /dev/sda1 /mnt/udisk/原创 2021-08-26 22:23:05 · 549 阅读 · 0 评论 -
鸿蒙介绍
1、鸿蒙操作系统HarmonyOS介绍 当前移动互联网创新,还是以单一设备为主,单设备的操作体验已经不能满足人们在不同场景下的需求,而HarmonyOS是为万物互联而生。HarmonyOS是一款"面向未来"的操作系统,一款面向全场景的分布式操作系统。其中,IoT硬件构成HiLink生态,其中包括移动办公,智能家居,健康生活。...原创 2021-08-08 22:27:15 · 237 阅读 · 0 评论 -
实现进程间相互通信操作流程
龙大神随笔:经典操作:ABC三个进程,实现三个进程之间任一通信。//进程A#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <stdio.h>#include <string.h>#include <unistd.h>#include <signal.h>struct msgbuf{long mtype;cha原创 2021-05-20 10:31:28 · 438 阅读 · 1 评论 -
任务同步管理的方法
小结:可用于任务与任务或中断与任务之间的同步。最常见的,在执行中断服务函数的时候可以通过向任务发送信号量来通知任务它所期待的事件发生了,当退出中断服务函数以后在任务调度器的调度下同步的任务就会执行。如果使用外部中断做一个按键功能,你可以在外部中断中释放信号量,在按键任务里面等待信号量,获得信号量后,处理按键。一旦触发按键进入外部中断释放信号量,按键任务会因为获得信号量而得到运行。一旦触发按键进入外部中断释放信号量,按键任务会因为获得信号量而得到运行。...原创 2021-05-19 15:31:21 · 478 阅读 · 2 评论 -
MQTT中客户端与服务器随笔
客户端Client作用:使用MQTT的程序和设备,主要是为了实现客户端通过网络连接到服务器,能够完成:第一个:发布应用消息给其他相关的客户端。第二个:订阅以请求接受相关的应用消息。第三个:取消订阅以移除接受应用消息的请求。第四个:从服务器端连接断开服务端Server一个程序或设备,作为发送消息的客户端和请求订阅的客户端之间的中介。服务端第一个:接受来自客户端的网络连接。第二个:接受客户端发布的应用消息。第三个:处理客户端的订阅和取消订阅请求。第四个:转发应用消息给符合条件的已订阅客户端原创 2021-04-02 09:55:47 · 224 阅读 · 0 评论 -
Linux系统大神随笔
名字:漓兔大神 QQ:1414640713/*车站售票系统*/#include <pthread.h>#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <signal.h>#include <sys/types.h>//车票数量int ticket1原创 2021-03-29 10:24:18 · 155 阅读 · 0 评论