自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (3)
  • 收藏
  • 关注

原创 U盘安装kali linux破解wifi密码——Win10识别不到网卡驱动,虚拟机也不行

最近研究破解wifi密码,网上推荐了很多方法,其中最实用的应该就是实用cdlinux和kali linux破解;小编在破解过程中,遇到最麻烦2个问题:1.笔记本电脑的网卡不支持监听功能,需再购买支持监听的网卡,比如RT3070(20几块钱);2.WIN10系统下,不管是CommView for WiFi还是虚拟机,都不能将无线网卡作为监听模式;猜测可能是在WIN10环境下,这是免驱的无线网卡,没法将其当做正常设备使用;于是选择绕开WIN10,在U盘中安装kali linux,这里我最后使用的版本以

2021-11-26 11:55:15 2252

原创 Nand Flash——Single Bit Soft Bit Read(SBSBR)

note:SBSBR跟Soft Data Read操作很类似,所以本文章编写不再那么详细;简介SBSBR是操作提供了一种从nand介质中检索 Soft Information or Soft Data 的方法;与Soft Data Read相比,SBSBR的读延时tR更高;配置SBSBR使用Set Feature命令设置SBSBR Negative和Positive信息:对应Subfeature Parmeter如下:Subfeature Parmeter对应的Absolute SBS

2021-11-17 17:39:27 898 3

原创 SDR和DDR,Sync和Async,ONFI和Toggle的区别

SDR(Single Data Rate),写读数据使用上升沿或下降沿来触发;因为只用上升沿或下降沿,对信号准确性要求较低;DDR(Double Data Rate),写数据时通过MCU来控制DQS信号跳变沿来触发(即上升沿和下降沿均触发),所以对信号的准确性要求较高,可以通过增加同步时钟信号来提高信号的准确性;Sync模式: 是指Flash操作时需要一个源时钟来对锁存信号进行同步,提高信号采集的准确性。因为另外一个源时钟信号来进行同步,所以对Flash的品质要求较高,如果信号不稳定,很容易导致源时钟

2021-11-17 15:20:19 3292

原创 华硕主板Z390识别不到M2固态硬盘

主板能识别到SATA盘,U盘等,但却识别不到M.2接口的固态硬盘?进入Bios界面,可以看到Storage信息,但是却显示盘是RAID类型,无法将其识别为可用的盘,如下图:只需修改两处位置即可:① 将 M.2_1 PCIE Storage RAID Support的RST关闭;网上很多文章只讲开启CSM功能,却不知此处的RAID设置,也会导致盘识别不到;但Bios恢复默认设置,是默认开始RST功能的,修改如下图:② 开启CSM;如其他文章所讲,要开启CSM功能才能识别到M.2盘,如下图:之后

2021-11-02 11:14:42 23172

转载 FTL——Read Disturb和Data Retention

本文章转载:https://blog.csdn.net/weixin_38233274/article/details/81075834同一个blk的相邻page,轻微写。会有电子进入。导致阈值电压右移动。Read Disturb为什么会导致SSD性能下降?就是因为一个Block上的数据读的次数太多了,固件需要赶在UECC出现之前,把整个Block数据刷新或者搬移,占用底层带宽,导致Host读写性能下降。影响闪存数据可靠性因素闪存影响着数据可靠性的几个问题:1.擦除次数:闪存擦除次数的增多,会使隔

2021-10-14 16:20:35 1339

原创 FTL——坏块管理

本文章内容来源《深入浅出SSD 固态存储核心技术 原理与实战.pdf》坏块来源坏块来源主要包括:1.出厂坏块(Factory Bad Block):闪存从工厂出来,就或多或少的有一些坏块;2.增长坏块(Grown Bad Block):随着闪存的使用,一些初期好块也会变成坏块。变坏的原因,主要是擦写磨损;识别坏块判断坏块的两个方法:1.出产坏块:在block的第一个block的第一个page的第一个byte,和spare区的第一个byte,都写上非0xFF值;2.增长坏块:会在读写擦除等操作

2021-10-14 15:28:56 325

原创 FTL——掉电恢复

本文章内容来源《深入浅出SSD 固态存储核心技术 原理与实战.pdf》掉电分两种,一种是正常掉电,另一种是异常掉电。不管是哪种原因导致的掉电,重新上电后,SSD都需要能从掉电中恢复过来,继续正常工作。先说正常掉电。在掉电前,主机会通过命令通知SSD,比如SATA中的Idle Immediately, SSD收到该命令后,主要会做以下事情:1.把buffer中缓存的用户数据刷人闪存。2.把映射表刷人闪存。3.把闪存的块信息写人闪存(比如当前写的是哪个闪存块,以及写到闪存块的哪些位置,哪些闪存块已经写

2021-10-14 13:17:33 1045

原创 FTL——磨损平衡

本文章内容来源《深入浅出SSD 固态存储核心技术 原理与实战.pdf》磨损平衡,就是让SSD中的每个闪存块的磨损(擦除)都保持均衡。**为什么要做磨损平衡?原因是闪存都是有寿命的,即闪存块有擦写次数限制。一个闪存块,如果其擦写次数超过一定的值,那么该块就变得不那么可靠了,甚至变成坏块不能用了。如果不做磨损平衡,则有可能出现有些闪存块频繁拿来做擦写,这些闪存块很容易就会寿终正寝。随着不断的写人,越来越多的坏块出现,最后导致SSD在保质期前就挂掉。相反,如果让所有闪存块一起来承担,则能经受更多的用户数据写人

2021-10-14 10:55:51 1286

原创 FTL——Trim命令

本文章内容来源《深入浅出SSD 固态存储核心技术 原理与实战.pdf》对一个文件File A来说,用户看到的是文件,操作系统把文件划分为若干个逻辑块,然后写人SSD的闪存空间。当用户删除掉文件File A时,其实它只是切断用户与操作系统的联系,即用户访问不到这些地址空间;而在SSD内部,逻辑页与物理页的映射关系还在,文件数据在闪存当中也是有效的,如图4-35所示。在没有Trim之前,SSD无法知道那些被删除的数据页是否无效,必须等到系统要求在相同的地方(用户空间、逻辑空间)写人数据时才知道那些数据是无

2021-10-14 10:25:56 803

原创 FTL——垃圾回收GC (Garbage Collection)

简介由于闪存需要先擦除后才能写入,由于闪存块不能覆盖写,当写人一笔新的数据时,不能直接在老地方更改(闪存不允许在一个闪存页(Page)上重复写人,一次擦除只能写人一次),必须写到一个新的位置,因此,FW (FirmWare,固件)需要维护一张逻辑地址到物理地址的映射表。另外,往一个新的位置写人数据,会导致老位置上的数据无效化,这些数据就变为了垃圾数据。垃圾数据会占用闪存空间,当闪存可用空间不够时,FTL需要做垃圾回收,即把若干个闪存块上的有效数据搬出,写到某个新的闪存块,然后把这些之前的闪存块擦除,得到可

2021-10-13 18:48:44 997

原创 FTL——映射管理

简介完成主机(或者用户,Host)逻辑地址空间到闪存(Flash)物理地址空间的翻译(Translation),或者说映射(Mapping); SSD每把一笔用户逻辑数据写人闪存地址空间,便记录下该逻辑地址到物理地址的映射关系。当主机想读取该数据时,SSD便会根据这个映射,从闪存读取这笔数据然后返回给用户。这是FTL最原始且基本的功能。映射种类根据映射粒度的不同,FTL映射有基于块的映射,有基于页的映射,还有棍合映射(Hybrid Mapping)。块映射块映射中,以闪存的块为映射粒度,一个用户

2021-10-13 11:37:36 249

原创 FTL——简介

说明:本文章内容来自《深入浅出SSD 固态存储核心技术 原理与实战.pdf》什么是FTL?FTL的全称是Flash Translation Layer,即闪存转换;FTL的分类FTL分为Host Based(基于主机)和Device Based(基于设备);Host Based:FTL是在Host(主机)端实现,用的是计算机的CPU和内存资源,如下:Device Based:FTL在Device(设备)端实现,用的是SSD上的控制器和RAM资源,如下:FTL的作用1.地址映射:记录每一

2021-10-13 10:26:37 1218

原创 您选择的文件不是有效的iso映像文件,请重新选择

今天需要安装一个CentOS-7-x86_64-Minimal-1810.iso,按以往的习惯,使用大白菜/系统之家/老桃毛等软件,先用一个U盘制作镜像文件,然后再讲iso文件安装到另一个U盘中,结果出现以下报错:这并不是你的镜像文件有问题,而是像大白菜/系统之家/老桃毛等软件不支持安装这类Linux系统改用Rufus工具,直接在win环境下制作盘即可;工具下载地址:https://rufus.en.softonic.com/选择对应的设备,镜像文件,然后选择“开始“,等待完成即可!...

2021-10-12 16:25:44 18912 3

原创 ubuntu允许root远程登录

1.安装openssh服务sudo apt-get install openssh-server //服务器sudo apt-get install openssh-client //客户机2.修改盘服务器配置sudo vi /etc/ssh/sshd_config3.修改客户机sudo vi /etc/ssh/ssd_config4.重启ssh服务sudo /etc/init.d/ssh restart...

2021-07-08 09:36:37 202

原创 WIN10设置用户密码

一般设置登录的账号密码,都是在 控制面板->用户账户 里更新密码,但最近在新的电脑发现这种方式设置不了。换种方式:右击“此电脑”->“管理”->计算机管理->系统工具->本地用户和组->用户->点击你自己的用户->右键->设置密码,这样即可设置密码:...

2021-06-24 14:53:47 1828

原创 Linux2.6 platform设备驱动(学习笔记)和理清疑问

本篇博客纯属学习笔记记录,主要理清学习platform设备驱动的疑问,有参考其他博客:参考其他人的博客链接韦东山设备树第一课什么是platform总线platform总线是区别于实体总线USB、 I2C、SPI 、PIC总线的虚拟总线,一些usb设备选址的话需要通过USB总线来进行寻址,而有些类似于SoC内部外设如led 看门狗 定时器是直接通过内存的寻址空间来进行寻址的,cpu与这些设备通信是不需要总线的,2.6内核以后要对所有设备进行统一管理,通过kset、kobject来建立层次关系,对这些直

2021-05-14 15:09:48 132 1

原创 开机设置随机MAC地址

按照国际标准,不管是电脑还是各类小产品的网口,都会有固定的MAC地址,所以设置随机的MAC地址,这是不合法的,只能做测试使用;linux启动之后,一般会在/etc/init.d目录下的某个文件启动网络如果网卡已经启动,设置MAC地址需要重启网卡,所以我直接在启动网卡前设置MAC地址,然后启动网卡即可;生成随机数RANDOM,然后截取6位作为MAC的后3个#!/bin/sh#产生随机MAC地址MACADDR=$(echo 0090e6`echo -n $RANDOM | md5sum | sed

2021-05-07 14:09:57 3316

原创 Linux2.6 lcd屏框架解析(学习笔记)

本篇文章是学习 韦东山 的第二期输入子系统的笔记本文章的代码,我都只保存框架的部分,屏寄存器设置代码删掉了,方便阅读理解一、框架简介这里先附上lcd屏驱动代码,后面的讲解,根据这个代码来讲会比较好理解static struct fb_ops s3c_lcdfb_ops = { .owner = THIS_MODULE, .fb_setcolreg = s3c_lcdfb_setcolreg, .fb_fillrect = cfb_fillrect, .fb_copyarea = cfb_c

2021-05-06 11:31:05 315 1

原创 Linux2.6 输入子系统详解(学习笔记)

本篇文章是学习 韦东山 的第二期输入子系统的笔记,代码看了很多篇才把输入子系统看懂,笔记记录,梳理思路。本文章的代码,我都只保存需要的部分,其他的我删掉了,方便阅读理解一、输入子系统框架介绍学习输入子系统,要先回顾一下字符设备驱动最简单的写法:int major;static int test_drv_init(void){ // 注册, 告诉内核 major = register_chrdev(0, "test_drv", &test_drv_fops); //创建类 tes

2021-04-29 12:10:47 123

原创 互斥锁Mutex解锁两次

一般我们都知道互斥锁包含的代码段,同一时间只能被一个线程调用,如果一个线程已经获取到互斥锁,还在代码段中(还未解锁),此时另一个线程执行此段代码时,是获取不到互斥锁的。那么已经解锁的互斥锁,还能再次被解锁吗?做测试:static void MutexTest(void){ printf("互斥锁解锁两次测试\r\n"); MutexLock(&mutex); printf("互斥锁加锁\r\n"); MutexUnLock(&mutex); printf("第一次解

2021-04-28 18:29:18 3574 2

原创 Linux反汇编——dump命令

脚本test.sh#!/bin/bashALI_TOOLCHCAIN=/opt/toolchains/mips-sde-elf-4.7.3/bin/mips-sde-elf-objdump$ALI_TOOLCHCAIN -d $1 >> $2不同产商提供的工具不同,ALI_TOOLCHCAIN 变量保存objdump工具的路径;使用例子:把二进制文件test.out反汇编并保存为out.txt文件./test.sh test.out out.txt...

2021-04-20 12:02:09 489

翻译 智能卡7816 ATR解析(源码)

智能卡7816解析:https://www.freesion.com/article/5740394128/源码来源C语言解析智能卡ATR:#include <stdio.h>#define TA_BIT (1<<4) /**< TAx presence bit (bit 4, 0x10) */#define TB_BIT (1<<5) /**< TBx presence bit (bit 5, 0x20)

2021-04-09 15:40:29 1118

原创 RGB屏调试经验分享——颜色不对

本篇博客分享我之前调试RGB888 LCD屏遇到的两个比较麻烦的问题及解决方法。我这里不说怎么调试屏的周期,时间宽度等调试方法,寄存器怎么填,根据LCD数据手册和主控手册挨个对比设置,花点时间应该很容易设置好,分享的两个问题经验,是LCD可以显示画面出来,但仍有的问题;问题一:LCD屏显示颜色不对,有规律可循比如说,在调试阶段,你想显示一张纯红色的图片,结果显示出来的是绿色或者蓝色,这就意味着主控发送的数据格式和屏吃的数据格式不一致,比如说:主控发的是RGB格式的数据,结果屏默认是吃BGR格式的数据,

2021-03-27 10:58:38 11630 4

原创 MCU 8080规格LCD屏显示优化——RGB666

大多数人使用MCU 8080屏都是把它设置为 RGB565 (即16bit)模式,这种模式下它只能显示65K种颜色,这样显示一些细腻的颜色,它是显示不出来的;比如:显示天空,西红柿图片,显示出来会有颜色断层,色阶不够;要显示这些细腻的颜色,最好的办法肯定是换个 RGB888 的LCD屏,但是这样会增加物料成本;折中的方法就是:使用I80屏的RGB666模式;使用RGB666模式,要求主控IC也能输出RGB666格式的数据,一般能支持RGB565格式的主控,也能输出RGB666的,这个修改一下寄存器配置就

2021-03-27 10:12:04 4663

原创 MCU 8080规格LCD屏斜线问题——Tear功能

一、问题描述I80规格的LCD屏,一般都是竖屏,比如240320;在实际使用中,经常需要竖屏横用,即240320的竖屏要显示320*240的图片或视频;如果只是单纯显示图片,是看不出斜线问题的,但当播放视频的视频,或显示动态画面的时候,屏幕中就有横切线一闪一闪;要解决横斜线问题,需要明白为什么会有横线:二、原因说明I80屏是有内置memory的,它会保存最近一次接收到的图像数据image buf;对于屏而言,它每个周期都会去拿自己内置memory的数据,然后显示;注意,这里是拿屏自己内置的mem

2021-03-26 18:03:35 988 1

原创 secureCRT打印增加时间戳

一般情况下,secureCRT是不会用到时间戳这个功能,但是如果在做老化测试的话,时间戳功能就很重要,因为添加这个功能,可以让我们知道样机是什么时候出现问题,打印增加时间戳的方法如下:在Upon connect和On each line添加 [%Y%M%D_%h:%m:%s] 就可以了这里有个地方需要注册,老化测试的时候,可能会抓取几天甚至几十天的log信息,所以最好把串口信息保存到本地,可在 Log file name 位置设置,比如:D:\SecureCRT\log%H_%Y%M%D_%h%m%s

2021-03-15 11:19:02 7097

原创 SecureCRT增加窗口打印信息

SecureCRT默认的窗口只能保存500行信息,多余的打印信息将被覆盖,这样在调试或编译的时候,如果打印比较多,则经常看不到完整的打印信息,根据下图修改,即可大量拓展打印信息内容把 Scrollback buffer改到最大99999;另外把行列的大小也改大一点,这样当窗口全屏时,就不会说还没打印一整行就换行了;...

2021-03-15 11:10:37 852

原创 secureCRT显示中文

secureCRT中文显示乱码,按以下操作,即可显示中文:Session->Terminal->Appearance把Normal font设置为 “仿宋 12pt”,Cursor style设置为“简体中文 GB2312”之后就可以打印 printf() 之类的中文显示了,亲测可用...

2021-03-15 11:03:13 12731 1

原创 小程序判断大小端

什么是大小端?大端字节序存储:把一个数的低字节序的内容放在高地址处,把高字节序的内容存放在低地址处;小端字节序存储:把一个数的低字节序的内容存放在低地址处,把高字节序的内容存放在高地址处;C语言测试小程序:#include <stdio.h>#include <stdlib.h>int main(){ int data = 0x12345678; signed char *ptr = &data; //printf("data = 0x%x 0x%x

2021-03-12 09:30:04 100

原创 linux删除.svn和.git

.svn 删除命令:find . -name ‘.svn’ | sed -e ‘s/^/rm -rf /g’| /bin/sh.git 删除命令:find . -name ‘.git’ | sed -e ‘s/^/rm -rf /g’| /bin/sh备注:并非原创,仅做记录

2021-01-29 16:57:01 120

原创 Nand Flash两种坏块管理方式

Nand Flash两种坏块管理方式本文章介绍的两种坏块管理方式为:非顺序映射 和 顺序映射一、非顺序映射在Flash单独划分一个区域作冗余区,当有坏块产生时,将坏块的数据复制到冗余区,并建立一个映射表。此时数据的物理地址是不连续的。优点:只需要一个冗余区,节省空间,坏块的分布对性能没有影响。缺点:需要建立映射表,映射表所在块也可能是坏块,还需要建立映射表的备份二、非顺序映射每个分区建立一个冗余区,当有坏块产生时,在坏块所在分区里将该坏块的所有数据往后移动一个block。此时数据的物理地址

2021-01-28 16:45:09 2213

原创 top命令查看线程信息----pstree功能

使用top命令查看cpu进程信息时调试时经常用到的方法,一般情况文件系统中已经包含了top命令,基本的使用方法可以输入 top ?就可以看到。先解释基本参数的用法:-b 参数:把所有进程都打印出来;-n 参数:刷新n次之后退出;-d 参数:多久刷新一次;以上三个参数,已经可以满足普通使用,但这只能看到进程的信息,不能看到线程的信息;比如:一个进程main.out,它包含了很多个线程,进程的cpu占用率很高,这个可能是进程里某个线程导致的,此时你想查看具体线程的信息,这样top基本用法就不行

2021-01-25 18:12:03 1701

原创 shell脚本变量赋值与C语言变量赋值差异

在C语言中,偶尔能看到变量赋值如下:x1 = x2 = 1;这表达的意思是变量x1等于变量x2等于2,执行结果相当于:x1 = 1;x2 = 1;但在shell脚本中赋值,意思则不同,如果命令行下x1 = x2 = 1 ,则表达的意思是变量x1等于x2 = 1,其中x2 = 1这是一个字符串整体,并没有x2变量,测试如下:xxxxxx@STB-240:~$ Test1=Test2=1xxxxxx@STB-240:~$ xxxxxx@STB-240:~$ echo $Test1Test2

2020-09-29 18:06:45 266

原创 Linux配置默认bash

说明:/bin/sh相当于/bin/bash --posixlinux默认是使用/bin/sh来执行我们的shell脚本,但一般都不/bin/sh,而是使用/bin/bash。以下提供两种修改方法:方法一:输入命令:sudo dpkg-reconfigure dash选择 no ,如下图所示方法二:把原本的/bin/sh删除,然后重新创建一个软链接执行命令:$ sudo rm /bin/sh$ sudo ln -s /bin/bash /bin/sh...

2020-08-07 17:16:50 2407

原创 链表使用小技巧

typedef struct data_node {char *data;struct data_node *prev;struct data_node *next;} data_node_t;假设上面的结构体定义是链接节点的类型,很多时候在初始化链表的时候,会定义一个data_node_t *类型的结构体指针作为链表头,该指针一版为全局变量;比如:data_node_t *data_node_header;之后每次在为链表添加节点node时,会用data_node_header先遍历整个链表

2020-08-07 14:47:07 125

原创 GDB调试库lib文件/dir命令使用

问题:库是在linux上编译出来的,而工程在windows下调试,GDB找不到代码怎么办?使用dir命令,可以解决此问题。dir命令用来指定源文件目录。比如file.c,cache.c和inode.c是三个源文件,已经编译为库lib(gdb) dir D:/linux-2.6.30/fs/fat/file.c这样在调试时就能链接到源文件注意:(1)目录分割符要用 / 或 \,不能用 (2)gdb只会在你指定的目录下找源代码,不会搜索子目录,以上只是添加一个源文件,如果源文件较多,可以将目录

2020-08-06 17:23:35 2819

原创 GDB命令—jump/return/call/disassemble

1.jump命令一般来说,被调试程序会按照程序代码的运行顺序依次执行,但是GDB也可以修改程序的执行顺序,从而让程序随意跳跃。这个功能可以由GDB的jump命令:jump 来指定下一条语句的运行点。 注意,jump命令不会改变当前的程序栈中的内容,所以,如果使用jump从一个函数跳转到另一个函数,当跳转到的函数运行完返回,进行出栈操作时必然会发生错误,这可能导致意想不到的结果,所以最好只用jump在同一个函数中进行跳转。2.return命令如果在函数中设置了调试断点,在断点后还有语句没有执行完,这时

2020-08-06 16:56:20 1814

原创 Makefile环境变量CFLAGS

2020-07-27 10:31:48 1270 1

原创 Makefile工作过程

Makefile工作流程:

2020-07-27 10:20:22 117

原创 手动解析WAV文件头

基本每种音频都会有它对应的头,里面包括的信息一般可以解析出播放总时间,采样率,比特率等信息;本文章是解析WAV的头,然后计算播放的总时间,以及WAV如何计算当前播放时间;您看完后,应该可以很快地得到其他信息;#include "stdio.h"#include "fs.h"typedef struct{ INT8U RIFF_ID[4]; //= {'R','I','F','F'}; INT32U RIFF_len; //file size -8 INT8U type_ID[4]; /

2020-07-17 14:05:52 252

FormatFactory_1.7.zip

在网上下载的格式化工厂,都是新版本的,一些图片/视频/音频用官网的格式化工厂转换后,在一些MCU小平台不一定能解码,而我的这个转换后的文件,都是按最低标准转换的,只要你的代码无bug,解码后的资源都是能播放显示的

2020-06-05

imagePreview.zip

支持图片数据显示,支持格式RGB332,RGB555,RGB565,ARGB8888,RGBA8888,VY1UY0,UY1VY0,Y1Y0Y3Y2,Y1VY0U,Y1UY0V,MB420,GP420各种格式,支持大小端数据选择,支持分辨率设置

2020-06-05

YUV播放器.zip

YUV播放器,Win 64bit,亲测可以使用,支持UYVY,Y,YUV420,YUV422,YUV444,YUV2各种格式的视频,图片裸资源播放显示

2020-06-05

空空如也

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

TA关注的人

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