优秀工程师和一般工程师的差别

大家好,我是记得诚。1、你是否爱你的原理图,每一个字符放的位置,都认真的放置。没有干涉,整齐清洁。原理图是你的孩子,请爱护好你的孩子。2、上拉就要有一个上拉的样子。该有交叉点的地方就应该有交叉点,没有交叉点的地方,就没有多余的东西。总线的连接,要熟悉接口的特性,不能干出“并联SPI接口的事情”。复用管脚,适当增加文字说明,便于检视和读图。3、认真对待每一个P...
2024-07-11 阅读全文 →

DC-DC PCB layout建议

大家好,我是记得诚。在家躺了一个礼拜,“阳”康了,小伙伴怎么样了?今天继续给大家分享有用的内容。在DC-DC芯片的应用设计中,PCB布板是否合理对于芯片能否表现出其最优性能有着至关重要的影响。不合理的PCB布板会造成芯片性能变差如线性度下降(包括输入线性度以及输出线性度)、带载能力下降、工作不稳定、EMI辐射增加、输出噪声增加等,更严重的可能会直接造成芯片损...
2024-07-11 阅读全文 →

所有的事情都会趋于平淡

大家好,我是记得诚。刚下班到家,泡了一杯燕麦片,然后开始写这篇文章。刚开始做自媒体时,会因为一个点赞、一个涨粉、一个留言而开心兴奋。也会因为一条不那么善意的留言,而郁闷,而焦虑。但这些都会趋于平淡,我清楚点赞是你们对我的肯定。那些恶意的留言,我也置之不理,没有必要回复,说的难听的,有时候我会直接拉黑。大家都是成年人,何必做一个巨婴,网络也不是法外之地。刚毕业...
2024-07-11 阅读全文 →

41岁了,该何去何从?

大家好,我是记得诚。很多新人很迷茫,我想说的是:人人都会迷茫,下面这个41岁的老大哥也迷茫了,很多时候选择真的是一个难题。下面是对话,大家可以看看。问: 您好,不好意思打扰了!在记得诚-电子硬件群已有一段时间了,经常看群里讨论问题挺热闹的,自己也偶尔参与讨论或抛出问题! 目前遇到个困惑,如果你有时间的话,想向你请教下! 答:嗯,...
2024-07-11 阅读全文 →

什么是恒流二极管?

01 恒流二极管  二极管是一种有极性的两端电子元件,它在单个方向上传导电流并阻止电流在另一个方向上流动,因为在一个方向上,它的电阻理想地为零,而在另一个方向上它是无限的。这些组件包括两个端子,一个阳极和一个阴极。根据 PN 结二极管、齐纳二极管、恒流二极管、肖特基二极管、发光二极管等要求,可以在各种电气和电子项目中使用不同种类的二极管。本文下面讨论了其中一...
2024-07-11 阅读全文 →

C语言的柔性数组,可能你听过,但未实际用过

文章目录语法形式特性如何使用特性验证我在项目中的使用总结点击下方阅读原文可访问文中超链接引用外网的一段内容(原文链接):Flexible Array Member(FAM) is a feature introduced in the C99 standard of the C programming language.For the structures ...
2024-06-01 阅读全文 →

linux驱动开发(5、使用leds驱动框架点亮led灯)

文章目录使用驱动框架的优势leds驱动框架相关常用接口led_classdev_register函数led_classdev_unregister函数在驱动中的使用在用户空间操作led总结点击下方阅读原文可访问文中超链接在前面已经用创建通用字符设备的方式完成了led的操作,本次总结记录的是使用linux内核提供的leds驱动框架来点亮led灯,不同于前面应用...
2024-06-01 阅读全文 →

linux驱动开发(4、操作硬件)

文章目录常用接口request_mem_region函数release_mem_region函数ioremap函数iounmap函数在驱动中的使用点击下方阅读原文可访问文中超链接对于linux中的驱动来说,在操作硬件这个部分其实和在单片机中操作硬件几乎是一样的,不同的只是在linux中使用的是虚拟地址(如果开启了MMU),而在单片机中都是直接操作物理地址;在...
2024-06-01 阅读全文 →

linux驱动开发(3、自动创建设备节点)

文章目录udev与mdev配置mdev热插拔常用接口class_create函数class_destroy函数device_create函数device_destroy函数驱动中的修改点击下方阅读原文可访问文中超链接在之前的内容中,执行应用程序之前,都要手动使用mknod命令来创建设备节点,这种方法非常的不方便,实际上现在的内核已经提供了一些接口,加上一个用...
2024-06-01 阅读全文 →

linux驱动开发(2、第一个字符设备驱动)

文章目录设备号常用接口设备号申请/释放register_chrdev_region函数alloc_chrdev_region函数unregister_chrdev_region函数其它宏定义字符设备的定义cdev_alloc函数字符设备的绑定cdev_init函数字符设备注册/注销cdev_add函数cdev_del函数file_operations结构实现...
2024-06-01 阅读全文 →

threadx netx创建http客户端

文章目录需求搭建环境编写http客户端代码注意点测试结果点击下方阅读原文可访问文中超链接需求前面已经移植好了协议栈netx,也完成了UDP通信的测试,说明移植方面应该是没有其它什么问题了。准备开展后续的工作,因为需求的原因,我需要将板子作为http客户端来请求web服务器的数据,然后处理及显示。搭建环境开始时我打算用以前学习的goahead来搭建web服务器...
2024-06-01 阅读全文 →

笔记:linux驱动开发(1、了解内核模块)

文章目录一个最简单的驱动模块驱动编译的Makefile相关命令错误解决:点击下方阅读原文可访问文中超链接一个最简单的驱动模块一个精简的驱动模块可以只有不到10行的内容,如下是一个简单的测试程序。#include <linux/init.h>#include <linux/module.h>#define DEBUG(fmt, ...)...
2024-06-01 阅读全文 →

stm32移植threadx rtos

文章目录写在前面准备移植开始移植验证最后一点点击下方阅读原文可访问文中超链接写在前面ThreadX 是由 Express Logic 公司开发的实时操作系统。目前已被微软收购,并且前不久开源了,当开源的时候很多论坛都第一时间发布了相关文章,可见其影响力还是很不错的,刚好最近有一个新项目,需要用到网络协议栈,而threadx有自己的网络协议栈组件,之前打算用f...
2024-06-01 阅读全文 →

linux系统移植

文章目录内核的下载生成配置文件编译解决错误启动内核配置u-boot的环境变量编译内核并启动注意点网络支持SD/MMC支持设备树的其它修改点击下方阅读原文可访问文中超链接内核的下载还是和u-boot移植的步骤差不多,首先是要选择一个版本,然后下载镜像,确保能够正确编译成功。对于版本的选择,因为我是学习用,所以选择较新的版本,我看了一下目前版本比较新且是稳定版的...
2024-06-01 阅读全文 →

u-boot2020.04移植(小记:重定位前后保留的堆内存是如何被malloc的)

文章目录重定位前的堆内存池那当我们使用malloc时,它是如何给我们分配内存的呢?以malloc为例再来看下重定位后结论点击下方阅读原文可访问文中超链接重定位前的堆内存池首先看一下重定位前,在重定位前也就是第一阶段,u-boot会保留一片内存用于堆,也就是gd->malloc_base这篇区域,其大小为0x400,具体见下面的内存图:图1那当我们使用m...
2024-06-01 阅读全文 →

u-boot2020.04移植(支持网络)

前面基于goni这块板子移植的u-boot并不支持网络,但是我的开发板上面是支持网络的,所以这里把网络支持添加上。先看一下硬件是怎样接的:DM9000属于类内存总线的设备,被映射到s5pv210的SROM区域,从图上可以知道它接在SROM的bank1,CMD接在ADDR2。从前面的过程分析我们知道,网络相关的初始化在board_init_r阶段,有两个相关的...
2024-06-01 阅读全文 →

u-boot2020.04移植(eMMC/SD调试)

文章目录前奏流程驱动匹配分析需要的属性调试补充结果前奏随着u-boot版本的变迁,u-boot的功能也越来越多越来越强大,在较新的u-boot中已经支持很多不同类型的文件系统,告别了以前需要移植者自己手动规划eMMC/SD等镜像存储介质的分区信息(并非真正的磁盘分区,只是一个标号而已),可直接使用相关的命令就可以读取出各种文件系统类型的存储介质中的文件,使烧...
2024-05-31 阅读全文 →

u-boot2020.04移植(总结)

我所理解的u-boot移植可以分为以下几个部分:1、内核级的配置与初始化这个主要就是在start.S文件里面那些汇编代码,这部分呢我觉得基本上没有改的必要,除非你很熟悉内核相关的东西。2、SOC级别的配置与初始化这部分的内容是比较多的,而且可以说贯穿整个u-boot,但基本上必要的都集中在lowlevel_init,其它的就取决于你是否要在u-boot阶段使...
2024-05-31 阅读全文 →

u-boot2020.04移植(6、board_init_r)

点击下方阅读原文可访问文中超链接board_init_r和board_init_f差不多,都是执行一个循环,下面看下board_init_r干了些什么:/*common/board_r.c*/static init_fnc_t init_sequence_r[] = { initr_trace, initr_reloc, /* TODO: could x86...
2024-05-31 阅读全文 →

u-boot2020.04移植(5、u-boot重定位)

点击下方阅读原文可访问文中超链接如果想了解重定位是怎么一回事,可以参考这位老哥的博客:https://blog.csdn.net/skyflying2012/article/details/37660265第一阶段结束,便开始u-boot的重定位(这里有点小疑惑,在前面将u-boot从SD卡拷贝到DDR中时,我就是拷贝到链接地址的,也就是说那个时候u-boo...
2024-05-31 阅读全文 →

u-boot2020.04移植(4、board_init_f)

点击下方阅读原文可访问文中超链接接着上篇,执行了ldr pc, =_main后,就到arch/arm/lib/crt0.S文件了,本篇基本全是源码分析,是一个很枯燥的过程,如果你只想看修改的部分可直接搜索“修改”两个字,就能直接找到修改的地方,这个阶段只修改了三个地方:ENTRY(_main)/* * Set up initial C runtime env...
2024-05-31 阅读全文 →

u-boot2020.04移植(3、lowlevel_init.S)

点击下方阅读原文可访问文中超链接现在开始就进入板级相关的初始化了,跳转到board/samsung/goni/lowlevel_init.S文件,注意这里lowlevel_init搜索出来在arch/arm/cpu/armv7/lowlevel_init.S文件里面也有,而且这个文件还被编译了,但仔细看一下就会发现,这个文件里面的lowlevel_init被...
2024-05-31 阅读全文 →

u-boot2020.04移植(2、从链接脚本开始)

点击下方阅读原文可访问文中超链接首先分析一下u-boot的链接脚本,这样就能够知道u-boot本身的大体组成及分布,如果想更详细的了解,可以查看生成的u-boot.map文件,这个文件就能看出u-boot各个段的排布。在上一篇文章中,已经完成了u-boot的编译,在u-boot根目录下可以看到生成了一个u-boot.lds文件,这个文件就是u-boot的链接...
2024-05-31 阅读全文 →

u-boot2020.04移植(1、u-boot的编译)

点击文章下方阅读原文可访问文中超链接最近公司项目用到了xilinx的zynq7000 soc,开发方式有所不同,驱动的数据都是通过设备树来提供,以前没接触过,所以想系统的学习一下相关的内容,但是手头只有一块三星的s5pv210开发板,使用的u-boot和linux系统不支持设备树,只好自己移植,以此记录一下移植过程,加深理解与记忆,如果你也刚好有需要,欢迎参...
2024-05-31 阅读全文 →

如何使用C的volatile关键字

首先声明本文译自国外网站的一篇文章,原文链接如下:https://barrgroup.com/embedded-systems/how-to/c-volatile-keyword建议有条件的直接阅读英文原版。可能读了这篇文章后,你会有所怀疑,因为你平时可能遇到过下面出现的情况,但是你并没有添加volatile关键字,程序任然正常的运行,个人觉得可能有以下的原...
2024-05-31 阅读全文 →

C++20最重要的三个新特性

C++之父都说过,C++20是C++语言的一次重大变革,引入了大量的新特性。这其中个人认为最重要新特性是这三个:ModulesCoroutinesConceptsModules直接看代码:// helloworld.ixxexport module helloworld; // module declarationimport <iostream&gt...
2024-02-15 阅读全文 →

从C语言实现面向对象探究class的秘密

这里我想主要介绍下在C语言中是如何实现的面向对象。知道了C语言实现面向对象的方式,我们再联想下,C++中的class的运行原理是什么?首先我们来写一段C++的class,拿一个Student类来举例子:在头文件中,我定义一个Student类:#pragma onceclass Student {public:  void SetNumbe...
2024-02-15 阅读全文 →

一场开发者的盛宴,你怎么能缺席?

在人工智能日益融合、异构及多架构的编程时代,如何进行跨架构的高性能与加速计算?属于开发者头脑风暴的时刻已经来临,通过技术创新将带来更高的开发能力。如果您是C++ 或 GPU 程序员、AI 开发人员、研究员或数据科学家,如果您对跨架构的高性能与加速计算感兴趣,那么您一定会从这个活动中有所收获。Intel将于10月19日北京时间9:30 – 17:30举行one...
2024-02-15 阅读全文 →

相比于C++23,我更期待C++26

十一之前我去参加了C++全球开发者大会,今天才有时间和大家分享下。听了C++之父的分享,C++之父聊了下他对C++23和C++26新标准的展望,如图:可以看到C++23的更新主要是提供协程库和模块标准库,都是在完善C++20引入的特性,其实没什么新的东西。然而说会在C++23引入的network和executors,也终于不出意外的延期到了C++26。可惜C...
2024-02-15 阅读全文 →

C语言如何实现面向对象

这里主要介绍下在C语言中是如何实现的面向对象。知道了C语言实现面向对象的方式,再联想下,C++中的class的运行原理是什么?首先看一段C++的class,拿一个Student类来举例子:在头文件中,我定义一个Student类:#pragma onceclass Student {public:  void SetNumber(int n...
2024-02-15 阅读全文 →