自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 树莓派Linux内核开发基础准备

1:安装树莓派内核源码(网址):github.com/raspberrypi/ uname -r:查看树莓派版本号 安装Linux相应版本:rpi-4.14.y2:从共享文件夹拷贝到工作目录cp /mnt/hgfs/share/tools-master.zip . (交叉编译安装包) cp /mnt/hgfs/share/linux-rpi-4.14.y.zip. (内核源码安装包)解压:unzip tools-master.zip un...

2021-01-14 12:41:20 195

原创 ubuntu18-04虚拟机搭建VMware版本及基础程序安装

Ubuntu镜像安装:下载安装包创建新的虚拟机 //(需要选择的步骤如下,其余步骤随机,直接点击下一步就可以)自定义安装浏览:找到镜像包位置命名虚拟机,位置放到磁盘较大的空间(不要放在 c 盘)自用桥接模式(其它方式会配置也可以)安装vim:sudo apt-get install vim安装其余基础程序直接百度即可:例如安装gcc,ifconfig安装软件出现如下错误解绝如下:sudo r...

2021-01-08 11:56:33 294

原创 树莓派交叉编译基础操作(带wiringPi库)

一:交叉编译是什么,为什么要交叉编译(1)交叉编译是什么? 交叉编译:是在一个平台上生成另一个平台上的可执行代码。 我们在windows上面编写C51代码,并编译成可执行代码,如xx.hex, 是在c51上面运行,不是在windows上面运行 我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,...

2020-12-28 19:14:50 391

原创 树莓派wiringPi库应用

安装>tar xfz wiringPi-98bcb20.tar.gz //98bcb20为版本标号,可能不同>cd wiringPi-98bcb20>./build验证wiringPi的是否安装成功,输入gpio -v,会在终端中输出相关wiringPi的信息。否则安装失败。编译 和运行gcc LEDtest.c -lwiringPi //-lwiringPi 指定在wiringPi库下运行 //使用C语言编程查看引...

2020-12-27 16:19:27 244

原创 Linux指令

linux下cp -rf 的 -rf 意思是强制递bai归复制。-r:若给出的文件是一个目录文件,此时将复制该目录下所有的子目录和文件。-f:覆盖已经存在的目标文件而不给出提示。

2020-12-27 15:28:53 471

原创 串口通信协议概述(面试)

串口通信:全双工通信全双工与半双工的区别全双工:同一时间两者都可以说话 半双工:同一时间只有一者可以说话串口通信要求语言要一致(数据格式)//{ 数据位,停止位,奇偶校验位 } 语速要一致(波特率)...

2020-12-22 09:31:45 1067

原创 gets和scanf函数区别

不同点:scanf不能接受空格、制表符Tab、回车等; 而gets能够接受空格、制表符Tab和回车等; scanf :当遇到回车,空格和tab键会自动在字符串后面添加’\0’,回车,空格和tab键仍会留在输入的缓冲区中。 gets:可接受回车键之前输入的所有字符,并用’\0’替代 ‘\n’.回车键不会留在输入缓冲区中。# include <stdio.h>int main(void){ char str[30]; char ch; printf(".

2020-12-21 15:42:51 611

原创 树莓派外设开发编程

树莓派外设开发接口文档参考WiringPi库(Linux动态库:so 静态库:.a) API printf(c标准库)https://www.cnblogs.com/lulipro/p/5。992172.html树莓派的接口: 驱动IO口:input output 对主控来说 Input:人体,烟雾,火焰,震动等 Output:继电器,蜂鸣器 PWM:电机调速,灯光调明亮度语音识别模块,液晶屏 串口uart IIC SPI IIS 其他特定硬件的接口:flash...

2020-12-21 09:22:12 132

原创 Linux库相关概念及编程(面试)

一:库https://www.cnblogs.com/sunsky303/p/7731911.htmlhttps://blog.csdn.net/wk_bjut_edu_cn/article/details/81735956(1):静态库静态函数库,是在程序执行前(编译)就加入到目标程序中去了 ;优点: 运行快发布程序无需提供静态库,因为已经在app中,移植方便缺点:大(2):动态库动态函数库,是在程序执行时动态(临时)由目标程序去调...

2020-12-20 15:08:24 67

原创 Linux库分文件编程(面试)

分文件编程案例:好处:分模块的编程思想 网络 a 超声波b 电机c a.功能责任划分 b.方便调试 c.主程序简洁main.c //主函数config.c //功能函数config.h //config.c 中函数的声明主函数中需要包含 "config.h" 头文件;运行时:gcc config.c main.c //两个文件一起编译&lt...

2020-12-20 13:45:37 73

原创 树莓派登录方式

一:树莓派刷机二:树莓派登录1:HDMI视频线 连接到显示器2: 串口 设备破解默认情况,树莓派的串口和蓝牙连接。想办法断开蓝牙连接,把串口用来数据通信https://blog.csdn.net/syjsxxjy/article/details/80774262 a.观看树莓派的启动过程,字符 b.串口登录树莓派 默认账号:pi 默认密码:raspbe...

2020-12-19 14:58:41 151 1

原创 树莓派和Windows的FileZilla文件共享

主机:sftp://--------- 方式写入,否则文件共享可能失败或丢失

2020-12-19 14:26:01 112 1

原创 Linux线程条件控制

创建条件:int pthread_cond_init(pthread_cond_t *cv,const pthread_condattr_t *cattr);返回值:函数成功返回0;任何其他返回值都表示错误等待条件:int pthread_cond_wait(pthread_cond_t *cv,pthread_mutex_t *mutex);返回值:函数成功返回0;任何其他返回值都表示错误触发条件:int pthread_cond_signal(pthread_cond_t *cv)..

2020-10-12 16:17:37 97

原创 Linux互斥锁

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr); 创建锁 int pthread_mutex_destroy(pthread_mutex_t *mutex); 销毁锁 int pthread_mutex_lock(pthread_mutex_t *mutex); 加锁 int pthread_mutex_unlock(pthread_mutex_t *mutex); 解锁.

2020-10-12 15:56:55 105

原创 Linux信号

信号的处理:信号的处理有三种方法:忽略,捕捉,和默认动作。 SIGKILL和SIGSTOP两种信号不能被忽略和捕捉。捕捉信号:执行自定义动作typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler); 信号 函数忽略信号:SIG_IGNsignal(SIGINT...

2020-10-11 13:46:22 191

原创 消息队列

#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>int msgget(key_t key, int msgflg); // 创建打开消息队列int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); /...

2020-10-10 10:59:58 116 1

原创 linux线程创建

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); //线程创建函数 void pthread_exit(void *retval); //线程退出函数 int pthread_join(pthread_t thread, void **retval);...

2020-10-10 10:59:03 90

原创 共享内存

int shmget(key_t key, size_t size, int shmflg); //size:共享内存至少分配1兆(1024)大小//创建或获取一个共享内存,成功返回共享内存ID,失败返回-1。void *shmat(int shmid, const void *shmaddr, int shmflg);//连接共享内存到当前进程的地址空间; //成功返回指向共享内存的指针,失败返回-1。int shmdt(const void *shmaddr);//断开与共享内存的连.

2020-10-04 16:31:10 237

原创 创建命名管道

fifo:命名管道,它是一种特殊文件类型。特点:fifo可以在无关进程之间交换数据,与无名管道不同。 fifo有路径名,以一种特殊的设备文件形式存在于文件系统中。命名管道间的数据通信:当open一个fifo时,是否设置非阻塞标志(O_NONBLOCK)的区别:若没指定O_NONBLOCK,只读open要阻塞到其他进程为写而打开此 fifo。 只写open同上,也要阻塞到其他进程为读而打开此 fifo。#include <sys/types.h>#includ..

2020-10-02 10:22:58 279

原创 无名管道

无名管道:它是半双工的(数据只能在一个方向上流动)具有固定的读端和写端。 它只能用于父子进程或兄弟进程之间的通信。 它可以看成一种特殊的文件,它的读写可以使用read和write等函数;但它不是普通文件,不属于其他任何文件系统,只存在于内存中。 管道数据读走就没了。建立管道:int pipe(int fd[2]);返回值:成功返回0,失败返回-1。当一个管道建立时,它会创建两个文件描述符,f[0]为读而打开,f[1]为写而打开。fd[0]对应读: read(fd[0],__,__);.

2020-09-30 11:29:20 164

原创 exec族函数(初学者)

#include <unistd.h> extern char **environ; int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg,..., char * const envp[]); int execv(const char *path.

2020-09-29 11:12:39 152

原创 5:文件操作之实现cp指令

cp指令执行步骤:打开需要被拷贝的文件 读取文件内容 打开/创建要拷贝到的文件 将读取到的内容写入要拷贝的文件 关闭两个文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>.

2020-06-06 21:34:13 250

原创 4:文件操作原理简述

#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>int main(){ int fd; char *readbuf[128]; int n_read = read(0,readbuf,5); int n_write = write(1,readbuf.

2020-06-06 16:29:40 127

原创 3:文件的光标移动

#include <sys/types.h>#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);lseek(int fd, off_t offset, int whence);注:lseek(文件,偏移值,光标位置);偏移值:为 0 不移动,大于 0 (正数)向后移动,小于 0 (负数)向前移动光标位置:SEEK_SET 文件头 S...

2020-06-06 15:19:15 161

原创 2:文件的写入和读取操作

ssize_t write(int fd, const void *buf, size_t count);ssize_t read(int fd, void *buf, size_t count);write(要写入的文件,写入的内容,内容的长度);read(要读取的文件,读取到指定的空间,读取的长度);write和read返回值:字节数write函数执行完以后光标会移到最后,此时read读取为空需要重新打开文件或将光标移动(lseek 函数)到文件头位置当写...

2020-06-04 15:43:18 226

原创 C语言:sizeof 和 strlen 的区别

sizeof和strlen的区别strlen计算字符串的长度,以'\0'为字符串结束标志sizeof是分配的数组实际所占的内存空间大小,不受里面存储内容例如 :char *str = "1111111abcd";char str1[9] = {1};sizeof(str) = 4; //是指指针所占的字节大小,在c/c++中一个指针占4个字节(32位系统)sizeof(str1) = 9;sizeof()是运算符,由于在编译时计算,因此sizeof不能用来返回动态分配..

2020-06-04 14:57:54 210

原创 LINUX :(一)文件操作:1:文件的打开及创建

#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);open函数的头文件可在Linux下用 man函数查找:man 2 open文件打开函数:open(要打开的文件名,打开方式);...

2020-06-03 21:14:55 472

空空如也

空空如也

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

TA关注的人

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