自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 资源 (1)
  • 收藏
  • 关注

原创 无中断向量重定位单片机中实现IAP和APP中断的方法

但是面对越来越复杂的应用环境,越来越多的应用要求,一次性调试好代码并下载运行的情况已经变得越来越难,而且随着代码量的增多,隐藏的。是相互独立和分开的两部分,它的功能是在产品全生命周期中随时根据需要对应用程序部分代码进行擦除和烧写,目的是为了在产品发布后可以方便地通过预留的通信接口对产品中的功能进行更新升级。程序都写成一个跳转程序,根据当前所处的位置来取得不同的跳转地址,这在单片机的启动文件中可以通过汇编语言来实现。显示的是未修改前在启动文件中的代码段,它的作用是当发生该中断时,使程序跳转到。

2024-07-26 15:06:12 394

原创 物联网中常用的ota升级方案

其设计上采用BOOT主要用于下载功能,当程序运行APP时,需要升级时,会首先将config的标志位置位,然后跳转到BOOT中进行升级,将代码永远放到APP_BAK中,升级完成后,可以校验通过后,将APP_BAK的代码拷贝到APP中,然后再运行APP区代码。这样可以解决一个问题,当模块升级后连接不了网络的问题。所以可以这样理解,APP0作为运行分区,APP1作为升级分区,当升级分区的标志置位时,将升级分区的代码放到运行分区中执行。其升级的方案是,每个APP的尾部都会记录如下的相关信息,可以作为跳转的标志。

2024-07-26 14:34:53 517

原创 怎样将Beyond Compare添加到系统右键菜单

Beyond Compare 是个很好用的文件对比工具,尤其是看别人的代码和自己的代码有什么不同的时候,只需使用Beyond Compare对比一下,即可知道差异在哪里。Beyond compare已经升级到4了,如果安装的时候没有选择集成到资源管理器的话,在资源管理器中右键就不会出现非常好用的右键快捷菜单,选项菜单里也没有相关的选项,所以每次只有先运行它然后再选择要对比的文件。这样着实麻烦,下面小编就来告诉大家将添加到系统右键菜单的秘诀。

2024-05-02 18:07:19 3241

原创 【物联网】固件升级协议

物联网开发平台 固件升级协议-开发者指南-文档中心-腾讯云

2024-03-25 22:31:20 175 2

原创 如何清空远程Git仓库中的所有文件和文件夹,并将其恢复为初始状态?

如何将一个已经存在的远程Git仓库恢复到初始状态?即清空所有文件和文件夹,使其完全空白。这可能是出于某些原因,比如想要重新开始仓库,或者想要复制一个干净的仓库。注意:请谨慎执行以上命令,因为它们会完全清空远程Git仓库中的所有文件和文件夹,不可逆转!现在仓库应该是空的了。刷新远程仓库页面,可以看到所有文件和文件夹已被删除。打开终端或命令行,连接到Git仓库。

2024-02-26 14:50:42 882

原创 如何关闭C源代码中的指定警告?

忽略某些警告的问题,也许可以提供帮助。

2024-01-04 19:13:17 1030

原创 现代架构师需要的硬实力和软技能

架构师需要具备优秀的架构设计能力,能够根据项目需求和技术特点,设计出合理、可靠、可扩展的系统架构。只有通过良好的团队合作,才能够实现项目的成功。架构师需要具备优秀的沟通能力,能够与开发团队、客户和业务人员进行有效的沟通。他们需要能够与客户和业务人员进行有效的沟通,理解他们的需求和问题,并提供合适的解决方案。架构师需要具备一定的项目管理能力,能够协调开发团队,制定开发计划和进度,确保项目按时、按质量完成。架构师是现代软件开发领域中的重要职位之一,需要具备一定的硬实力和软技能,才能够在项目中发挥出最大的作用。

2023-12-31 16:16:08 527

原创 光伏逆变器MPPT的作用、原理及算法

又有一片树荫遮挡了部分组件。举个例子,假设MPPT还没开始跟踪,这时组件输出电压是500V,然后MPPT开始跟踪之后,就开始通过内部的电路结构调节回路上的电阻,以改变组件输出电压,同时改变输出电流,一直到输出功率最大(假设是550V最大),此后就不断得跟踪,这样一来也就是说在太阳辐射不变的情况下,组件在550V的输出电压情况,输出功率会比500V时要高,这就是MPPT的作用。因此,只要调节DC-DC转换电路的等效电阻使它始终等于光伏电池的内阻,就可以实现光伏电池的最大输出,也就实现了光伏电池的MPPT。

2023-12-28 17:58:26 8277

原创 “Tab键”强制转换为“空格键”

原因是不同编辑器对“Tab键”解释存在差异,有的编辑器解释为2个占位符,而其余的编辑器解释为4个占位符。如果代码中存在“Tab键”,会导致在编辑器A中对齐的代码,用编辑器B打开会显示为非对齐状态,影响代码阅读和代码整洁。下面介绍SourceInsight、VsCode、Notepad++三种编辑器的设置方法。,代码一般建议不要使用。这样我们按下键盘上的。可以在编辑器中设置将。时,实际输入的文本是。

2023-12-26 23:12:57 2954

原创 Linux shell查看各文件夹容量大小

Linux 操作系统是一种免费的操作系统,作为开源系统,它被广泛地应用在服务器端以及部分人士的电脑操作系统上。Linux 的文件操作类似于 Windows,但是又有其独特的功能。在本篇文章中,我们将详细探讨怎样在 Linux 系统中查看各个文件夹的大小。1.使用“du”命令查看文件夹大小“du”命令是 Linux 系统中一个非常常用的命令,它能够查看文件夹的大小,并且可以通过命令参数进行不同的格式输出。使用 du 命令的统计结果不仅包含被占用的空间,还包含文件的真正大小,所以这是一个非常实用的命令。

2023-12-26 16:05:04 927

原创 使用SftpDrive + SourceInsight阅读远程服务器代码

目前有阅读开源代码的需要,虽然vim+ctags+cscope可以完成这项工作,不过对我来说毕竟还是用鼠标操作窗口更容易入门,因此希望能在Windows环境下阅读和修改Linux虚拟机的开源代码。其中SftpDrive用于将SSH服务器映射为Windows网络驱动器,而SourceInsight用于代码阅读和编写,这里的代码以Nginx源码为例(实际设置时并无区别)。为了能获得所有目录的完全修改权限,建议使用root进行登录,并且显示的文件夹选择"Show the entire server"。

2023-12-25 16:01:50 516

原创 【转载】深入解析锂电池保护电路工作原理

充电时,控制IC X1会时刻监测第5脚VDD和第6脚VSS之间的电压,当这个电压大于等于过充截止电压且满足过充电压的延时时间时,X1会通过控制第3脚来关闭MOS管Q2,Q2被关闭之后,充电回路被切断(Q2的体二极管D2也是反向截止的),这个时候,电池只能放电。过流保护指的是过放电流的保护,一般的控制IC有过流保护和短路保护两种,控制IC时刻监测VSS-VM之间的电压值,当电压值达到过流保护或者短路保护的阈值且满足延时时间,控制IC会将MOS管Q1关闭,切断放电回路。

2023-12-05 10:17:48 1347

原创 Bin、Hex、ELF、AXF的区别

下面这个是ELF格式的详细介绍,还有Linux下ELF文件的运行原理和过程。

2023-11-24 11:47:56 170

原创 IIC总线逻辑

如果被控器希望主控器降低传送速度可以通过将SCL主动拉低延长其低电平时间的方法来通知主控器,当主控器在准备下一次传送发现SCL的电平被拉低时就进行等待,直至被控器完成操作并释放SCL线的控制控制权。电容式触摸按键调试中,某些产品采用隔离的IIC接口(如Azoteq,Cypress等芯片大部分采用IIC)调试能得到更准确的数据(原理上涉及到人体大地等构成的寄生电容,挺有意思,总线被启动后两个主控器在每发送一个数据位时都要对自己的输出电平进行检测,只要检测的电平与自己发出的电平一致,他们就会继续占用总线。

2023-11-20 15:13:20 292

原创 不要什么变量都想往“结构体“里塞

来一段时间的软件工程师也该有点成果了,代码总要review才能上传与发布,于是组内抽了几个小时走读了一下,其实看一份代码不仅仅只是功能上的实现和设计上的优劣,很多大佬们更在意编码者的水平、风格、态度等等。",毫不相关的变量还硬是要放在一个结构体里面才觉得舒坦,好吧,或许也就是大部分所认为的面向结构体设计吧~前段时间走了一批伙计,最近又来了几张新面孔,职场就这样来来去去,在人潮中会结实很多新的伙伴,也会有很多人因此成为过客,当你渐渐适应这一切,或许就变成熟了吧。大家好,我是bug菌!

2023-11-17 16:49:20 64

原创 【重要】NAND Flash基础知识简介

NAND Flash是一种非易失存储介质(掉电后数据不会丢失),常见的U盘、TF卡/SD卡,以及大部分SSD(固态硬盘)都是由它组成的。本文主要介绍其组成及工作原理。为了表述方便,后面所说的Flash仅指NAND Flash。

2023-09-01 23:17:51 6126

原创 【重要】你是否真的会在Flash上存数据?

用户需要考虑的是系统是否可以接受每个控制周期,等待1个擦除最小单位的编程时间,这是由于有可能需要编程的数据比较大,如果同一时间更新势必会影响到控制周期,但如果把擦写任务分配到每个控制周期,就可以将影响降低到最小,以NXPKinetis,擦除一个Sector典型值是14ms,每次写入Longword(8字节)所需要的时间是65us,当需要升级的时候,在接收到升级命令的第一帧处理时,增加sector删除命令,本次运算周期会增加14ms的pending时间,然后每周期编程8字节数据。

2023-09-01 22:55:23 651

原创 【重要】Nand Flash基础知识与坏块管理机制的介绍

Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将一个block,常见的块的大小是128KB/256KB,全部擦除为1,也就是里面的内容全部都是0xFF了,由于是一下子就擦除了,相对来说,擦除用的时间很短,可以用一闪而过来形容,所以,叫做Flash Mem。出现坏块,则将数据顺序写入下一个好块。相对应的是,所有正常的块,好的块,里面所有数据都是0xFF的。

2023-09-01 22:34:49 3048

原创 NOR型flash vs NAND型flash

FLASH是一种存储芯片,全名叫Flash EEPROM Memory,通过程序可以修改数据,即平时所说的“闪存”。闪存可以在软件的控制下写入和擦写数据。其存储空间被分割成相对较大的可擦除单元,成为擦除块(erase block)。Flash分为NAND flash和NOR flash二种。那么这二者有什么区别呢?

2023-09-01 17:57:30 1295

原创 嵌入式关于FLASH的一点小知识

Flash属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。非易失性存储设备在断电后数据也不会消失,关于非易失性存储器件/设备除了FLASH还有其它比较常见的如:光盘、软盘、机械硬盘、PROM(Programmable read-only memory)、ROM、EEPROM(Electrically erasable programmable read only memory)等。

2023-09-01 17:28:00 352

原创 MLC、SLC NAND FLASH区别和架构对比

【转载:发表于2015年左右】关于现在MP3有用MLC和SLC两种芯片的已经不是什么新闻了,但是很多人都害怕自己买到的是MLC芯片的MP3,认为MLC芯片的MP3就一定不好,其实这里面有很多需要说明的地方,存在很多误解。 在说明MLC MP3之前我们先了解一下什么是MLC和SLC闪存芯片,以及它们的特点和应用。 什么是SLC和MLC?SLC全称为Single-Level Cell,MLC全称为Multi-Level Cell。数码播放器中一般采用两种不同类型的NAND闪存。其中一种叫做SL

2023-09-01 17:03:18 1484

原创 【重要】【转载】NOR Flash芯片内执行(XIP)

另外由于NandFlash没有挂接在地址总线上,所以如果想用NandFlash作为系统的启动盘,就需要CPU具备特殊的功能,如s3c2440在被选择为NandFlash启动方式时会在上电时自动读取NandFlash的4k数据到地址0的SRAM中。如果CPU不具备这种特殊功能,用户不能直接运行NandFlash上的代码,那可以采取其他方式,比如好多使用NandFlash的开发板除了使用NandFlash以外,还用上了一块小的NorFlash来运行启动代码。RAM中只存放需要不断变化的数据部分,如图1所示。

2023-08-31 17:23:54 583

原创 【重要】为什么串行NAND Flash不支持XiP?

官方没有推荐并行NOR/NAND,这是可以理解的,毕竟相比串行接口Flash,引脚占用略多,这对I/O资源紧张的MCU项目来说不太讨喜。实际应用时,对于NAND的读访问,都是在程序代码中先通过IPCMD方式手动发送Page Read和Get Feature命令,然后借助lookupTable中的Random Data Read命令实现仅一个Page空间大小的AHB读,做不到全部NAND空间的自动AHB读(当然如果你觉得一个Page空间的AHB读太鸡肋,完全可以直接用IPCMD方式去读Page数据)。

2023-08-31 16:46:09 290

原创 【重要】这是我见过最好的Flash科普文了

由于 Flash Memory 存在按块擦写、擦写次数的限制、读写干扰、电荷泄露等的局限,为了最大程度的发挥 Flash Memory 的价值,通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。(注:NOR Flash 和 NAND Flash 的擦除都是按块块进行的,执行一个擦除或者写入操作时,NOR Flash 大约需要 5s,而 NAND Flash 通常不超过 4ms。

2023-08-31 16:16:36 682 1

原创 【重要】NAND的局限性和使用寿命

了解了上述NAND读写的原理,我们就可以计算正常情况下NAND分区的使用寿命。大多数商用的NAND flash门限可以支持10万次P/E cycles, 超过这个门限,flash无法保证其存储数据的完整与正确性。基于NAND的嵌入式文件系统通常都运用一种叫做wear leveling的技术,使得对每一块的读写在整个NAND分区中均匀分布。最终,Garbage Collector会把无效页面并入同一块中,然后擦除这个无效块,以备今后使用。NAND因为其电气特性,读和写是按页来读取的,而擦除是按照块来擦除的。

2023-08-31 16:04:17 1137

原创 【重要】降低数据丢失对NAND Flash寿命的影响

对于经常断电的设计,在位错误发生时即执行清理也许是最好的解决办法。解决位错误的方法通常是错误发生时,将数据重写到Flash中的其它位置,然后擦除该区域。防止位错误累积的一种方法是在错误发生时清理数据,如YAFFS文件系统,这个策略提供了防止数据丢失的最佳保证,但也极大缩短NAND flash介质的使用寿命!文件系统的一些机制,如错误清理和磨损平衡,也意味着设计者无法确定其存储层不会在在幕后写东西,如果在此操作期间断电,可能导致严重后果。在读取某个页面时,临近的页面会受到升高电压的影响,导致页面中的位错误。

2023-08-31 15:41:56 1052

原创 【重点】【NAND】聊聊固态硬盘SSD的寿命及其影响因素

固态硬盘是由主控芯片、存储颗粒芯片组成的闪存设备,固体硬盘的英文简称是SSD,如果是移动用的固态硬盘,则其英文简称为PSSD。固态硬盘SSD分工业级和消费级等,目前,工业级固态硬盘SSD通常采用MLC闪存,而消费级固态硬盘SSD基本上使用TLC闪存,而今年来QLC正闪亮登场,未来可能在消费级固态硬盘SSD应用有不错的表现。这里刚好引出一个问题,闪存类型主要有哪些类型,哪些类型的闪存适合用在固态硬盘SSD上?它们对固态硬盘SSD的使用寿命有影响吗?

2023-08-31 15:38:49 1527

原创 延长Flash存储器使用寿命的研究

我们已经了解到,坏了的块是无法擦除和写人数据的,而在嵌入式系统中,启动的第一步就是将Flash里面的前4KB数据自动复制到SRAM里面去运行。对于每一个块的访问,都需要一个固定的物理地址,基于这个固定的物理地址来操作Flash存储器,在对块进行操作的时候,一个块地址对应一个块,如果这个块坏了,那么这个地址的存在就没有意义了。通过在Flash内部加入地址重映射机制,对于使用Flash将会有很大的方便,并且,即使第一个块坏了,仍可以继续使用这个Flash,而无需厂家保证第一个块是好的。

2023-08-31 15:20:21 488

原创 APP爬虫之-Protobuf协议逆向解析

比如一个APP要返回的数据有电话号码,姓名,年龄这三个字段,你就需要把这三个字段定义在 .proto 文件里,并且指明他们的数据类型,比如姓名和电话是字符串, 年龄是整型。APP常见的对数据加密有三种情况:第一种是,用诸如AES这类加密算法对数据加密,然后在APP里用key进行解密,这类的数据解密的难度不是很大,弄清楚是用的什么加密算法就能反解。这个的难度较大,没有功底,头发撸白都不一定撸出来。上图左边是反解析出来的数据,中中间是参照左边写出来的 .proto 文件,右边是人家原本的 .proto 文件。

2023-08-27 00:12:12 2527

原创 一文搞懂XML、Json、Protobuf序列化协议

xml是一种通用和轻量级的数据交换格式语言,是指可扩展标记语言(extensible markup language),以文本结构进行存储。它可以用来标记数据、定义数据类型,提供统一的方法来描述和交换,而且独立于程序语言或供应商的结构化数据。xml有丰富的编码工具,比如DOM、SAX等。以文档模式进行解析,也就是通过父标签索引出一组标记。比如:xmlData.getElementsByTagName("tagName");遍历及诶单(document以及childNodes),可以通过递归的方式。

2023-08-26 23:46:43 383

原创 序列化协议:JSON和XML

2023-08-26 23:25:50 1599

原创 谷歌都在用的 code review 技巧

首先 code review 是一个活动,从最简单一个人读小伙伴的代码开始,到团队在办公室内一起读,一起剖析代码,这都是可以叫做‘code review’总的来说 code review 的过程中,双方都应该保持谦逊学习的态度,在 review 过程中,尽量避免僵持和冲突,一旦发生冲突时,leader 一定要快速找到平衡点,如果持续时间长,就会影响彼此的合作关系,代码问题可以慢慢去解决,和谐互助友好的团队关系才是更重要的。

2023-08-24 17:35:28 101

原创 FileZilla Server安装配置使用说明

选择“端口”,选择“TCP”,输入FTP端口,如果之前配置Filezilla时没有改过,就用默认端口21,我这里端口是:14147。第三步:这个安装最新的“FileZilla Server 0.9.60.2 中文安装版”,点击右键“立即下载”第十一步:防火墙封配置服务器上FTP的被动模式设置自定义端口范围:14140-14146,具体操作如图所示。第六步:开始安装“FileZilla Server”,具体安装操作,如下图所示。第七步:常规设置:监听端口改为:14147,无传输超时改为:600。

2023-08-12 22:31:27 5518 1

原创 构建稳健的嵌入式软件的五个基本技巧和窍门

我所见过的几乎所有程序员都希望编写出坚如磐石的软件。如果你的工作是编写软件,你当然是希望软件能够正常运行。我从未见过有人在项目开始时说:“让我们编写人类已知的最糟糕的、紧密耦合的、有缺陷的、昂贵的代码吧。”(当然,“我们都希望写出优秀的代码,使我们的产品能够无缝运行,并获得大众的称赞,或者至少是我们老板的称赞。不幸的是,编写嵌入式软件经常会陷入错误、或其他爬行动物的泥潭。因此,让我们来打破这个僵局!

2023-08-01 21:15:06 239

原创 嵌入式系统工程师怎样才能不落伍

一方面,这些独立团队自身可能会使用持续集成方法来构建在其内核上运行的代码,另一方面,当系统所有内核上的代码都就绪后,主要的集成工作就会开始。我们的客户使用我们的工具编写嵌入式软件,但同时我们的工具本身也是软件。此外还包括持续集成方法,它是从另外一个角度解决这个问题的,这个方法的本质是,将代码持续不断地加入共享的代码库或开发分支中,进行频繁的自动构建,以在早期发现和验证问题。在这种方法的加持下,多个更加独立的团队可以同时开发,这时,更好地践行持续集成概念就变成了各个团队的代码“何时”准备好集成进系统的问题。

2023-08-01 17:37:04 124

原创 C语言-编译期间检查结构体的大小

工作中有个存储在flash中的结构体由于里面宏控制很复杂,所以其大小变化很大,而这个大小是受限的,常常稍不注意这个结构体大了会引起很严重的后果。编程中,我们会定义一个结构体保存我们的数据.并且希望后续在增加/修改结构体的数据时,不会将结构体的size超过我们的限制值,或者希望已用的参数偏移是不能改动的.如果size超过了限制,或者参数的偏移被改动,希望在编译时就进行报错,提醒开发者.在编译器使用C99以上时,更推荐方法二。

2023-07-05 15:48:12 1335

原创 FreeRTOS临界保护

要注意,因为 FreeRTOS 存在不受其控制的更高优先级中断,用户需要根据实际情况进行特别处理,可以不采用 FreeRTOS 的开关中断函数,而是直接使用__set_PRIMASK 实现全局中断的开关。继续深入,可以看到,实际上是操作了 basepri寄存器来实现开关中断的机理,而要关闭的中断是哪些优先级的中断,则是由 configMAX_SYSCALL_INTERRUPT_PRIORITY所决定。还要注意一点:使用临界保护时,在调度器没开始工作时,使用无效。退出临界保护的定义代码大同小异。

2023-03-26 18:05:42 654

原创 notepad++中使用正则表达式

正则表达式

2023-02-24 14:20:59 7136

原创 嵌入式系统调试中偶发性问题解决技巧

嵌入式 偶发性问题

2022-12-12 21:21:32 677

原创 核间通信(IPC)的两种解决方案

共享内存在核间通信方案中,一个核可以将数据写入共享内存,Mailbox可以将内存指针传递到另一个核上,另一个核可以拿到内存指针后,直接从Share Memory读取数据,这一个过程不需要经过数据的拷贝,因此,非常高效,适合大数据量的传输。同时,同一种类型的多个核心又可以运行在不同的模式,比如A72可以运行的SMP模式,双核R5F可以运行在Lockstep或Split Mode上,因此,核间通信方案要充分利用硬件提供的机制,实现高效的核间通信,从而充分发挥Soc的整体性能。这就是Mailbox的工作方式。

2022-09-13 00:46:39 14652 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除