![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 59
悟愚者
行客的闯但、浪迹的
展开
-
模块移植总结
模块移植总结前的准备,排查原创 2022-12-07 09:51:20 · 266 阅读 · 1 评论 -
Ubuntu 记录
2、C 问题3、常用到的指令:4、驱动代码的打印、查看(adb)adb shell //连接之后原创 2022-06-23 16:59:57 · 191 阅读 · 0 评论 -
芯片数据手册下载和阅读
http://www.datasheetschina.com EDNChina 可以下载,比较好用的,并且不用登陆啥的立创商城_电子元器件采购网上商城_领先的现货元器件交易平台-嘉立创电子商城 (szlcsc.com) https://www.szlcsc.com/http://www.21icsearch.com/ 21IChttp://partnomore.114ic.com/ 中国元件交易网http://cn.alldatasheet.com原创 2022-06-23 16:26:05 · 1561 阅读 · 0 评论 -
git的使用(开发常用到的)
git的使用1、git add text.c2、git commit 3、git push #1 jps HEAD:refs/for/#2 //#1:git remote -v :(jps) jgs ssh://chaimian@192.168.1.240:29419/repositories/KaiOS/kernel/msm-4.9 (fetch) jgs ssh://chaimian@192.168.1.240:29419/repositories/KaiOS/kernel/m原创 2022-04-18 09:47:44 · 580 阅读 · 0 评论 -
fork()函数,子进程与父进程之间的执行顺序不确定?
fork()函数,子进程与父进程之间的执行顺序不确定?回答:确实。代码如下:#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(){ pid_t retpid; retpid=fork(); pid_t pid = getpid(); if(retpid > 0){ p原创 2021-02-23 20:44:34 · 1397 阅读 · 0 评论 -
shell脚本的使用
文章目录1、shell的概述2、脚本的调用形式3、shell语法初识3.1、定义以开头:3.2、单个"#"号代表注释当前行4、变量5、预设变量6、变量的扩展6.1、判断变量是否存在7、条件测试7.1、文件测试7.2、字符串测试7.3、数值测试7.4、符合语句测试8、控制语句8.1、if 控制语句8.2、case8.3、for循环语句8.4、while8.5、until8.6、break continue9、函数1、shell的概述shell 是一种脚本语言脚本:本质是一个文件,文件里面存放的是 特定转载 2021-10-07 10:52:49 · 187 阅读 · 0 评论 -
Segmentation fault.段错误调试
1、定义指针一定要记得初始化NULLgdb bugging(gdb) start(gdb) n(gdb) l(gdb) where[easie@localhost zxxtest]$ g++ -o bugging -g bugging.cc #编译程序得到可执行文件,这里一定要添加-g才能调试[easie@localhost zxxtest]$ ./bugging #运行可原创 2021-10-06 21:54:24 · 171 阅读 · 0 评论 -
地址(总线、物理、虚拟)
总线地址:地址总线(Address Bus)是一种计算机总线,是CPU或有DMA能力的单元,用来沟通这些单元想要访问(读取/写入)计算机内存组件/地方的物理地址(cpu访问内存的范围)数据总线的宽度(16位,32位,64位),随可寻址的内存组件大小而变,决定有多少的内存可以被访问例如:一个 16位元 宽度的位址总线 (通常在 1970年 和 1980年早期的 8位元处理器中使用)到达 2 的 16 次方 = 65536 = 64 KB 的内存位址,而一个 32位单元位址总线 (通常在像现今 20..原创 2021-08-15 09:02:35 · 830 阅读 · 0 评论 -
基于框架编写驱动代码
目录一、驱动概要二、步骤(1)Ubuntu操作code:pin5driver.c(2)在树莓派上操作code:pin5test.c一、驱动概要图解二、步骤(1)Ubuntu操作1.编写驱动代码框架 :code:pin5driver.c#include <linux/fs.h> // file_opertions声明#include <linux/module.h> // module_init module_exit原创 2021-08-14 11:16:32 · 182 阅读 · 0 评论 -
带wiringPi库的交叉编译及软硬链接
正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的试试,链接库的格式也是正确的。2. 通过-I -L来指定因为链接的库的格式不对,是宿主机的平台,出现以下错误:arm-linux-gnueabihf-gcc demo2.c -I /home/CLC/lessonPI/WiringPi/wiringPi -lwiringPi/home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnuea.原创 2021-08-02 10:31:01 · 761 阅读 · 0 评论 -
Linux好用的指令
gcc server.c -I ./ -o ser头文件报错-不认识的头文件, -I ./ 就是在当前目录查找 .h 头文件(-I 这个是 i )arm-linux-gnueabihf-gcc demo1.c -I /home/CLC/lessonPi/WiringPi/wiringPi -L. -lwiringPi -o crossCompilation-L. -lwiringPi 当前目录找wiringPi库,-l 编译 wiringPi库grep gcc * -nirn 显示行号 ,i.原创 2021-08-02 09:45:41 · 157 阅读 · 0 评论 -
交叉编译的概要及实现交叉编译
1、交叉编译工具链下载位置:https://github.com/raspberrypi/不能下载,评论告诉我,发给你们2、从共享文件夹拷贝到工作目录cp /mnt/hgfs/share/tools-master.zip /home/CLC3、解压unzip tools-master.zip4、配置环境变量5、检查版本gcc -v ,主要检查arm-linux-gnueabihf-gcc交叉编译工具版本4.8.3CLC@Embed_Learn:~/lessonPi/tools-master原创 2021-07-30 23:20:48 · 1141 阅读 · 0 评论 -
YS-LDV7语音识别模块使用手册
一、 模块参数型号:YS-LDV7名称:一体化语音识别模块规格:43*29.7MM供电电压:5V (内部工作电压 3.3V)待机电流:30MA识别时电流:45MAIO 口输出:高电平为 3.3V通信方式:串口通信(5V TTL 电平,不可直接接 RS232、RS485)单片机参数:型号-->STC11L08XE 、flash-->8k、SRAM-->1280、eeprom-->32k识别词条个数:50 句工作温度:-20 至 60℃...原创 2021-07-28 16:18:35 · 1827 阅读 · 1 评论 -
树莓派串口编程c语言
一:初次使用树莓派串口编程,需要配置1.进入 cmdline.txt 文档指令:cd /boot/sudo vim cmdline.txt2.删除【】之间的部分dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait3.进入 inittab文件 ,进行修改cd原创 2021-07-27 10:17:43 · 1198 阅读 · 0 评论 -
树莓派控制继电器组硬件(4 Relay Module),有关if -else 的注意问题
relayModule.c#include <stdio.h>#include <wiringPi.h>#include <string.h>#define SWIT1 26#define SWIT2 27#define SWIT3 28#define SWIT4 29int main(void){ char cmd[16]={'\0'};原创 2021-07-27 09:52:33 · 464 阅读 · 0 评论 -
串口通信协议概要(面试)
串口通信(属于)————全双工通信方式有:全双工:同一时刻,两者都可以对数据进行发送、读取半双工:同一时刻,只有一方可以对数据发送或者接收原创 2021-07-21 15:44:42 · 231 阅读 · 0 评论 -
FileZilla文件共享(树莓派和Windows)
一、打开FileZilla.exe原创 2021-07-21 10:57:45 · 126 阅读 · 0 评论 -
Socket服务器和客户端的开发步骤
一张图解决搞定:举例:原创 2021-04-05 21:47:32 · 1297 阅读 · 0 评论 -
Linux环境下查找已经定义好的结构体所在的位置
1.首先我们要进入目录:指令:cd /usr/includeCLC@Embed_Learn:~$ cd /usr/includeCLC@Embed_Learn:/usr/include$2.查找在当前目录下的结构体:指令:grep “struct sockaddr_in {” * -nir形式:grep+空格+“结构体+空格+{”+空格+*+空格±nir注意:空格绝不能少,否则绝对找不到或者卡死在那里// n表示行号,i表示不区分大小写,r是本目录CLC@Embed_Learn原创 2021-04-06 21:50:53 · 378 阅读 · 2 评论 -
Linux 文件 查找文件的内容,实现修改
查找文件的内容,实现修改一、分为5步1、打开文件2、读取文件3、找到我们需要的内容4、修改内容,重写文件内容5、关闭文件二、代码实现如下:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.原创 2021-02-22 22:12:51 · 642 阅读 · 0 评论 -
字节序转化API、地址转化API
一、地址转换API//把字符串形式“127.0.0.1”转化为网络能识别的格式int inet_aton(const char* straddr,struct in_addr *addrp);eg:inet_aton(“192.168.124.109”,&c_addr.sin_addr);//把网络格式的IP地址转化为字符串形式char* inet_ntoa(struct in_addr sin_addr);eg:inet_ntoa(caddr.sin_addr);二、字原创 2021-04-08 18:03:28 · 261 阅读 · 0 评论 -
Linux 文件打开或创建、写/读(1-6小结)
code:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <unistd.h>#include <string.h>int main(){ int fd; char *buf = "chenhaimian come on!"; fd=open("原创 2021-05-10 09:03:02 · 98 阅读 · 0 评论 -
Linux 文件11-12 (往文件写入结构体或者整形数)
code:demo16.c#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>struct Test{ int a; char c;};int main原创 2021-05-13 08:53:23 · 96 阅读 · 0 评论 -
Linux 文件14-16 (标准c库对文件操作,fopen、fwrite、fread、fseek...)
code:demo17.c#include <stdio.h>#include <string.h>#include <stdlib.h>// FILE *fopen(const char *path, const char *mode);// size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);// size_t fread(void *p原创 2021-05-13 23:54:54 · 124 阅读 · 0 评论 -
网络编程概述
一、前言小结::网络编程,可以建立多机通讯,依靠的是地址,地址:指的是下面的两个IP地址端口号数据交流:协议(http,tcp/UDP…)单片机与PC机靠的是串口协议进行数据交流Linux的协议,TCP/UDPTCP/UDP的对比端口号作用一台拥有IP地址的主机可以提供许多的服务(比如,web服务,FTP服务、SMTP服务)这些可以通过一个IP地址来实现那么主机是怎么样区分不同的网络服务的呢?单独靠IP地址是不够的,因为IP地址与网络服务的关系是一对多得原创 2021-06-06 08:53:54 · 113 阅读 · 0 评论 -
Linux 信号signal\sigaction
转发:作者,故事狗https://www.jianshu.com/p/f445bfeea40aLinux 信号signal对于 Linux来说,实际信号是软中断,许多重要的程序都需要处理信号。信号,为 Linux 提供了一种处理异步事件的方法。比如,终端用户输入了 ctrl+c 来中断程序,会通过信号机制停止一个程序。信号概述信号的名字和编号:每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIO ”、“SIGCHLD”等等。信号定义在signal.h头文件中,信号名都定义为转载 2021-05-24 10:49:33 · 354 阅读 · 0 评论 -
Linux 进程12-13(system与popen的应用区别)
一、system函数二、popen函数三、小结原创 2021-05-19 20:36:35 · 260 阅读 · 0 评论 -
Linux 进程11【exec族函数(execl, execlp, execle, execv, execvp, execvpe)】
linux进程—exec族函数(execl, execlp, execle, execv, execvp, execvpe)原文链接:https://blog.csdn.net/u014530704/article/details/73848573exec族函数函数的作用:我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。exec族函数定义:可以通转载 2021-05-19 09:31:45 · 313 阅读 · 0 评论 -
Liunx 进程8-9(父进程等待子进程退出)
一、执行代码:demo12.c ——a.out查看a.out的状态,指令:ps -aux|grep a.outcode:demo12.c#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>int main(){ pid_t pid; int cnt=0; pid=vfork();原创 2021-05-16 16:55:49 · 193 阅读 · 0 评论 -
Linux 进程6-7(fork与vfork区别和进程的退出)
vfork也可以创建进程,与fork的区别?关键区别:vfork直接使用父进程在存储空间、不拷贝vfork保证子进程先运行,当子进程调用exit(-1)退出后,父进程才执行code:demo10.c#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>int main(){ pid_t retpid; pi原创 2021-05-16 15:31:45 · 84 阅读 · 0 评论 -
Linux 进程5(创建新进程实际应用场景和fork的总结)
fork创建一个子进程的一般目的:(1)一个父进程希望复制自己,使父、子进程同时执行不同的代码段。这在网络服务进程中是常见的——父进程等待委托者的服务请求。当这种请求到达时,父进程调用 fork,使子进程处理此请求。父进程则继续等待下一个服务请求。(2) 一个进程要执行一个不同的程序。这对shell是常见的情况。在这种情况下,子进程在从fork返回后立即调用exec(我们将在8 . 9节说明exec)。一、创建进程的实际应用场景:code:demo8.c#include <stdio.h.原创 2021-05-16 11:13:25 · 190 阅读 · 0 评论 -
Linux 进程2-4(创建进程)
概要:使用fork函数创建一个进程:pid_t fork(void);fork函数调用成功,返回两次返回值0,代表当前进程是子进程返回值非负数,代表当前进程为父进程调用失败,返回-1code:demo5.c#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(){ pid_t retpid; pid_t pid原创 2021-05-16 10:23:15 · 73 阅读 · 0 评论 -
Linux 进程1(学习进程之前需要了解的5大问题)
五大问题:1、什么是程序,什么是进程,有什么区别?2、如何查看系统中有哪些进程?3、什么是进程标识符?4、什么叫父进程,什么叫子进程?5、c程序的存储空间是如何分配的?1、什么是程序,什么是进程,有什么区别?程序是静态的概念。gcc XXX.c -o pro磁盘中生成的 pro文件,叫做程序进程是程序的一次运行活动,把程序运行起来了,系统中就多了一个进程。2、如何查看系统中有哪些进程?使用ps指令查看( ps -aux),实际工作中,配合grep来查找程序中是否存在某一个进程原创 2021-05-15 18:16:26 · 87 阅读 · 0 评论 -
fopen与open的区别(Linux 文件 13)
对于这两个名字很类似的函数,对于很多初学者来说,不容易搞清楚它们有什么不同,只知道按照函数用法使用。如果能很好的区分两者,相信大家对于C语言和UNIX系统(包括LINUX)有更深入的了解。在网上查找了一些资料,但是感觉不够全面,一些答案只是从某个角度阐述,所以让人觉得,这个也对,那个也对。但到底谁的表述更正确呢?其实都是对的,只是解释的视角不同罢了。下面结合个人的理解做一些梳理。来源从来源的角度看,两者能很好的区分开,这也是两者最显而易见的区别:open是UNIX系统调用函数(包括LINUX等)转载 2021-05-13 15:46:14 · 106 阅读 · 0 评论 -
Linux 文件实现终端cp指令
注:Linux 文件实现终端cp指令 (8、9节)文件cp的自我实现:code:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>int main(int agrc,char **a原创 2021-02-22 21:42:59 · 90 阅读 · 0 评论 -
Linux 文件描述符(7节)
文件描述符对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个负整数。当打开一个现存文件或者创建一个新文件时,内核向进程返回一个文件描述符。当读写一个文件时,用open和create返回的文件描述符标识该文件,将其作为参数传递给read和write。按照惯例,UNIX shell使文件描述符0与进程的标准输入相结合,文件描述符 1与标准输出相结合,文件描述符2与标准出错输出相结合。这是UNIX shell以及很多应用程序使用的惯例,而与内核无关。尽管如此,如果不遵照这种惯例,那么很多UNIX原创 2021-05-12 09:48:57 · 106 阅读 · 0 评论 -
.h和.c如何搭配使用
C语言1、window和Linux环境使用情况都一样2、在同个目录下3、直接在.c文件应用定义头文件就可以了例如:我在桌面目录下建立test.c和config.h,其中test.c要应用.h中定义好的变量(可以是宏定义),代码检测:config.h#define LS 0#define GET 1#define PWD 2#define IFGO 3#define LCD 4#define LLS 5#define CD 6#define PUT原创 2021-05-06 16:04:38 · 1315 阅读 · 0 评论 -
TCP、UDP对比
前言:对比原创 2021-04-05 21:54:52 · 73 阅读 · 0 评论 -
shell脚本测试
指令: vi test.sh内容:./a.out./a.out./a.out./a.out./a.out指令:chomd +x tesh.sh //编译指令: ./test.sh//运行,运行a.out 五次原创 2021-03-31 21:32:26 · 269 阅读 · 0 评论 -
Linux多线程
Linux线程介绍进程与线程典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。进程是资源分配的基本单位,它是执行程序的一个实例,在程序运行时创建;线程是程序执行的最小单位,是进程的一个执行流,一个线程由多个线程组成的。进程程序执行时的一个实例,是担当分配系统资源(CPU、内存等的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只原创 2021-03-29 20:17:45 · 198 阅读 · 0 评论