![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 56
kpler
嵌入式软件
展开
-
输入系统应用编程
在linux中使用一个结构体叫做input_event来保存上报的数据(通常还有个表示时间的结构体)ev=b,代表二进制1011代表支持0号事件,1号事件,3号事件,可以通过linux内核源码查询。可以使用cat /proc/bus/input/devices来查看输入系统的具体的设备信息。可以使用hexdump来查看/dev/input/下节点的输入。高位在前,低位在后,可以通过查看内核源码,找到他对应什么事件。0003代表abs事件,后面代表他所支持的事件。value:值,如0按下,1松开,2长按。原创 2023-12-25 21:11:23 · 390 阅读 · 0 评论 -
Makefile
1,#为注释第一个目标是最终目标目标文件:依赖文件【tab】[commond]#伪目标.PHONY:eg:out:main.o gcc main.o -o out#链接main.o:main.s gcc -c main.s -o main.o#汇编main.s:main.i gcc -S main.i -o main.s#编译main.i:main.c gcc -E main.c -o main.i#预编译.PHONY原创 2022-03-10 12:41:12 · 90 阅读 · 0 评论 -
驱动认知(1)
1,linux一切皆为文件,在这里我们需要把设备抽象为文件,linux的目录下有一个dev设备是专门用来存储着设备文件2,linux下会有一个专门的驱动链表来管理所有的设备驱动。3,设备文件会有a,文件名b,设备号(主设备号不同种类的设备,次设备号同种设备不同型号)4,驱动链表驱动插入链表的顺序由设备号检索,a,添加。(编写完驱动程序,加载到内核,调用驱动程序(用open调用))b,查找5,做驱动需要干两件事a,添加驱动1,设备名2,设备号3,设备驱动函数b,调用驱动用户态下调用原创 2022-02-05 21:28:33 · 739 阅读 · 0 评论 -
文件系统(linux采用混合索引结点文件系统)
什么是文件系统?常规认知: 根目录文件系统是操作系统用于明确存储设备组织文件的方法。以上说的方法:就是文件管理系统(程序),简称文件系统文件系统(文件管理系统的方法)的种类有哪些?FAT VFAT NTFS EXT1/2/3/4 HFS …树莓派查看文件系统的命令: df -Tvfat : boot(bootloader, kernel)ext4 : 根目录tmpfs : 内存文件系统3.什么是分区Linux: 按照功能来分区,每个分区严格存放文件(开发者)嵌入式系统可以分为.原创 2022-01-22 22:06:52 · 1248 阅读 · 0 评论 -
编译内核的相关知识
1,在PC端搭建环境。(ubantu)2,树莓派等芯片带操作系统的启动过程C51,STM32(裸机)用C直接操控底层寄存器实现相关业务。 业务流程型的裸机代码。3,带有操作系统的(X86,intel,windows)启动过程:电源->bios芯片->windows内核->C,D盘->启动程序嵌入式产品:树莓派,mini2440,mini6410,nanopi,海思,RK(瑞芯微)启动过程: 电源-》BootLoader(引导操作系统启动)-》Linux内核-》文件系统原创 2022-01-19 23:20:24 · 1032 阅读 · 0 评论 -
关于交叉编译的一些知识和操作
1,为什么要交叉编译,交叉编译是什么交叉编译 是在一个平台上生成另一个平台上的可执行代码。我们再windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上面运行,不是在ubuntu linux上面运行编译:是在一个平台上生成在该平台上的可执行代码C51 交叉编译的发生在keil(集成环境上面)stm322,交叉编译需要用到什么交叉编译器、交叉编译原创 2022-01-13 17:26:58 · 543 阅读 · 0 评论 -
关于linux系统上scp命令报错的两个问题及Linux常用命令
1,出现这种情况直接输入命令ssh -o StrictHostKeyChecking=no 192.168.31.135(ip地址为本地地址)之后便能正确使用2,出现这种情况需要先使用命令rm -rf ~/.ssh/known_hosts解决这个问题后,又会出现第一个问题按照方法一就可以解决...原创 2022-01-13 16:19:02 · 2814 阅读 · 0 评论 -
C++基础语法学习函数模块化编程(在ubutun下vim中编写)
作用:让代码结构更加清晰函数分文件编写一般有4个步骤1,创建后缀名为swap.h的头文件2,创建后缀名为swap.cpp的源文件和主函数mainpro.cpp3,在头文件中写函数的声明4,在swap.cpp中写函数的定义swap.cpp文件源码#include"swap.h"int swap(int a,int b){ cout<<"a="<<a<<"b="<<b<<endl; return a>b?a:b;}原创 2021-04-21 09:56:13 · 105 阅读 · 0 评论 -
C语言基于类与对象的简单工厂模式(树莓派)
C语言中一个结构体代表一个类,用此结构体命名一个变量称为该类的一个详细对象C语言的简单工厂模式:此处自己的理解为将各个模块功能封装起来用链表的方式将各个模块进行连接,这样程序的可拓展性和纠错性大大提高。#include"contralDevices.h"#include"InputCommand.h"struct devices *findDeviceByname(char *name ,struct devices *phead){ struct devices *tmp = phead;原创 2021-02-14 15:53:28 · 241 阅读 · 0 评论 -
树莓派linux系统学习静态库与动态库
linux静态库静态函数库是在程序执行前就加入到目标程序中去了优点:运行快缺点:占内存linux动态库动态函数库,是在程序执行时动态由目标程序去调用优点:占内存小缺点:运行慢静态库的制作a,gcc 功能函数.c -c 生成功能函数.o文件例 gcc func.c -cb,ar rcs xxxx.a 功能函数.oxxxx.a就是要生成的静态库文件名字随便取ar rcs libfunc.a func.o使用静态库 gcc main.c -lfunc -L ./ -o test此原创 2021-02-07 16:10:08 · 225 阅读 · 0 评论 -
ftp云盘(linux阶段)
功能:实现在局域网里收发文件ls:查看当前文件lls:查看服务器文件cd+空格+文件名(…),服务器进入文件夹或返回上一级lcd+空格+文件名(…),本地进入文件夹或返回上一级get+空格+文件名:得到服务器文件put+空格+文件名: 发送给服务器客户端#include<stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include &l原创 2021-01-31 18:11:51 · 723 阅读 · 0 评论 -
linux系统socket网络编程学习总结
用到的apisocket();bind();listen();accept();read();write();1,socket():用于创建一个socket描述符头文件#include <sys/types.h>#include <sys/socket.h>函数原型int socket(int domain, int type, int protocol);domain:指明所使用的协议族,通常为AF_INET,表示为互联网协议族type:指定socket原创 2021-01-27 19:27:41 · 346 阅读 · 0 评论 -
linux多线程初步学习总结(完)
这篇文章很好:https://www.cnblogs.com/xiehongfeng100/p/4620852.html1,线程常用的apipthread_create()创建pthread_exit()退出pthread_join()等待另外一个线程结束A,pthread_create()头文件#include <pthread.h>函数原型int pthread_create(pthread_t *thread, const pthread_attr_t *attr,voi原创 2021-01-24 18:41:26 · 296 阅读 · 0 评论 -
linux进程间通信学习总结(完)
1,无名管道函数pipe()头文件#include <unistd.h>函数原型int pipe(int pipefd[2]);pipefd[2]:定义个整型数组其中pipefd[1]为读,pipefd[2]为写,一个进程只能读或则只能写(父与子通信)2,命名管道函数原型mkfifo [OPTION] 例如 mkfifo("./file",0600)file:创建的管道文件名称0600:权限使用文件进行两个进程之间的通信师上官可编程...原创 2021-01-19 16:49:17 · 790 阅读 · 0 评论 -
linux进程学习总结(完)
1,使用ps指令来查看当下进程。实际工作中配合grep来查找程序中是否存在某个进程。2,使用top指令查看,类似windows任务管理器3,进程标识符:每一个进程都有一个非负整数表示唯一ID,叫做pid.pid = 0:称为交换进程 作用:进程调度pid = 1:init进程,作用系统初始化(类似于KTV点歌机一开机就是点歌界面)相关函数a,getpid()为获取进程进程标识符b,getppid()获取父进程进程标识符头文件#include <sys/types.h>#inc原创 2021-01-15 21:04:38 · 392 阅读 · 1 评论 -
linux文件编程学习汇总(完)(师上官可编程)
1,打开并创建文件的命令open()头文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);返回值为一个整型数意思是描述该文件的一个描述符pathname:为要打开文件的名字,flags:可以原创 2021-01-09 18:48:55 · 1708 阅读 · 1 评论