自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_46691155的博客

分享个人小精髓

  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 实现树莓派基于Linux内核驱动GPIO

首先理解树莓派基于Linux内核驱动流程和框架树莓派基于Linux内核驱动开发详解一、树莓派基于Linux内核驱动GPIO前提工作树莓派能够执行自己做好的设备文件(设备文件由驱动加载得到),那我们就可以往驱动里加入对GPIO操作,实现点灯,PWM,I2C,SPI等等对GPIO操作,那我们就需要有芯片手册、板子的电路图。对树莓派来讲,芯片手册已经写的足够详细了 所以没用到电路图。我们要点灯,所以要看芯片手册的点灯寄存器,有GPFSEL0寄存器(设置GPIO模式)GPSET0寄存器(GPIO置1

2021-08-25 13:43:18 1123

原创 树莓派基于Linux内核驱动开发详解

一、驱动认知首先理解Linux内核框图文件系统认知,Linux内核框图驱动认知的参考文章:LINUX驱动学习之什么是驱动1、什么是驱动linux内核驱动。软件层面上的驱动 广义上是指:这一段代码操作了硬件去动,所以这一段代码就叫硬件的驱动程序。狭义上驱动程序就是专指操作系统中用来操控硬件的逻辑方法的部分代码。而我们这里讲的驱动就指的是这个狭义上的驱动。2、Linux驱动的体系架构分离、分层思想驱动的上面是系统调用API驱动的下面是硬件驱动本身的实现也是基于分离、分层的思想(比如

2021-08-23 22:53:02 2098

原创 文件系统认知,Linux内核框图

一、什么是文件系统文件系统是操作系统用于明确存储设备组织文件的方法,就是一个用于管理系统的方法。这个方法就是文件管理系统,简称文件系统。可以理解为是在硬件上跑着很多个不同的程序二、文件系统的种类有哪些FAT VFAT NTFS EXT1/2/3/4 HFS BRTFS …树莓派查看文件系统命令:df -Tvfat:与boot代码相关的系统(bootloader,dernel)ext4:根目录tmpfs:内存文件系统三、 什么是分区 windows: 随意(面向普通用户PC

2021-08-23 17:39:25 460

原创 树莓派Linux内核源码

前期工作配置好交叉编译工具链交叉编译工具链详细教程树莓派Linux内核源码下载查看树莓派操作版本命令:uname -r源码下载一、嵌入式裸机和带操作系统启动过程了解C51,stm32启动过程:c直接操控底层寄存器实现相关业务,业务流程型的裸机代码x86,Intel----windows 启动过程:电源–>BIOS–>windows内核–>C,D盘–>启动程序嵌入式产品 树莓派,mini2440,mini6410,nanopi,海思,RK

2021-08-22 00:53:09 1492

原创 交叉编译工具链详解

交叉编译是什么,为什么要交叉编译一、 是什么交叉编译是在一个平台上生成另一个平台上的可执行代码。例如1、我们在windows上面编写C51代码,并编译成可执行文件代码,如xx.h在C51上面运行,然后在C51上面运行,不是在windows上面运行2、我们在Ubuntu上面写树莓派代码,并编译成可执行文件,如a.out,是在树莓派上面运行,不是在Ubuntuu Linux上面运行编译的意思是在一个平台上生成在该平台上的可执行代码交叉编译的意思C51交叉编译发生在keil(集成环境上

2021-08-20 18:45:34 4608

原创 树莓派——制作静态库、动态库

库的特点库是可执行代码的二进制形式,即将源代码转换成二进制的源代码,相当于对源代码进行了加密,别人可以看见库使用库,但是看不见库的源代码2种类型库:静态库 libxxx.a,动态库 libxxx.so静态库:在程序执行前就加入到目标程序中动态库:在程序执行时动态(临时)由目标程序去调用库制作及使用制作静态库gcc demo1.c -c//将demo1.c生成demo1.o文件ar rcs libdemo1.a demo1.o//将demo1.o生成libdemo1.a文件动态库g

2021-04-02 21:43:14 278

原创 ftp服务器搭建类似云盘功能代码(带注释详解代码)

ftp服务器使用说明运行服务端./server 本机IP地址 端口号(使用ifconfig查看本机IP 地址)运行客户端 ./client 服务器IP地址 相同端口号运行成功后可执行以下指令,实现类似云盘功能指令说明ls —— 查看服务端当下目录lls —— 查看客户端当下目录pwd —— 查看服务端当前路径quit —— 客户端退出连接cd name —— 令服务器进入到name路径下下get name —— 从服务器上下载name文件put name ——

2021-02-20 21:39:09 1695 2

原创 Linux Sockt服务器和客户端开发示例

Sockt特点1)传输数据为字节级,传输数据可自定义,数据量小(对于手机应用讲:费用低)2)传输数据时间短,性能高3)适合于客户端和服务器端之间信息实时交互4)可以加密,数据安全性强Sockt相关APIsocket——创建一个socket描述符bind——把地址和端口号组合赋给socketlisten——监听socketaccept——接收连接请求connect——发出连接请求一、socket——创建一个socket描述符1.原函数表头文件#include <sys/

2021-02-17 22:51:39 304

原创 Linux API-多线程:线程、互斥锁、条件变量

线程特点1.程序运行后是进程,而线程寄生在进程2.线程共享进程代码段、进程的公有数据3.进程有独立的地址空间。线程有自己的堆栈和局部变量,但线程没有单独的地址空间4.线程节省空间,提升效率(人多干活快)。方便线程间通信(多个线程寄生于同一个进程,线程A变换数据,线程B可以立即知道5.基于上述:进程崩溃后,不会影响其他进程。而线程是寄托于进程之上一个进程死亡则整个线程死亡线程API说明pthread_create————创建进程pthread_join————线程等待pthread_exi

2021-02-17 12:49:22 171

原创 Linux API-信号量:semget、semctl、semop

信号量特点本质是一个计数器,内存中有多少个临界资源,信号量的数字就是多少信号量基于操作系统的 PV操作,程序对信号量的操作都是原子操作信号量用于进程间同步,若要在进程间传递数据需要结合共享内存信号量APIsemget——创建信号量semctl——控制信号量semop——对信号量进行PV 操作一、semget——创建信号量表头文件#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.

2021-02-16 23:59:56 1894 1

原创 Linux API-信号:signal、sigaction、sigqueue

信号特征信号本质——是软件层次上对中断的一种模拟信号来源——(1)程序错误,如非法访问内存(2)外部信号,如按下了CTRL+C(3)通过kill或sigqueue向另外一个进程发送信号信号没有优先级,所有的信号都是平等的进程可对信号有不同的响应通过kill -l可查看所有信号信号APIsignal——捕捉信号并作出指定反应sigaction——接收信号函数sigqueue——发送信号函数一、signal——捕捉信号并作出指定反应表头文件#include <sign

2021-02-16 21:01:03 443

原创 Linux API-共享内存:shmget、shmat、shmdt、shmctl

共享内存特性共享内存存在于Linux内核中,可以使数据双向流动系统内核的所有进程都可共享此内存空间进程可直接访问共享内存,通信速度快、效率高通常用信号量来实现进程对共享内存同步访问的控制共享内存APIshmget——创建/打开共享内存shmat——将共享内存与当前进程相关联shmdt——将当前进程与共享内存间脱离关联shmctl——操控共享内存一、shmget——创建/打开共享内存1.原函数表头文件#include <sys/ipc.h>#include &l

2021-02-16 12:55:23 2259

原创 Linux API-消息队列:msgget、msgsnd、msgrcv、msgctl

消息队列特性消息队列存在于Linux内核中,可以使数据双向流动数据在内核中,即使进程结束数据依然存在消息队列实际上是消息链表,每个队列都有自己的标识符消息队列APImsgget——创建一个消息队列msgsnd、msgrcv——添加数据到消息队列、从消息队列获取数据msgctl——控制消息队列一、msgget——创建一个消息队列1.原函数表头文件#include <sys/types.h>#include <sys/ipc.h>#include &lt

2021-02-16 11:22:05 2578

原创 Linux API-管道通信:pipe-建立无名管道、mkfifo-建立具名管道

一、pipe——建立管道1.原函数表头文件#include "unistd.h"定义函数int pipe(int filedes[2]);函数说明——建立无名管道,只能用于有亲缘关系的进程通信,管道中数据不存储,数据被读走后便丢失filedes——filedes[0]为管道里的读取端,filedes[1]则为管道的写入端返回值——成功返回零。失败返回-1,错误原因存于errno中2.示例#include <stdio.h>#include <string.h&g

2021-02-15 11:48:50 597

原创 Linux API-进程:getpid、getppid、exit、wait、fork、vfork、execl、execv、system、popen

相关指令ps —— 查看系统中有哪些进程ps -aux —— 查看系统中全部进程ps -aux|grep A —— 查找A进程top —— 任务管理器界面一、getpid——取得进程识别码1.原函数表头文件#include "unistd.h"定义函数pid_t getpid(void);函数说明——getpid()用来取得目前进程的进程识别码,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。返回值——目前进程的进程识别码2.示例#include "u

2021-02-14 15:54:06 834

原创 Linux C标准库API:rewind、fseek、ftell、feof、fgetc、fgets、fputc、fputs、fread

feof——检查文件流是否读到了文件尾fgetc——由文件中读取一个字符fgets——由文件中读取一字符串fputc——将一指定字符写入文件流中fputs——将一指定的字符串写入文件内fread——从文件流读取数据fseek——移动文件流的读写位置...

2021-02-12 21:20:43 536

原创 Linux C标准库API:文件fdopen-将文件描述词转为文件指针、fileno-将文件流指针转为文件描述词、fopen-打开文件、fclose-关闭文件

一、fdopen——将文件描述词转为文件指针1.原函数表头文件#include "stdio.h"定义函数FILE *fdopen(int fildes, const char *mode);函数说明——把fildes(文件描述符)转换成文件指针后返回此文件指针fildes——文件描述符mode——必须和此文件描述符对应文件的权限一样返回值——成功返回指向该文件的文件指针。失败返回NULL,并把错误代码存在errno中2.参数取值mode参数: r 打开只读文件,该文件必须

2021-02-12 18:21:58 2065

原创 LinuxAPI-文件lseek移动光标、creat建立文件、mkstemp建立唯一的临时文件

一、lseek——移动光标操作1.原函数表头文件#include "sys/types.h"#include "unistd.h"定义函数off_t lseek(int fildes, off_t offset, int whence);函数说明:open打开文件后光标所在的位置是这个文件的读写位置fildes——文件描述词offset——根据参数whence来移动光标位置(单位字节)whence——配置此时光标所在位置返回值——成功返回目前的读写位置,也就是距离文件开头多少个字节

2021-02-11 11:42:11 233

原创 LinuxAPI-文件read读操作、write写操作

一、read——读操作1.原函数表头文件#include "unistd.h"定义函数ssize_t read(int fd,void *buf, size_t count);函数说明 read()会把参数fd 所指的文件传送count个字节到buf指针所指的内存中fd——文件的描述词buf——欲读数据缓冲区count——欲读字节数返回值——读取成功返回读取的字节数。出错返回-1,错误代码存入errno,如果在调read之前光标已到达文件末尾,则这次read返回02.示例最后例

2021-02-11 00:53:58 608 2

原创 LinuxAPI-文件open打开、close关闭

Linux——API演示open-打开文件

2021-02-10 18:09:29 750 2

PDIUSBD12实现HID鼠标源码

STM32开发PDIUSBD12实现HID鼠标功能源码,亲测可用。

2021-12-28

PDIUSBD12实现HID鼠标源码

STM32开发PDIUSBD12实现HID鼠标源码,亲测可用。

2021-12-27

空空如也

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

TA关注的人

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