自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(170)
  • 资源 (10)
  • 收藏
  • 关注

转载 MD5是用来加密的吗?BCrypt又是什么呢

最近经常看到一种关于 MD5 的说法,比如某某系统的登录模块使用了 MD5 加密算法,保证了用户密码的安全。那么 MD5 究竟是不是一种加密算法呢?从概念上来说『加密』对应的是『解密』,我们把数据采用某种方式加密之后,可以在之后的某一时刻进行解密来获得原始数据,照此观点来说 MD5 并不是一种加密算法,它只能把原文加密成密文,而不能将密文解密成原文。但是 MD5 确实把明文变成了不容易被破解的密文,达到了 “加密” 的目的,好像说它可以用来加密勉强也可以。

2024-01-03 16:58:26 108

转载 对称加密、非对称加密、公钥、私钥究竟是个啥?

世界上有没有不能破解的密码或加密方式?还真有一种,叫做一次性密码本,这时唯一一种不能破解的加密方式,而其他的密码只要时间无限理论上都是可破解的,如果你也对加密这个领域感兴趣,可以简单了解下这些概念。进入正题之前先唠叨几句,不久前听到一个名词叫——费曼学习法,核心思想就是用通俗的话语把复杂道理或技术讲清楚,如果你已经明白了这个方法的含义,那么我好像离成功又进了一步。其实这个方法一直在尝试使用,但是没想到它居然有个“洋气”的名字。

2024-01-03 16:50:09 165

转载 公钥/私钥,加密/解密 和 签名

所以只能保证身份验证和加密内容的完整性(因为如果被篡改了,是无法对验证签名的完整性),并不能保证加密内容会不会被窃取)如果甲想给乙发一个安全的保密的数据,那么应该甲乙各自有一个私钥,甲先用乙的公钥加密这段数据,再用自己的私钥加密这段加密后的数据.最后再发给乙,这样确保了内容即不会被读取,也不会被篡改.” 是指私钥只掌握在某个人手里,这段信息可能会被人窃取过去,但也是用公钥加密后的信息,没有私钥解密,就无法知道信息的具体内容)换种说法,公钥和私钥是一对,谁都可以加解密,只不过谁加密谁解密是看情景来用的。

2024-01-03 15:41:55 218

转载 Ubuntu升级Cmake的正确方式

详细参考:(151条消息) Ubuntu升级Cmake的正确方式_cmake 升级_Liangtao`的博客-CSDN博客

2023-06-23 18:18:50 437

转载 交叉编译工具查看支持c或者c++标准

提示 error: unrecognized command line option '-std=c++17’即是不支持。工具后面输入 -std=c版本或者c++版本。只提示 no input files。如下查看是否支持c++17。正常支持的版本c++11。

2023-06-17 23:39:32 798

原创 查看当前编译器(或交叉编译器)支持的C/C++标准

如果已经配置到系统环境中则直接使用;如果没有配置到系统环境中,找到当前使用的交叉编译器的路径;或者编写一段小代码:对应关系如下如果没查到,则默认是c89的标准;如果是#define __STDC_VERSION__ 199901L,则默认支持的是c99标准;如果是#define __STDC_VERSION__ 201112L,则默认支持的c11标准;

2023-06-17 23:31:46 2511

转载 服务器关闭已连接客户端socket,客户端继续write引起的问题

服务端关闭已连接客户端socket,客户端接着发数据产生问题,

2023-06-15 10:34:26 582

转载 VirtualBox无法启动启动报【-104】错误

VirtualBox无法启动启动报【-104】错误

2023-02-02 19:51:43 4044 4

原创 ubuntu中共享文件夹没有访问权限问题

ubuntu中共享文件夹没有访问权限问题

2022-11-23 13:41:38 1307 1

转载 关于把类放到结构体中

一、注意两点1.C++中struct和class的语法是一致的,但public\private属性相反2.语法成份的嵌套:class嵌套class没有问题,class嵌套struct或者相反都是没有问题C++中struct和class的区别仅仅在于前者默认成员为Public而后者为Private.........

2022-04-11 11:48:25 642

原创 shell变量$#,$@,$0,$1,$2的含义解释

变量说明:$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。$#添加到Shell的参数个数$0Shell本身的文件名$1~$n添加到Shell的各参

2022-04-08 18:17:00 334

转载 shell之通过判断上次程序是否执行成功

shell之通过if [ $? != 0 ]判断上次程序是否执行成功1、问题在shell脚本里面有时候我们需要判断上一个程序有没有执行成功,比如用chomd 777 file命令,我们可以用通过if [ $? != 0 ]判断$?这里表示上一次运行的结果:2、代码实现#!/bin/bash test(){ return 2; } test result=$? echo "result is:"$result echo "chenyu" #这里不能写

2022-04-08 18:12:07 1164

转载 Shell中特殊的字符串测试符号: =~

关于字符串测试运算符,咱们都知道有 : -a 、-n、 =、!=、> 、< 。-a : # 判断是否为空字符串,是空则为 true。-n : # 判断是否为非空字符串,非空则为 true。= :# 判断两个字符串是否相等,等于为 true 。!= :# 判断两个字符串是否不相等,不等于为 true 。> : # 从字典上看,如果 string1 排在 string2 之后,则为 true 。< : # 从字典上看,如果 string1 排在 string2.

2022-04-08 18:09:21 6440

转载 shell判断是否为root权限

if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1fi

2022-04-08 10:44:58 642

转载 linux自解压安装脚本

下面整理一些自解压安装脚本,可以用来做生产环境的一键安装配置包。省得登录每个服务器去做安装配置1,从指定行开始自解压#!/bin/bashrm -rf /root/lnmpARCHIVE=`awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' $0`tail -n+$ARCHIVE $0 | tar xzvmv lnmp0.7 /root/lnmpexit 0__ARCHIVE_BELOW__2,从指定字符开始自解压#!/bi

2022-04-07 15:13:05 731

转载 Shell 基本运算符

Shell 和其他编程语言一样,支持多种运算符,包括:算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):#!/bin/bashval=`expr 2 + 2`echo "两数之和为 : $val"运行实例 »执行脚

2022-04-07 15:04:48 427

转载 shell中的特殊符号

# 注释作用, #!除外,在参数替换echo ${PATH#*:}这里不表示注释,数制转换,不表示注释echo $((2#101011)) ; 命令行分隔符, 可以在一行中写多个命令.例如p1;p2表示先执行p1,再执行p2 ;; 连续分号,终止 case 选项 . . 隐藏文件前缀 . 命令等价...

2022-04-07 14:57:57 892 1

转载 eFuse技术

1. 概念eFuse的概念最早来源于2004年IBM工程师的发现。该发现表明:与更旧的激光熔断技术相比,电子迁移(EM)特性可以用来生成小得多的熔丝结构。EM熔丝可以在芯片上编程,不论是在晶圆探测阶段还是在封装中。采用I/O电路的片上电压(通常为2.5V),一个持续200微秒的10毫安直流脉冲就足以编程单根熔丝。通过运用eFuse技术,允许计算机芯片的动态实时重新编程。抽象地说计算机逻辑通常是“蚀刻”或“硬编码”到芯片上,在芯片完成后不能改变。通过使用eFuse技术,芯片制造商可以允许..

2022-04-02 15:52:37 4719

转载 NVM, PROM, OTP, eFuse傻傻分不清楚

1. 什么是NVM?NVM: Non-Volatile Memory,非易失性存储器NVM 的特点是存储的数据不会因为电源关闭而消失,像 Mask ROM、PROM、EPROM、EEPROM、NAND / NOR 闪存 (Flash Memory) 等传统 NVM,以及,目前许多正在研发的新型态存储器,如磁性存储器 (MRAM)、阻变存储器 (RRAM)、相变存储器 (PRAM)、铁电存储器 (FeRAM) 等等都属于 NVM。所以NVM的概念很大。从可编程次数来看,NVM可以分为3类:MTP:

2022-04-02 15:48:56 2559

转载 安全加密 - 秘钥和算法关系

密钥和加密算法之间关系按照密码学原则:所有算法都是公开的,只有密钥是保密的,攻击者无法破解密文的算法才是好的算法。明文+加密密钥,经过加密运算 得到 密文。 密文+解密密钥,经过解密运算 得到明文。大部分密码算法,加密运算和解密运算是完全一样的,只是所用秘钥不同。对称加密,加密解密的秘钥相同。非对称加密,加密解密的秘钥不同。...

2022-04-02 11:37:50 1387 1

转载 nxp i.mx6系列处理器修改和查看eFuse的方法

博主在发此博文前,已经在i.mx6ul和i.mx6ull处理器验证过了。在uboot阶段进行查看或修改eFuse,语法如下。=> fuse read <bank> <word> [<cnt>]//从影子寄存器中读取eFuse的值=> fuse sense <bank> <word> [<cnt>]Reads the eFuse value directly from the fusebox.=> f

2022-04-01 19:41:26 676

转载 浅析安全启动(Secure Boot) —写得很好

前言安全启动的根本目的是为了防止消费者从软硬件层面对产品的部分关键系统进行读写、调试等高权限的操作。以限制消费者的能力,来达到保护产品的商业机密、知识产权等厂家权益的目的。当然,厂家是不会这样宣传 Secure Boot 的。他们的文案通常都是通过这项技术保护用户的隐私,防止恶意软件修改系统软硬件等等。不过不论如何,随着 ARM 架构的广泛授权,基于 TrustZone 的 Secure Boot 也越来越普遍了。本文是通过我自己对市面上的一些基于 ARM TrustZone 的 Sec...

2022-04-01 18:45:45 17791 4

转载 使用dd命令快速生成大文件或者小文件的方法

1. dd命令可以轻易实现创建指定大小的文件,如dd if=/dev/zero of=test bs=1M count=1000在当前目录下会生成一个1000M的test文件,文件内容为全0(因从/dev/zero中读取,/dev/zero为0源),但是这样为实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢。2.在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘dd if=/dev/zero of=test bs=1M cou..

2022-03-24 18:09:08 9995

转载 linux 命令 pushd popd cd 的区别

与linuxcd命令相似,用pushd实现在不同目录间切换  在命令行模式下,当你工作在不同目录中,你将发现你有很多时间都浪费在重复输入上如果这些目录不在同一个根目录中,你不得不在转换时输入完整的路径名,这难免让人有些难以忍受但你可以用以下的一个或两个步骤来避免所有多余的输入:用命令行解释器中的历史记录,或者用命令行函数pushd  用命令行解释器中的历史记录的好处是只需按很少的键在命令行中用向上的箭头来查找你用过的命令,直到你找到,然后按回车键如果你所切换的两个目录在整个驱动器的子目录结构中很接.

2022-03-24 16:32:51 235

转载 echo >”和“echo >>”的区别

> 输出重定向>> 输出追加重定向---------------------------------------------------------------------------------------------------------------------echo hello A将字符串hello A输出到屏幕---------------------------------------------------------------------------

2022-03-24 16:29:06 409

原创 进程间通信的发布订阅模型注意事项

1. 进程间通信,根据通信数据量的多少,选择通信方式。2. 在数据量比较大的情况下,首选socket通信。3. 进程模块的业务都是异步的,发布订阅模型相对比较方便。4. 加入进程A为发布端,进程B为订阅端。5. B进程关心A进程中的某些数据,所以A进程数据变化的时候,需要主动告知到B进程。6. 而A进程中的所有数据,B进程未必全部关心,可能B进程只关注A进程的某部分数据,所以需要B进程先向A进程订阅 所关注的数据项 和 B进程标识(统一规定)。7. 进程模块的业务都是异步的,所.

2022-02-18 15:48:22 466

原创 关于i2c_msg的一点注意事项

首先对于i2c_msg的说明:一个i2c_msg结构变量,代表着一次单方向的完整传输。 正确理解上面这句话的意思,就能正确使用linux中使用i2c_msg对于i2c的读写操作。 来看一下i2c_msg的定义(位于:linux-3.10\include\uapi\linux):/** * struct i2c_msg - an I2C transaction segment beginning with START * @addr: Slave address, ...

2022-01-18 10:42:40 2056

转载 I2C中关于ACK和NACK的几点东西

I2C的数据格式无数据(空闲):SCL=1,SDA=1; 开始位(Start):当SCL=1时,SDA由1向0跳变; 停止位(Stop):当SCL=1时,SDA由0向1跳变; 数据位:当SCL由0向1跳变时,由发送方控制SDA,此时SDA为有效数据,不可随意改变SDA;当SCL保持为0时,SDA上的数据可随意改变; 地址位:定义同数据位,但只由Master发给Slave; 应答位(ACK):当发送方传送完8位时,发送方释放SDA,由接收方控制SDA,且SDA=0; 否应答位(NACK):当发

2022-01-18 10:02:48 3155

转载 i2c驱动中关于i2c_msg的标志位说明

I2C_M_IGNORE_NAK:设置这个标志意味当前i2c_msg忽略I2C器件的ack和nack信号。I2C_M_NOSTART:设置这个标志意味当前i2c_msg不发送start信号。如果一个i2c_msg没有定义I2C_M_NOSTART而且又不是msgs序列里的第一个 i2c_msg,则回发送重复start信号,我想这就是这个标志起这个名的原因。我们可以猜想,1.msgs序列第一个数据必须是地址,同时必须不定义这个标志位2.在进行读数据,要从写操作转变为读操作时,会发重复star

2022-01-15 17:07:57 452

原创 解析linux中模拟IIC的iic-gpio.c实现代码

/* * Bitbanging I2C bus driver using the GPIO API * * Copyright (C) 2007 Atmel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by t.

2022-01-15 16:52:52 954

原创 解析linux中使用gpio口模拟IIC的实现代码

/* ------------------------------------------------------------------------- * i2c-algo-bit.c i2c driver algorithms for bit-shift adapters * ------------------------------------------------------------------------- * Copyright (C) 1995-2000 Simon G. .

2022-01-15 16:44:34 726

原创 关于I 2 C、SPI、USB驱动架构的对比

2022-01-15 14:50:46 394

转载 Linux 驱动面试题总结

1、 Linux设备中字符设备与块设备有什么主要的区别?请分别列举一些实际的设备说出它们是属于哪一类设备。 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少实现open,close,read和write系统调用。字符终端、串口、鼠标、键盘、摄像头、声卡和显卡等就是典型的字符设备。 块设备:和字符设备类似,块设备也是通过/dev目录下的文件系统节点来访问。块设备上能够容纳文件系统,如:u盘,SD卡,磁盘等。 ...

2021-12-31 08:18:46 251

转载 Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析

前面我们学习了字符设备结构体cdevLinux 字符设备驱动开发 (一)—— 字符设备驱动结构(上) 下面继续学习字符设备另外几个重要的数据结构。 先看下面这张图,这是Linux 中虚拟文件系统、一般的设备文件与设备驱动程序值间的函数调用关系;上面这张图展现了一个应用程序调用字符设备驱动的过程, 在设备驱动程序的设计中,一般而言,会关心 file 和 inode 这两个结构体 用户空间使用 open() 函数打开一个字符设备 fd = open("/dev/h...

2021-12-30 20:22:28 438

转载 Linux 字符设备驱动结构(二)—— 自动创建设备节点

上一篇我们介绍到创建设备文件的方法,利用cat /proc/devices查看申请到的设备名,设备号。第一种是使用mknod手工创建:mknod filename type major minor第二种是自动创建设备节点:利用udev(mdev)来实现设备文件的自动创建,首先应保证支持udev(mdev),由busybox配置。 具体udev相关知识这里不详细阐述,可以移步Linux 文件系统与设备文件系统 —— udev 设备文件系统,这里主要讲使用方法。 在...

2021-12-30 20:17:22 646

转载 Linux 字符设备驱动结构(四)—— file_operations 结构体知识解析

我们已经介绍了两种重要的数据结构 struct inode{...}与 struct file{...} ,下面来介绍另一个比较重要数据结构 struct _file_operationsstruct _file_operations在Fs.h这个文件里面被定义的,如下所示:struct file_operations { struct module *owner;//拥有该结构的模块的指针,一般为THIS_MODULES lo...

2021-12-30 20:12:47 1246

转载 Linux 字符设备驱动结构(一)—— cdev 结构体、设备号相关知识解析

一、字符设备基础知识1、设备驱动分类 linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和SD卡等。每一个字符设备或块设备都在/dev目录下对应一个设备文件。linux用户程序通过设...

2021-12-30 19:43:20 1945

原创 malloc,calloc 和 realloc 的实现原理

malloc,calloc 和 realloc是应用层用于开辟内存的三个函数。 实现原理 malloc / calloc 函数的实现原理:它维护一个可用内存链表(即所谓空闲链表)。调用时,它在该链表中寻找一个满足用户请求所需要的内存块,这样就会出现三种情况:如果找到一块与用户请求所需要大小相同的内存块,那就将该块内存返还给用户。 如果找到一块比用户请求所需要大小更大的内存块,则将该内存块一分为二(一块的大小与用户申请的大小一样,另一块就是剩下的字节),将分配给用户的那块内存传递给用户,将

2021-12-30 10:13:22 681

原创 几种内存分配函数比较

__get_free_pages 直接对页框进行操作,最大分配内存为4M,适用于分配较大量的连续物理内存。 kmem_cache_alloc 基于slab机制实现,最大分配内存为128kb, 适合需要频繁申请释放相同大小内存块时使用. kmalloc 基于kmem_cache_alloc实现,最大分配内存为128kb, 最常见的分配方式,需要小于页框大小的内存时可以使用。 vmalloc 建立非连续物理内存到虚拟地址的映射,物理不连续,适合需要大内存,但是对地址连续性没有

2021-12-29 20:07:58 492

转载 Linux内核环境下申请大块内存

在Linux内核环境下,申请大块内存的成功率随着系统运行时间的增加而减少,虽然可以通过vmalloc系列调用申请物理不连续但虚拟地址连续的内存,但毕竟其使用效率不高且在32位系统上vmalloc的内存地址空间有限。所以,一般的建议是在系统启动阶段申请大块内存,但是其成功的概率也只是比较高而已,而不是100%。如果程序真的比较在意这个申请的成功与否,只能退用“启动内存”(Boot Memory)。下面就是申请并导出启动内存的一段示例代码:void* x_bootmem = NULL;EXPORT_SY

2021-12-29 20:02:39 968

A40i-T3修改根分区大小.docx

A40i-T3修改根分区大小.docx

2021-12-04

A40-T3的sys_partition.fex分区表说明

A40-T3的sys_partition.fex分区表说明

2021-12-04

A40i-T3的Sunxi-dump-reg使用说明.doc

A40i-T3的Sunxi-dump-reg使用说明.doc

2021-12-04

PhoenixSuit.pdf

PhoenixSuit.pdf

2021-11-25

2021嵌入式发展与数字化营销调研20210125.pdf

嵌入式技术的快速发展不仅使其成为当今计算机领域的一个重要分支,而且 是改造传统产业、提升多方面技术水平的有力工具。特别是近一年以来,新冠疫 情对嵌入式产业的影响呈现产业链上的分段性、全球范围的分区性、时间上的持 续性的特点。2020年的跌宕起伏已经过去,那么,2021年嵌入式产业又将走向 何方?

2021-02-01

2021中国嵌入式产业发展现状及趋势分析.pdf

嵌入式技术的快速发展不仅使其成为当今计算 机技术的一个重要分支 而且是改造传统产业 、 提 升多领域技术水平的有力工具 。 这是一个分散的产 业 这里充满了竞争 、 机遇与创新 。 特别是一年以来 新冠疫情对嵌入式产业的影 响呈现产业链上的分段性 、 全球范围的分区性 、 时 间上的持续性的特点 。

2021-02-01

电力行业62056标准全套.rar

IEC62056中文全套,包括: IEC62056术语.doc IEC62056标准体系简介1.doc IEC62056标准体系简介.doc 62056-61/62.doc 62056-51/52/53.doc 62056-41.doc 62056-46.doc 62056-21.doc 等

2019-12-27

详析GPS漂移现象与定位不精准的诸多因素.docx

详析GPS漂移现象与定位不精准的诸多因素,在实际使用当中,GPS的定位精度未必会让我们满意,许多用户反应使用车载GPS产品的时候,车辆虽然静止不动但是导航仪屏幕所显示的本车位置图标却在地图上左右摇摆,这就是我们常说的卫星信号漂移现象。此外实际位置与地图所显示位置不一致,产生位置偏差也是许多车载用户甚至手持机使用者经常遇到的现象。

2019-12-27

gpsviewer电脑版.rar

主要用于一段时间内的GPS数据轨迹分析,可以用于配合我上传的解决漂移算法,来比对分析。有实时数据和历史数据两种输入方式,效果还不错。

2019-12-27

gps漂移过滤算法,仅供参考

gps漂移过滤算法,仅供参考,主要是针对解决漂移问题。漂移问题从软件层面并不能够完全解决,算法通过最近一段时间车辆运行的坐标进行比对。

2019-12-27

空空如也

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

TA关注的人

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