这个图是哔哩哔哩上面up主(Bernice_坚果丁)提供的,感觉不错,自己曾经也用过掉电保护,只是功能电路不一样,因此记录学习一下。...就是当5v的端口电压如果有瞬间的高电压会击穿smbj 5.0 A二极管(A的意思是单相的,不是电流哦~)从而保护三段稳压芯片,后面的电路就得到保护 smbj3.3A道理一样。...3、EXTI_PVD端口是给单片机提供信号的,为何要使用掉电保护,其实是与保存芯片有关,像flash、eeprom都是有擦写的极限次数的,flash是10万次好像,单片机总不能实时去保存数据,因此使用了掉电保护功能...视频中,提到两种方法,一种是外部中断下降沿的方式来进行检测,有下降沿,就保存一次数据。...第二种是单片机可编程的电压检测功能,stm32是有的,没记错的话,这样当检测到该引脚电压低于某一阈值时,就判断为掉电,从而进行数据保存。
这一节主要研究一下flash的用法,目的嘛,实现数据的掉电保护。 听起来像EEPROM? 确实很像,但不是!以STM32为例,片上是没有EEPROM的。...用户数据:当系统数据未占满整个Flash空间时,空闲区域均可用于存放用户数据。...根据上面给出的截图和信息,可以知道,如果要实现类似EEPROM的效果,需要把数据存到“用户数据”这一部分。用户数据在flash中有两部分,只要是没有被占用的,都可以。...后面的两个数组一个用来存放被写入的数据,另一个用来存放读出的数据。 为什么是uint32类型?后面说! 2 擦除该扇区 无论你要写哪个扇区,一律先擦后写!...第二个参数:被写入数据的指针。 第三个参数:数据长度,也就是被写入数据的大小。因为uint32占用4个字节,所以用数组元素个数乘以4. 回到刚才的问题,为什么一定要uint32类型? 答:规定!
作者:谢伦义,排版整理:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 在嵌入式设备开发中,往往需要保存一些掉电不易失性的数据,如果系统配置、用户定制信息等等,如果增加额外的ROM IC,...它分为 NOR FLASH 和 NAND FLASH,NOR FLASH一般应用在代码存储的场合,如嵌入式控制器内部的程序存储空间;而 NAND FLASH 一般应用在大数据量存储的场合,如U 盘以及固态硬盘等...所以暂时一些关于OptionBytes的操作和Flash的读写保护操作等API暂时不做讨论。...但是由于保存数据以页为单位,页的大小可以多达2048bytes,所以该方法可以实用于保存掉电不易失的大数据。...考虑到flash读写保护的逻辑机制,该方法最好在不考虑数据的安全性问题前提下,才使用这种方法。 对于诸如此类的掉电保护数据方法,这里仅仅是抛砖引玉,欢迎大家多多提出更好的方案。
正常掉电不会导致数据的丢失,重新上电后,SSD只需把掉电前保存的相关信息(比如映射数据,闪存块信息等等)重新加载,又能接着掉电前的状态继续工作。...异常掉电可能会导致数据的丢失,比如缓存在主机中的数据来不及写到闪存,掉电导致这部分数据丢失;还有,根据闪存特性,如果掉电发生在写MLC的Upper page,会导致其对应的Lower Page数据遭到破坏...异常掉电恢复的目的一方面是尽可能恢复用户数据,把损失减到最低;另一方面是让SSD经历异常掉电后还能正常工作。 SSD为什么怕异常掉电?它不是用闪存做存储介质吗?它不是数据掉电不丢失吗?没错。...不过,一个SSD,除了数据掉电不丢失的闪存,还需要有掉电数据丢失的RAM,SRAM或者DRAM。...为防止异常掉电数据丢失,一个简单的设计就是在SSD上面放电容,SSD一旦检测到掉电,就让电容开始放电,然后把RAM中的数据刷到闪存上面去,从而避免数据丢失。企业级的SSD一般都带有电容。
RELRO(RELocation Read Only) 在Linux中有两种RELRO模式:Partial RELRO 和 Full RELRO。Linux中Partical RELRO默认开启。...内数据段(internal data sections)(如.got,.dtors等)置于程序数据段(program’s data sections)(如.data和.bss)之前; 无 plt 指向的...NX(windows中得DEP) NX:No-eXecute DEP:Data Execute Prevention 也就是数据不可执行,防止因为程序运行出现溢出而使得攻击者的shellcode可能会在数据区尝试执行的情况...GCC默认开启(可选项如下) gcc -o test test.c // 默认情况下,开启NX保护 gcc -z execstack -o test test.c // 禁用NX保护 gcc...-o test test.c //启用堆栈保护,为所有函数插入保护代码
第三个级别,系统掉电。这也是我这篇文章的主角,同时也是数据一致性要求最高的级别。系统掉电意味着我们甚至连 PageCache 都不能直接利用,必须严格保证数据落到磁盘当中。...而这次比赛的正确性描述 写入若干条数据。 重启机器 再读出来,必须严格等于之前写入的数据 其中的重启机器环节,恰恰是模拟的掉电。...如何理解数据不丢失 在介绍 Java 文件 IO 中保证掉电不丢失的手段之前,我还需要做一个概念的介绍,这样方便我们更好的理解文章后续的观点。...很多同学可能有疑惑,如果一个数据写到一半,发生了掉电,那评测程序怎么知道这条数据落盘了没有呢?评测程序会不会读取这条数据呢?...Java 文件 IO 保障掉电不丢数据 在《文件 IO 操作的一些最佳实践》一文中,我其实已经介绍了,Java 中无非就一个 FileChannel 是最常用的文件操作类。
嵌入式Linux开发主要有四种方式:裸机开发、SDK开发、驱动开发和应用开发。 1、裸机开发 裸机开发通常指在没有操作系统支持的环境中直接在硬件上运行程序的开发。...在嵌入式Linux SDK开发中,开发者可以利用Linux系统的强大功能和灵活性,同时针对特定的硬件平台进行优化和调整,以满足嵌入式设备的特定需求。...3、驱动开发 驱动开发是指为嵌入式Linux系统编写设备驱动程序的过程。在这个过程中,开发者需要深入理解Linux内核架构,学会如何在Linux内核环境下编写、调试和维护设备驱动程序。...这包括编写代码来直接与硬件交互、处理硬件中断、以及实现与系统其他部分的数据交换。驱动开发是我们学习的重点内容。 Linux中的设备驱动主要分为3大类:字符设备驱动、块设备驱动和网络设备驱动。...4、应用开发 Linux 应用开发是指在 Linux 操作系统上开发应用程序的过程。这包括创建、编写、调试和优化应用程序,以在 Linux 环境中运行。
如上图所示,MySQL内page=1的页准备刷入磁盘,才刷了3个文件系统里的页,掉电了,则会出现:重启后,page=1的页,物理上对应磁盘上的1+2+3+4四个格,数据完整性被破坏。...画外音:redo无法修复这类“页数据损坏”的异常,修复的前提是“页数据正确”并且redo日志正常。 如何解决这类“页数据损坏”的问题呢?...DWB为什么能解决“页数据损坏”问题呢? 假设步骤2掉电,磁盘里依然是1+2+3+4的完整数据。 画外音:只要有页数据完整,就能通过redo还原数据。 假如步骤3掉电,DWB里存储着完整的数据。...自己实验了几十次,仍没能复现“页数据损坏”,在网上找了一个“页数据损坏”时,MySQL重启过程利用DWB修复页数据的图。...结尾 MySQL有很强的数据安全性机制: (1)在异常崩溃时,如果不出现“页数据损坏”,能够通过redo恢复数据; (2)在出现“页数据损坏”时,能够通过double write buffer恢复页数据
1、Linux库函数简介 Linux 提供了丰富的库函数,涵盖了各种领域,从文件操作到网络编程、图形界面、数学运算等。...这些库函数大多数都是标准的 C 库函数,同时也包括一些特定于 Linux 系统的库。 Linux库函数通常以动态库文件(.so)的形式提供,存放在根文件系统的 /lib 目录下。...Linux 内核提供了一系列系统调用供应用层使用,直接使用系统调用是一种方法。然而,有些系统调用使用起来不够方便,因此引入了 C 语言库。...2、标准C语言库函数 在Linux系统下,使用的C语言库主要是GNU C语言函数库,也被称为glibc。...它是Linux下的标准C语言函数库,为开发者提供了丰富的函数集,涵盖了输入输出、字符串处理、数学运算、文件操作等多个领域。
为了保护 Linux 系统上的数据库免受 SQL 注入攻击,我们需要采取一系列的安全措施和最佳实践。本文将详细介绍如何保护 Linux 数据库免受 SQL 注入攻击。...定期更新和维护保护 Linux 数据库免受 SQL 注入攻击需要定期更新和维护系统和应用程序。...结论保护 Linux 数据库免受 SQL 注入攻击是关键的安全任务。通过采取一系列的安全措施和最佳实践,可以减少 SQL 注入攻击的风险。...同时,强调跨团队合作和持续的安全监测是确保 Linux 数据库安全的重要因素。...通过综合应用这些措施,您可以提高 Linux 数据库的安全性,降低 SQL 注入攻击的风险,并保护敏感数据的完整性和机密性。
JFFS JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0内核为嵌入式系统开发的文件系统。...JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux,uCLinux中。...,并提供了崩溃/掉电安全保护等。...与jffs2相比,它减少了一些功能(例如不支持数据压缩),所以速度更快,挂载时间很短,对内存的占用较小。...在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。
JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux, uCLinux中。 ...,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。...另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。 由于以上特性,Cramfs在嵌入式系统中应用广泛。...ext2也可以作为嵌入式Linux的文件系统,不过将它用于 FLASH闪存会有诸多弊端。...在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。
注:linux内核中一个功能模块有三种编译方法:一种是编入、一种去去除、一种是模块化。...%config: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux include/config $(Q)$(MAKE) $...---- .config “.config文件中每一行都是一个配置项,从.config文件的规模可以看出linux内核的可配置项有两三千个。...所以linux内核是高度可配置的,而且linux内核的所有配置项很难全部搞明白。...因为linux内核的配置项太多太繁杂超出了人的大脑能够记忆和处理的数量级,因此linux内核不像uboot那样直接手工配置,而是发明了一个图形化的配置工具menuconfig。”
在线课堂:https://www.100ask.net/index(课程观看) 论 坛:http://bbs.100ask.net/(学术答疑) 开 发 ...
简介 嵌入式Linux下串口编程与Linux系统下的编程没有什么区别,系统API都是一样的。...嵌入式设备中串口编程是很常用的,比如会对接一些传感器模块,这些模块大多是RS232或者RS485接口,对于软件层面上来说,RS232与RS48区别不大。...RS485是半双工的总线协议,一般可以挂多个传感器设备,半双工的意思是同时只能有一个设备向串口发数据。...tcflush 用于清空输入、输出缓冲区 tcsetattr 设置串口终端参数 read 读取数据 write 写数据 close 关闭串口设备 代码 #include #include...new_cfg = old_cfg; cfmakeraw(&new_cfg); //配置为原来配置 new_cfg.c_cflag &= ~ CSIZE; //用数据位掩码清空数据位的设置
自己总结的Linux学习路线,还在这条路上继续奔跑着… 我将其总结为4个阶段吧: 入门 - 抛弃旧的思维习惯,熟练使用 Linux 命令行 从Window切换到Linux是一件很痛苦的事情,因为人类接受信息最快的方式就是图形化的信息...在这一阶段,推荐的书籍是《鸟哥的私房菜》、《linux shell脚本攻略》。 《鸟哥的私房菜》- 几乎每个linux程序的必经之路。...推荐的书籍有《Linux环境下C编程指南》、《UNIX 环境高级编程》。 linux驱动开发,学会基本的linux内核数据结构、接口等等,了解linux设备模型、设备树等,为理解内核打下坚实的基础。...高级 - 软硬结合,反复阅读代码 这一部分还是分为2部分: ARM体系架构学习,推荐阅读,ARMv6、ARMv7和ARMv8架构的数据手册,汇编语言等等。...linux内核源码解析,对每个子系统的代码架构深入研究,能对内核进行模块裁剪等。推荐的书籍有《Linux内核设计与实现》、《Linux内核源代码情景分析》和《深入理解Linux内核(第三版)》。
它包含了一些逻辑上存在但物理上并未存储的数据。 空洞文件在多线程共同操作文件时具有极大的优势。当创建一个巨大的文件时,单个线程逐步构建文件会耗费大量时间。...一种优化思路是将文件划分为多个段,利用多线程同时操作,每个线程负责写入其中一段数据。...在 Linux 中,可以通过使用 lseek 和 write 系统调用来创建空洞文件。...由于文件指针跳过的区域并未实际写入数据,因此在磁盘上创建了一个空洞。 可以使用 du 命令查看文件占用的磁盘空间,以验证是否为稀疏文件。...在文件系统中,读取空洞文件时,操作系统会将空洞部分的数据补充为0,使得读取的文件内容包含完整的文件大小。
在Linux中,文件共享是指多个进程可以同时访问和操作同一个文件。...这有助于避免数据不一致性和冲突,提高程序的稳定性。 下面分享常见的三种文件共享方式。...各数据结构之间的关系如下图所示: 下面是一个简单的例子,演示了在同一个进程中多次调用 open 打开同一个文件: #include #include #include...2、不同进程中分别使用 open 函数打开同一个文件 在Linux系统中,不同进程可以使用open函数打开同一个文件。...各数据结构之间的关系如下图所示: 以下是一个简单的例子,演示了两个不同的进程分别使用open函数打开同一个文件: #include #include #include
在Linux系统中,系统文件和目录按照一定的约定被组织和分配到不同的位置。这些文件和目录通常用于存储系统配置、程序文件、库文件等。.../dev:包含设备文件,Linux中一切皆文件,这里存放了与设备通信的特殊文件,如硬盘分区(/dev/sda1)、键盘(/dev/input/eventX)等。.../home:用户的家目录,每个用户通常在此目录下有自己的子目录,用于存放个人数据、文件以及用户相关的配置文件。.../srv:服务数据目录,存放一些服务或系统所需的数据文件,如网站的数据目录。 /sys:也是一个虚拟文件系统,用于访问内核的运行时信息和控制内核参数的接口。...以下是导致SoC中文件系统目录结构与Ubuntu系统不同的一些可能原因: 定制化需求 SoC通常用于嵌入式设备,这些设备可能有自己的定制需求,例如嵌入式系统可能只需要支持特定的功能或服务,因此文件系统的结构可能会根据这些需求进行定制
前言 嵌入式知识点复习一 嵌入式知识点复习二 –体系结构 嵌入式知识点复习三 –ARM-LINUX嵌入式开发环境 嵌入式知识点复习四 –arm-linux文件编程 嵌入式知识点复习五 –arm-linux...进程编程 嵌入式知识点复习六 –arm-linux网络编程 嵌入式知识点复习七 –linux字符型设备驱动初步 嵌入式知识点复习一 1、 嵌入式系统的一般组成结构 2、嵌入式硬件系统的结构 (1)嵌入式处理器...4、嵌入式操作系统 功能: 种类:嵌入式linux;WinCE;Vxworks;μC/OS-II;Android;IOS。...嵌入式知识点复习三 –ARM-LINUX嵌入式开发环境 一、交叉开发模式 1、组成结构 (1)宿主机:开发主机,一般由PC、发行版linux系统、开发工具(本地及交叉编译)(代码编辑器Vi,编译器GCC...、Linux字符设备驱动初步 1、Linux设备类型 (1)字符设备:只能一个字节一个字节的读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序进行。
领取专属 10元无门槛券
手把手带您无忧上云