
嵌入式linux
文章平均质量分 71
zhubao124
这个作者很懒,什么都没留下…
展开
-
FLASH文件系统设计需考虑FLASH固有特性
具体是这样工作的:在对元数据(Metadata,定义文件系统中数据的数据,即数据的数据)做任何改变以前,文件系统驱动程序会向日志中写入一个条目,这个条目描述了它将要做些什么,然后,它继续并修改元数据[6]。由于 NAND Flash 先擦后写的物理特性(写的时候只能由1变成0),NAND Flash一般采用异位更新,即将要更新的数据读入RAM中修改后写入其他空闲空间,在适当的时候擦除修改前数据所在块,修改逻辑地址到新的物理地址映射[2]。(还有体积、功耗、成本因素),显然不适合作为嵌入式设备的存储器。转载 2023-11-26 08:06:50 · 208 阅读 · 0 评论 -
Flash相关理论知识:SLC与MLC、NOR与NAND FLASH、闪存卡
如果晶体管的源极接地而漏极接位线,在无偏置电压的情况下,检测晶体管的导通状态就可以获得存储单元中的数据,如果位线上的电平为低,说明晶体管处于导通状态,读取的数据为0,如果位线上为高电平,则说明晶体管处于截止状态,读取的数据为1。NAND器件中的坏块是随机分布的。两种闪存都是用三端器件作为存储单元,分别为源极、漏极和栅极,与场效应管的工作原理相同,主要是利用电场的效应来控制源极与漏极之间的通断,栅极的电流消耗极小,不同的是场效应管为单栅极结构,而FLASH为双栅极结构,在栅极与硅衬底之间增加了一个浮置栅极。转载 2023-11-26 08:03:46 · 2042 阅读 · 0 评论 -
门禁系统中门磁的工作原理
门磁是用来检测门是否关闭的一个小型感应器,有很多电锁是带了门磁功能的,建议客户如果门禁系统中用到门磁,最好是采购带门磁功能(门状态反馈功能)的电锁。如果电锁没有带门磁功能,可以自行选购门磁,门磁大小比一元硬币略大,价格在几块钱左右。现在市面上常见的暗装式门磁,是不带电线的一端内藏磁铁,带电线的低端内部藏有干簧管等元器件,当磁铁接近时,电线输出闭合信号,当磁铁远离时,两条电线输出开路信号。不带电线的一端装在门的顶部,带电线的一端装在门框上。门关好时,两端正好重叠接近。市面上还有一些门磁是方形的,适用于明装场原创 2021-01-22 17:23:00 · 6640 阅读 · 1 评论 -
Linux进程间通信:消息队列
消息队列函数由msgget、msgctl、msgsnd、msgrcv四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1. msgget函数原型 msgget(得到消息队列标识符或创建一个消息队列对象) 所需头文件 #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> 函数说明 .原创 2020-08-04 16:24:08 · 213 阅读 · 0 评论 -
wpa_supplicant交叉编译
wpa_supplicant 的编译依赖 libnl 库、libssl库,因此需要先编译这两个库。1 libssl编译1.1下载下载链接:https://www.openssl.org/source/下载文件openssl-1.0.2r.tar.gz1.2编译解压文件,进入主目录,使用如下命令编译#mkdir _install#./config no-asm shared --prefix=$PWD/_install --cross-compile-prefix=arm...转载 2020-07-13 20:28:03 · 1061 阅读 · 8 评论 -
能ping通ip但无法ping通域名和localhost //ping: bad address ‘www.baidu.com‘
错误描述:~ # ping localhostping: bad address 'localhost'原因,在/etc目录下缺少hosts文件,将linux中的/etc hosts文件拷入即可~ # ping localhostPING localhost (127.0.0.1): 56 data bytes64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.506 ms64 bytes from 127.0.0.1: seq=1 ttl=6转载 2020-07-06 08:59:07 · 3964 阅读 · 0 评论 -
linux内核数据结构之kfifo
一、前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的。缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如果B没有处理完,则A要延迟发送。为了保证进程A减少等待时间,可以在A和B之间采用一个缓冲区,A每次将数据存放在缓冲区中,...转载 2020-04-07 19:41:49 · 285 阅读 · 0 评论 -
Linux下,程序中怎么配置,才可以自动生成core文件
这个就直接上代码了。#include<stdio.h>#include <sys/time.h>#include <sys/resource.h>#define CORE_SIZE 1024 * 1024 * 500int core_file_start(){ struct rlimit rlmt; if (getrl...原创 2020-03-17 08:51:06 · 710 阅读 · 0 评论 -
Linux下gdb调试生成core文件并调试core文件
1.什么是core文件?有问题的程序运行后,产生“段错误 (核心已转储)”时生成的具有堆栈信息和调试信息的文件。编译时需要加 -g 选项使程序生成调试信息: gcc -g core_test.c -o core_test2.怎样配置生成 core 文件(1)core文件开关①使用 ulimit -c 查看core开关,如果为0表示关闭,不会生成core文件;②使用...转载 2020-03-16 18:33:29 · 441 阅读 · 0 评论 -
Linux生成core文件、core文件路径设置
一、设置core文件大小列出所有资源的限制:ulimit -a或者查看core file size:ulimit -ccore file size:unlimited:core文件的大小不受限制0:程序出错时不会产生core文件1024:代表1024k,core文件超出该大小就不能生成了设置core文件大小:ulimit -c fileSize注意:尽量将这...转载 2020-03-16 18:30:32 · 3276 阅读 · 0 评论 -
linux系统设备的flash中文件全部导出成一个bin文件的方法
对于linux系统,善用dd命令,可以做到直接生成bin文件,而不用生产拆flash。1) 读单个分区保存为bin文件 cat /proc/mtd dd if=/dev/mtd0 of=/system/nfs/uboot.bin这样uboot就保存好了。2) 读多个分区保存为一个bin文件(dd if=/dev/mtd0; dd if...原创 2020-01-13 14:11:41 · 1462 阅读 · 0 评论 -
Linux下日志重定向
最近由于项目的需要,需要将IPC中的日志同步到SD卡中,以便后续IPC出现问题了进行分析。由于我们程序的架构是多进程的,为了将所有进程的日志同步到SD卡中,进程间需要传递文件描述符,然后将该描述符重定向即可。//client.c#include <stdio.h>#include <sys/un.h>#include <sys/types.h>#i...原创 2020-01-06 14:26:20 · 2665 阅读 · 0 评论 -
Linux磁盘管理
原文地址:https://blog.youkuaiyun.com/q1302182594/article/details/473459731 命令根据参考资料[4]的说明,可以使用df命令查看系统的磁盘空间。2 函数参考资料[3]介绍了用于获取磁盘容量信息的函数statfs(),并且提供了一个简单的例程。由于参考资料[3]的例程中,单位转换时使用右移代替除法,从而导致结果不准。...转载 2019-04-27 08:42:36 · 183 阅读 · 0 评论 -
Linux网络编程--服务端判断客户端断开的经验方法
http://blog.youkuaiyun.com/hnlyyk/article/details/50819823法一:当recv()返回值小于等于0时,socket连接断开。但是还需要判断 errno是否等于 EINTR,如果errno == EINTR 则说明recv函数是由于程序接收到信号后返回的,socket连接还是正常的,不应close掉socket连接。 法二: #include <n...转载 2018-03-14 19:13:11 · 896 阅读 · 0 评论 -
Epoll模型
相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define__FD_SETSIZE 1024表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,...原创 2018-03-15 09:52:56 · 183 阅读 · 0 评论 -
linux send与recv函数详解
1 #include <sys/socket.h>2 ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);3 ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags);recv 和send的前3个参数等同于read和writ...转载 2018-03-17 11:01:02 · 1369 阅读 · 0 评论 -
select函数的详细使用(C语言)
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式...转载 2018-03-17 11:08:36 · 26238 阅读 · 8 评论 -
linux select函数详解
http://www.cnblogs.com/ccsccs/articles/4224253.html在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状态。(我们是要想从一个文件描述符中读或者写,还是关注一个描述符中是否出现异常) •我们要等待多长时间。...转载 2018-03-14 16:25:52 · 160 阅读 · 0 评论 -
Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)
http://www.cnblogs.com/cy568searchx/p/4211124.html我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web 服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型 有哪些?还有socket的基本函数,这些都是本...转载 2018-03-14 17:14:56 · 813 阅读 · 0 评论 -
Linux文件共享原理
前段时间读到《Computer Systems: A Programmer's Perspective》的第10章—系统级I/O,书中从整体角度对Unix I/O做了介绍,对Unix/Linux初学者来说,"Unix共享文件"一节的解释得尤为有用。故作为笔记,记录于此。1. Unix I/O 一个Unix文件就是一个m个字节的序列: B0, B1, ......转载 2018-12-19 16:42:59 · 1232 阅读 · 0 评论 -
Linux系统调用dup()和dup2()
dup()和dup2()函数都可以用来复制一个文件描述符,原型为:int dup(int oldfd);int dup2(int oldfd, int newfd);函数执行成功返回新的文件描述符,失败则返回-1。 dup()函数返回的新的文件描述符是当前可用文件描述符中最小数值,示例代码:int main(void){ int fd; int new_fd;...转载 2019-01-15 21:43:59 · 477 阅读 · 0 评论 -
cmake快速入门
一、什么是 CMake 你或许听过好几种 Make 工具,例如GNU Make,QT 的qmake,微软的MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为...原创 2019-03-23 19:47:39 · 272 阅读 · 0 评论 -
Linux下tcp 和 udp 套接字收发缓冲区的大小决定规则
https://www.linuxidc.com/Linux/2012-08/68874.htm1. tcp 收发缓冲区默认值[root@ www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 416153687380 :tcp接收缓冲区的默认值[root@ www.linuxidc.com]# ...转载 2018-03-14 18:57:16 · 234 阅读 · 0 评论