自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 收藏
  • 关注

原创 Linux内存管理(1)物理内存初始化

问题思考系统启动时,arm-linux内核怎么系统系统到底有多大的内存空间 在32bit的linux内核中,用户空间和内核空间的比例通常是3:1,可以修改成2:2么 物理内存页面如何添加到伙伴系统中,是一页一页添加,还是以2的几次幂来加入呢简介从硬件的角度来看内存。内存是什么,内存是ram(随机存储器,Random access memory),是可以直接与cpu叫唤数据的内部寄存器。现在大部分都使用ddr来作为内存,ddr包括DDR3L、DDR4L、LPDDR3/4。ddr的初始化一般是在B

2021-04-05 20:37:12 921

原创 ubuntu开启nfs服务及设备端配置nfs

目录ubuntu开启nfs1.1 ubuntu安装nfs服务1.2 创建nfs挂载目录1.3配置NFS1.4 重启nfs服务设备端开启nfs1.1 配置网络部分1.2 配置开启nfs网络文件系统1.3 设备端挂载nfsubuntu开启nfs1.1 ubuntu安装nfs服务sudo apt-get install nfs-kernel-server1.2 创建nfs挂载目录比如:/home/taozhang/share/nfs1.3配置NFS..

2021-01-10 14:29:55 751 1

原创 ubuntu设置环境变量

设置环境变量的三种方法1.1 临时设置export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH应用场景:内核及驱动编译时一般需要临时设置1.2 当前用户的全局设置打开用户的~/.bashrc,添加行:export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH将环境变量生效有两个:1、命令:source ~/.bashrc2、重启ubuntu1.3

2021-01-10 13:50:37 1943

原创 arp--Linux常用网络命令(二)

功能ARP命令用于显示和修改“地址解析协议(ARP)”缓存中的项目。ARP缓存中包含一个或多个表,它们用于存储IP地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则ARP命令将显示帮助信息。语法 arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-显示 ARP 缓存 arp [-v] [

2020-09-20 18:49:09 826

原创 ping--Linux常用网络命令(一)

功能目的是为了测试另一台主机网络是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答语法ping(选项)(参数)ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]参数-d 使用Socket的SO_DEBUG功能。-c<完成次

2020-09-20 18:19:10 674

原创 write函数--Linux文件管理之文件IO(五)

头文件#include<unistd.h>功能向文件中写入数据,写入文件时是从当前偏移量处开始,我们可以在open时通过O_APPEND将偏移量偏移到文件尾,或者是可以使用lseek随意设置偏移量。成功写入之后,当前偏移量会跟着变化的。函数原型ssize_t write(int filedes, void *buff, size_t nbytes);参数说明1、filedes:文件描述符2、buff:要写入的数据的缓冲区buf3、nbytes:要写入的字节

2020-09-19 23:51:19 284

原创 read函数--Linux文件管理之文件IO(四)

头文件#include<unistd.h>功能从文件中读取数据函数原型ssize_t read(int filedes, void *buff, size_t nbytes);参数说明1、filedes:文件描述符2、buff:读出来的数据的缓冲区buf3、nbytes:要读的字节数返回值失败:-1成功:成功读取到的字节数,可以小于nbytes示例#include<stdio.h>#include<fcntl.

2020-09-19 22:39:25 246

原创 lseek函数--Linux文件管理之文件IO(三)

头文件#include<unistd.h>功能用来度量从文件开始出计算的字节数,通常读写都是从文件的当前文件偏移量处开始,并且会在读写完成之后更新偏移量的位置正常打开一个文件的时候偏移量都0,如果指定了参数O_APPEND,会将偏移量移动到最后函数原型off_t lseek(int filedes, off_t offset, int whence)参数说明1、filedes: 文件描述符2、whence:SEEK_SET:设置文件偏移量为offset,从

2020-09-19 22:22:14 369

原创 creat函数--Linux文件管理之文件IO(二)

头文件#include<fcntl.h>功能创建文件,和open函数指定O_CREAT标志的功能类似,一般都是用open来创建文件函数原型int create(const char*pathname,mode_t mode);参数说明1、pathname: 要打开或创建的目标文件2、mode说明文件的访问权限(读、写、执行)。返回值失败:-1成功:文件描述符示例#include<stdio.h>#include<.

2020-09-19 20:13:33 208

原创 open函数--Linux文件管理之文件IO(一)

2

2020-09-17 23:48:27 180

转载 Linux内核启动及根文件系统加载过程

Linux内核启动及文件系统加载过程当u-boot开始执行bootcmd命令,就进入Linux内核启动阶段,与u-boot类似,普通Linux内核的启动过程也可以分为两个阶段,但针对压缩了的内核如uImage就要包括内核自解压过程了。本文以linux-2.6.37版源码为例分三个阶段来描述内核启动全过程。第一阶段为内核自解压过程,第二阶段主要工作是设置ARM处理器工作模式、使能MMU、设置一级...

2020-02-17 22:27:56 817

转载 kthread_work和kthread_worker机制

最近在看spi的驱动,驱动中有一个队列化机制,看起来不是很懂,所以就整理了下这块的内容,即kthread_work队列化机制,其实也可以理解为一种内核线程机制。我们首先来分析一下下面两个结构体kthread_worker 和 kthread_work 。结构体分析kthread_worker数据结构定义在:include/linux/kthread.hstruct kth...

2020-02-14 23:00:55 1437

原创 linux添加一个系统调用(syscall)

添加系统调用函数头文件在include/linux/syscalls.h文件中的#endif前添加自己的系统调用函数声明,内容如下:asmlinkage long sys_test(void);添加系统调用实现源码随便找一个文件,我们在这个文件中添加系统调用的源码SYSCALL_DEFINE0(test) ,内容如下:SYSCALL_DEFINE0(test){ ...

2020-02-12 22:35:11 4027 1

转载 notepad++不显示安装插件界面

64位的notepad++,下载下来似乎没有plugin manager,如果真没有可以下载plugin manager。plugin manager的下载地址:https://github.com/bruderstein/nppPluginManager/releases下载解压后,将下载的两个文件放到你安装notepad++的目录下对应的文件夹中,再打开notepad++时,plugi...

2020-01-17 21:44:26 1329

原创 manuconfig错误 Unable to find the ncurses libraries or the  required header files

make menuconfig之后错误如下所示:taozhang@taozhang-virtual-machine:~/share/4412/buildroot/buildroot-2015.05$ make menuconfigmkdir -p /home/taozhang/share/4412/buildroot/buildroot-2015.05/output/build/build...

2019-12-10 23:04:10 328

原创 ubuntu14.04下samba的安装和配置

重启防火墙sudo ufw disable//关闭防火墙sudo ufw enable //开启sudo ufw status//查看防火墙状态安装sudo apt-get install sambasudo apt-get install smbclientsudo apt-get install daemonsudo apt-get install li...

2019-12-08 20:18:22 743

原创 ubuntu开启ssh连接

我们在VM中安装好Ubuntu虚拟机后,经常需要使用Xshell、ssh等工具进行远程连接,方便我们在两个操作系统中进行文件的复制与移动,但是有时候会出现无法连接的问题,原因可能是Ubuntu中默认关闭了SSH 服务,即没有启用22号端口。1.首先查看Ubuntu虚拟机的IP地址:命令:ifconfig2.倘若ubuntu没有开启22号端口是不能连接上SSH或者XShell...

2019-12-08 12:42:57 2839

原创 gcc 编译错误:"undefined reference to 'sqrt'

程序源码如下所示:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<time.h>//判断是否为素数int isPrime(int n){ int i,k; k = sqrt(n); fo...

2019-12-01 23:49:44 2363 1

转载 sha2算法介绍和源码实现

1. SHA256简介SHA256是SHA-2下细分出的一种算法SHA-2,名称来自于安全散列算法2(英语:Secure Hash Algorithm 2)的缩写,一种密码散列函数算法标准,由美国国家安全局研发,属于SHA算法之一,是SHA-1的后继者。SHA-2下又可再分为六个不同的算法标准包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/2...

2019-12-01 22:55:46 5253

原创 SHA1算法代码实现

sha1释义:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可...

2019-12-01 21:35:45 1911 1

原创 MD5算法c语言实现

MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。MD5的典型...

2019-12-01 19:11:40 3095 2

转载 非对称加密RSA算法c语言实现

1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。相对于“对称加密算法”这种方法也叫做“非对称加密算法”。与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密 (privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对...

2019-12-01 16:04:05 4573 3

原创 对称加密AES算法c语言实现

什么是对称加密:对称加密就是指,加密和解密使用同一个密钥的加密方式。发送方使用密钥将明文数据加密成密文,然后发送出去,接收方收到密文后,使用同一个密钥将密文解密成明文读取。对称加密计算量小、速度块,适合对大量数据进行加密的场景。常见的对称加密算法有DES、3DES和AES。对称加密的缺点密钥传输问题:如上所说,由于对称加密的加密和解密使用的是同一个密钥,所以对称加密的安全性就不仅仅...

2019-12-01 13:35:13 4332 2

原创 c语言实现CRC检验算法

今天抽空学习了下crc的使用,现将测试代码贴至下方,整个代码实现如下几个功能代码中提供创建crc_table的函数,并且也有做好的crc_table的函数 首先打开一个文件,每读取1024字节,对这1024个字节获取crc校验值,然后写到一个新文件中,然后继续读取下一个1024个字节 然后对新的文件进行星通的crc校验,看和之前获取到的校验值是不是相同的#include<stdi...

2019-11-30 20:15:08 1446 1

原创 网络link状态检测

Linux系统提供了两类ioctl系统调用SIOCETHTOOL和SIOCXMIIXXX,用于控制或者获取网卡PHY的状态。这两类系统调用的实现取决于PHY驱动中对应ioctl的实现,一般的PHY驱动都会实现至少其中的一类。下面以获取网卡的Link状态来说明这两类系统调用的使用。废话不多说,直接上代码#include <stdio.h>#include <stdlib.h...

2019-11-25 22:58:26 4958

原创 ROM、RAM、FLASH、DDR、EMMC、SSD

目录ROM1.ROM2.PROM3.EPROM4.OTPROM5.EEPROM6.快闪存储器RAM1.静态随机存储器(SRAM)2.动态随机存储器(DRAM)SDRAMSDRAMDDR1DDR2DDR3flash一、存储数据的原理二、浮栅的重放电三、0 和 1四、连接和编址方式NAND flash和NO...

2019-11-17 19:16:12 8690 1

原创 w25qxx的三字节地址模式和四字节地址模式

我们知道w25qxx支持3-Byte和4-Byte模式,其实就是地址空间不同,对应的空间大小不同,3-Byte空间最大只达到128MbW25Q256FV提供了两种地址模式,可用于指定存储器阵列中的任何数据字节。 3字节地址模式向后兼容仅支持最大128Mb位数据的较早版本的串行闪存。为了在3字节地址模式下寻址256M位或更多数据,除3字节地址外,还必须使用扩展地址寄存器。4字节地址模式旨在支持2...

2019-10-28 23:09:24 8333 2

原创 Stand SPI Dual SPI 和Quad SPI

目录Stand SPI Dual SPI Qual SPIStand SPI标准SPI通常就称SPI,它是一种串行外设接口规范,有4根引脚信号:clk , cs, mosi, misoStandard SPI: CLK, /CS, DI, DO, /WP, /Hold这是全双工模式,输入和输出可以同时进行(mosi, miso分别对应的是DI和DO)Dual SPI它...

2019-10-25 22:53:14 2848

原创 W25Qxx nor flash驱动学习

如下所示是原子哥提供的w25qxx的驱动,作为学习参考非常实用,驱动比较通用,注释清晰,方便移植:#include "w25qxx.h"#include "spi.h"#include "delay.h"#include "usart.h"#include "stm32f4xx_hal_gpio.h"u16 W25QXX_TYPE=W25Q256; //默认是W25Q256/...

2019-10-24 23:25:55 1388

原创 ubuntu14.04设置静态ip

虚拟机分配网路时使用的主要是DHCP,所以每次服务器重启或者重启虚拟机时,ubuntu的IP都会改变,之前的一些SSH链接等一些网络连接都需要重新设置,很麻烦,所以只能将ubuntu的ip设置为静态ip。1、interfaces文件首先,使用用超级用户登录系统之后,编辑interfaces文件,该文件位于/etc/network目录下,可使用vi /etc/network/interfac...

2019-09-28 13:34:30 299

原创 linux I2C驱动框架之设备驱动(四)

目录i2c设备驱动结构体 模块的加载和卸载 I2C通信模板i2c设备驱动结构体I2C 设备驱动要使用i2c_driver和i2c_client数据结构并填充其中的成员函数。i2c_client 一般被包含在设备的私有信息结构体yyy_data 中,而i2c_driver 则适合被定义为全局变量并初始化,i2c_driver结构体原型如下所示:struct i2c_driver ...

2019-09-14 15:32:51 325

原创 输入设备驱动框架

目录输入设备驱动框架简介 输入核心层 设备驱动程序 输入事件驱动程序输入设备驱动框架简介输入设备(案件、键盘、鼠标、触摸屏等)是典型的字符设备。该类驱动的工作特点是,底层在进行按键或者触屏等其他动作时会产生一个中断,或者驱动中定时获取底层的操作,当检测到动作发生的时候,回去读取键值或者坐标数据,然后将数据存储在一段缓冲区中,字符设备驱动负责管理者这块缓冲区,而用户则直接通过字符设备...

2019-09-13 20:44:52 590

原创 platform设备资源与数据

目录设备端资源定义 驱动端资源获取 设备端数据定义 驱动端数据获取设备端资源定义上一篇文章(https://blog.csdn.net/qq_37600027/article/details/100802337)中,我们定义了一个platform_device设备结构体,其中有一变量resource,他描述了platform的资源数据,资源本身由resource结构体描述。结...

2019-09-13 16:03:49 484

原创 platform总线设备与驱动

目录platform总线、设备、驱动 platform设备 platform总线 platform驱动platform总线、设备、驱动Linux2.6以后的设备驱动模型中,需要关注总线设备和驱动这三个实体,总线将设备和驱动绑定,在系统注册一个设备的时候,总线会去匹配驱动,注册驱动的时候,总线回去匹配相应的设备,匹配工作由总线完成Linux中有一种总线叫做platform总线,相...

2019-09-13 14:47:45 659 1

原创 rmmod: can't change directory to '/lib/modules': No such file or directory错误解决

使用rmmod命令来卸载一个调试的驱动时,出现无法卸载驱动的错误,提示如下:rmmod: can't change directory to '/lib/modules': No such file or directory用lsmod查看时发现globalmem_platform.ko模块并没有被卸载掉。查看/lib目录,确实没有modules这个目录存在,于是在/lib/目录下创...

2019-09-13 10:13:09 2169 1

原创 module license 'unspecified' taints kernel解决方法

当加载驱动出现如下字样:module license 'unspecified' taints kernel 或Disabling lock debugging due to kernel taint需要加入MODULE_LICENSE("GPL");模块许可证,就可以避免这个错误。模块许可证(LICENSE)声明描述内核模块的许可权限,如果不声明LICENSE,模块被加载时...

2019-09-13 09:48:02 8510 1

原创 linux I2C驱动框架之I2C核心(三)

I2C 核心(drivers/i2c/i2c-core.c)中提供了一组不依赖于硬件平台的接口函数,这个文件一般不需要被工程师修改,但是理解其中的主要函数非常关键,因为I2C 总线驱动和设备驱动之间依赖于I2C 核心作为纽带。I2C 核心中的主要函数如下。 增加/删除i2c_adapter。 int i2c_add_adapter(struct i2c_adapter *ada...

2019-09-01 22:59:56 157

原创 linux I2C驱动框架之总线驱动(二)

目录总线驱动注册与加载添加设备到系统中总线驱动侧处理I2C总线通信方式总线驱动注册与加载以S3C-2410为例:由于总线控制器通常是在内存上的,所以它本身也连接在platform总线上,要通过platform_driver和platform_device的匹配来执行。S3C-2410的i2c_adapter框架是基于 platform_bus_type 的,当设备或驱动...

2019-09-01 22:33:28 398

原创 linux I2C驱动框架(一)

目录I2C核心。I2C 总线驱动。I2C 设备驱动。linux I2C代码i2c-core.c。i2c-dev.c。chips 文件夹。busses 文件夹。algos 文件夹。I2C结构体i2c_adapter 结构体i2c_algorithm 结构体i2c_driver 结构体i2c_client 结构体I2C结构体解析i2c_a...

2019-09-01 21:04:09 577

原创 构造和运行模块

目录当前进程浮点计算编译模块版本宏符号表初始化错误处理驱动参数当前进程内核模块不像应用程序那样顺序的执行,但是内核执行的大多数操作还是和某个进程相关。内核代码可以通过访问全局项current来获得当前进程的信息,current定义在<asm/current.h>中,是一个指向struct task_struct的指针,struct task_stru...

2019-08-17 14:20:07 139

空空如也

空空如也

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

TA关注的人

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