自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 问答 (2)
  • 收藏
  • 关注

原创 linux-C 重定向句柄操作(dup,duo2,dup3)详解及demo

dup类函数的作用复制文件描述符1.dupint dup(int oldfd);参数:oldfd 被复制的文件描述符返回值:成功后,将返回新的文件描述符。 如果出错,则返回-1,并正确设置errno。详解dup()系统调用生成文件描述符oldfd的一个副本,从未使用的文件描述符当中选取最小的文件描述符作为新的文件描述符。当成功返回后,旧的文件描述符和新的文件描述符可以互换使用,这两个描述符指向了同一个打开的文件描述符(见系统调用open()),他们共享同一个文件偏移量和文件

2020-07-31 10:57:05 872

原创 source insight4.0乱码问题最快解决方案一次更改永久有效

字体文件.xml网盘:https://pan.baidu.com/s/10qEVbSf8d9HXzarc8AD7_g提取码:8abp1.把字体文件放到sourceinsight的setting目录下2.加载字体文件3.打开4.continue5.界面颜色变化成功,配置成功,此时有可能加载的配置文件还是乱码需要修改字符编码6.修改字符编码7.把所有的文件字符编码都修改8.此时完成...

2020-07-30 12:00:43 1443

原创 Linux进程间通信--消息队列

system v ipcipcskey:通信双方约定好的KEY值,32位的整形数据id :系统会为IPC分配一个唯一的ID,通信双方都需要知道ID才能使用当前IPC方法,创建者会返回当前ID值, #include <sys/types.h> #include <sys/ipc.h> key_t ftok(const char *pathname, int proj_id); . proj_id key 31-24 proj_id 低8位

2020-07-29 23:09:46 329

原创 Linux-进程间通信之无名管道和有名管道demo

linux-IPCsLinux进程间通信方式汇总目前已包含的方式管道(PIPE) 无名管道FIFO(有名管道)XSI消息队列XSI信号量XSI共享内存POSIX信号量域套接字(Domain Socket)信号(Signal)互斥量(Mutex)sendmsg其中信号(signal)和信号量(semaphore)本质上并不算是进程间通信方式,应该是进程间同步的方式,但是也可以起到一定的通信作用,故也列在上面。另外普通的mutex是作用线程间同步用的,但是可以将进程A和进程B共享

2020-07-29 19:25:39 486

原创 编译时遇到fatal error: openssl/ssl.h 以及 libssl-dev 安装失败 解决方案 亲测有效

记录下问题,便于日后解决在编译相关资源时候,提示fatal error: openssl/ssl.h: 没有那个文件或目录经过网上相关查询,需要安装类似如下工具:sudo apt-get install cmakesudo apt-get install libcurl4-openssl-devsudo apt-get install opensslsudo apt-get install libssl-dev build-essential zlibc zlib-bin libidn

2020-07-27 13:05:37 2348

原创 守护进程与日志进程

守护进程守护进程:在后台运行代码设计的守护进程:第一步:调用umask将文件模式创建屏蔽字设置为0.第二步:调用fork,父进程退出。保证子进程不是话首进程,从而保证后续不和其他终端关联。第三步:设置新会话。第四步:更改工作目录到根目录第五步:关闭标准输入,重定向所有标准(输入输出错误)到/dev/NULL使用系统守护进程,实现授时服务器vi /etc/xinetd.d/service date_mine{ disable = no type = UNLISTED so

2020-07-25 20:02:20 544

原创 Linux--exit,on_exit,wait,waitpid,函数的使用

回收进程资源exit(0) _exit(0);return int on_exit(void (*function)(int , void *), void *arg);on_exit 在退出的时候可以绑定一个回调函数,在退出的时候调用回调函数#include<stdio.h>#include<errno.h>#include<string.h>#include<unistd.h>#include<stdlib.h>

2020-07-25 18:57:41 399

原创 Linux进程之exec镞函数的介绍(execl, execlp, execle, execv, execvp, execvpe)

exec族函数函数的作用:我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。exec族函数原型: #include <unistd.h> extern char **environ; int execl(const char *path, const char *arg, ...

2020-07-25 17:53:22 413

原创 Linux进程与task_struct详解

什么进程?Linux中事务管理的基本单元 代表资源的总和进程的属性独立性,每个进程都是独立的资源集合内核中进程的结构体(0.1版本)struct task_struct{/* these are hardcoded - don't touch*/long stat; //进程的运行状态 (-1 unrunnable ,1 runnable , 0 stopped)long counter; //进程的执行时间片,表示当前进程能够占用CPU资源的时间long sig

2020-07-25 17:36:47 616

原创 Linux有趣指令--跑火车--看电影--牛牛--天气预报,一起来放松一下吧

1.跑火车安装命令sudo apt install sl如果提示被中断等信息那就输入这条命令吧sudo dpkg --configure -a在安装一次输入命令:sl ,小火车呼啸而过,哈哈哈哈2.Linux看电影下面我们一起来观看ASCII电影吧输入命令:telnet towel.blinkenlights.nl稍等加载一会会注意:退出时“ ctrl + ] ”然后在telnet的提示下输入quit 就可以退出啦3.牛牛和你聊聊天1.我们获取root权限,重置U

2020-07-24 15:41:11 4985 3

原创 树莓派博通BCM2835芯片手册导读与IO口驱动代码调试和测试

1.树莓派寄存器的介绍GPFSEL0 GPIO Function Select 0: 功能选择 输入/输出GPSET0 GPIO Pin Output Set 0 : 输出0GPSET1 GPIO Pin Output Set 1 : 输出10 = No effect1 = Set GPIO pin nGPCLR0 GPIO Pin Output Clear 0: 清零0 = No effect1 = Clear GPIO pin nGPCLR1 GPIO

2020-07-23 19:09:40 922 5

原创 运算符的计算(按位与 按位或 异或 取反)

按位与运算符 [ & ]运算规则:依次比较两个二进制数的每一位,,按照有0则0,否则为1的规则,依次计算出一个新的二进制数即:0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1例: 39 & 21 --> 0010 0111 & 0001 0101 --> 0000 0101按位或运算符 [ | ]运算规则:依次比较两个二进制数的每一位,,按照有1则1,否则为0的规则,依次计算出一个新的二进制数即

2020-07-23 18:13:55 991 2

原创 总线地址,物理地址,虚拟地址

总线地址:地址总线 (Address Bus;又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。通俗点来讲就是CPU能够访问内存的范围。表现得现象有:. 装了32位的win7的系统,明明内存条8G,可是系统只识别了3.8G ,装了64位系统才能识别8G因为 32位操作系统只能表示/访问:4294967296 bitbit 4,294,967,296Kb 4,192,304Mb

2020-07-23 16:46:06 1645

原创 用命令的方式生成字符设备文件

手动生成设备字符文件sudo mknode pin4 c 8 11 mknode:生成设备文件pin4: 设备文件名c:字符设备8:主设备号11:次设备号

2020-07-23 13:52:59 286

原创 树莓派驱动代码精简版以及驱动代码的编译和测试

驱动代码精简demo#include <linux/fs.h> //file_operations声明#include <linux/module.h> //module_init module_exit声明#include <linux/init.h> //__init __exit 宏定义声明#include <linux/device.h> //class devise声明#include <linux/uac

2020-07-23 13:52:06 1501 2

原创 Linux的文件系统bootload,para,kernel,根分区

文件系统1. 什么是文件系统? 常规认知: 根目录 文件系统是操作系统用于明确存储设备组织文件的方法。 以上说的方法:就是文件管理系统(程序),简称文件系统 2. 文件系统(文件管理系统的方法)的种类有哪些? FAT VFAT NTFS EXT1/2/3/4 HFS .... 树莓派查看文件系统的命令: df -T vfat : boot(bootloader, kernel) ext4 : 根目录 tmpfs : 内存文件系统3. 什么是分区? windows:

2020-07-23 12:07:18 946

原创 树莓派内核源码得获取,配置, 编译,裁剪

本文介绍如何获取linux内核代码,并完成编译、内核替换。1.树莓派源码的获取,交叉编译等工具树莓派的github主页:https://github.com/raspberrypi,里面包含了linux源码、交叉编译工具链等内容。对于我们要用到的有两个仓库:https://github.com/raspberrypi/linux 内核源码https://github.com/raspberrypi/tools 交叉编译工具链(仅在交叉编译时用到)注:1、树莓派里安装的系统镜像版本要和kerne

2020-07-23 11:51:33 4688 5

原创 Linux -Ubuntu命令大全及精简介绍

常用命令ifconfig -a或ifconfig查看ipcd /home/用户名/Deskto切换到桌面文件/文件夹管理ls 列出当前目录文件(不包括隐含文件)ls -a 列出当前目录文件(包括隐含文件)ls -l 列出当前目录下文件的详细信息cd … 回当前目录的上一级目录cd - 回上一次所在的目录cd ~ 或 cd / 回当前用户的宿主目录mkdir 目录名 创建一个目录tuoch 文本名 创建一个文本rmdir 空目录名 删除一

2020-07-23 09:09:46 637 1

原创 Linux内核代码目录树的结构及具体作用

查看Linux内核代码的目录树通常切换到根目录下我们看到的文件有我们可安装tree可查看的更加清晰sudo apt-get install tree然后切换到根目录,执行tree命令tree每个文件夹是干什么的呢?arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PC

2020-07-23 08:56:47 588

原创 keil4软件的下载与安装

1.keil4的下载网盘:https://pan.baidu.com/s/1pDEt3SF_B_feD1220AHx0A提取码:uyj82.解压3.打开安装包 next4.agree next5.选择安装位置 next6.随便填写内容 next7.finish8.以管理员身份运行9.点击file -->License Mangent10.打开keyGen11.复制CID 并把复制的CID填写带keyGen上12.点击Cenerate生成密钥13

2020-07-22 20:56:53 90528 69

原创 Windows,嵌入式产品,安卓的启动相关流程

C51,STM32(裸机)>>>>>>>>C直接操控底层寄存器实现相关业务。 业务流程型的裸机代码遥控灯: while(1)垃圾桶:WemosD1 LOOP恩智浦智能车: stm32X86,Intel windows:启动过程:电源 ->> BIOS ->>windows内核->>C,D盘->> 程序启动(比如QQ等)嵌入式产品:(树莓派,mini2440, mini6410,nanopi,海思

2020-07-22 18:58:15 202

原创 Linux的软连接和硬链接

什么是软链接?软链接文件有类似于Windows的快捷方式。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。你选定的位置上生成一个文件的镜像,不会占用磁盘空间如何生成软链接?ln -s 源文件 目标文件。ln -s libwiringPi.so.2.50 libwiringPi.so 什么是硬链接?硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode

2020-07-22 18:40:49 487

原创 如何把交叉编译的文件发送到目标主机上?

宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机(比如Ubuntu)目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。(比如树莓派)如何把宿主机编译好的文件发送到目标机呢?scp 文件名 开发板用户名@开发板地址:开发板的绝对路径scp clientInPi [email protected]:/home/pi...

2020-07-22 18:13:05 533

原创 树莓派交叉编译

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

2020-07-22 18:00:15 919

原创 树莓派超声波模块测距及C语言demo

超声波硬件超声波原理demo#include <wiringPi.h>#include <stdio.h>#include <sys/time.h>#define Trig 27#define Echo 28void ultraInit(void){ pinMode(Echo, INPUT); //设置端口为输入 pinMode(Trig, OUTPUT); //设置端口为输出}float

2020-07-22 16:54:16 766

原创 树莓派之继电器的使用

准备工作1.树莓派2.继电器1.接线接上之后电源灯亮起 如果没亮请检查接线2.编写代码控制IO口#include <stdio.h>#include <wiringPi.h>int main(){ int cmd; wiringPiSetup(); //初始化硬件 pinMode(27,OUTPUT); //初始化引脚为输出口 digitalWrite(27,HIGH); //

2020-07-22 14:53:09 1957

转载 树莓派Wiringpi库介绍

Wiringpi库详解转载自https://www.cnblogs.com/lulipro/p/5992172.html 非常详细

2020-07-22 12:38:32 640

原创 树莓派外设接口简单介绍

树莓派的接口IO口:Input Ouput 对于主控芯片来说Input:人体红外传感器,烟雾传感器,火焰传感器,震动传感器Output: 继电器,蜂鸣器PWM:电机调速,调整灯光明亮度串口uartSPIIIS其他特定硬件接口:flash其他芯片:Nanopi:LinuxS3c2410,2440,6410Tiny210 tiny4412海思方案,瑞芯微方案,移远方案C51,STM32,Arduino,WemosD1:没有OS(Linux) 纯裸机开发...

2020-07-22 12:20:20 1936

原创 Linux 动态库 静态库精简介绍

1.库是什么?库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。就是将源代码转化为二进制格式的源代码,相当于进行了加密,别人可以使用库,但是看不到库中的内容。2.静态库:静态函数库时在程序执行之前(编译)就加入到目标程序中去了Linux中命名系统中静态库库的规则:静态库文件名的命名方式是“libxxx.a”,库名前加”lib”,后缀用”.a”,“xxx”为静态库名。优缺点:优点:1 . 静态库被打包到程序中加载速度快2 .发布程序无需提供静态库,应为已经在app中,移植

2020-07-22 11:31:22 318

原创 Linux分文件编程思想

实现一个项目需要实现很多的功能,那么这些功能不可能在一个".c"文件下实现,需要多个".c"文件来共同实现,但是程序的入口只有一个,就体现了分文件编程的重要性。在主函数中调用其余的功能函数。优点:1.分模块的的编程思想,各做各的事2.责任划分明确3.方便调试4.主程序简洁例如:编写一个计算器,它有主函数和功能函数:功能函数:jia.cjian.ccheng.cchu.c程序主函数:main.c编译gcc main.c jian.c jia.c cheng.c chu.

2020-07-22 10:35:52 306 1

原创 树莓派更新国内源

1.编辑sources.listsudo nano /etc/apt/sources.list用#注释或直接删除原有的内容,新增两条:deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi#deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-fre

2020-07-21 15:58:30 416

原创 图形方式登录树莓派

1.以串口方式登录树莓派或ssh方式2.安装 xrdpsudo apt-get install xrdp3.windows10 打开远程桌面连接4.输入树莓派的账号密码默认是: pi raspberry

2020-07-21 15:48:57 282

原创 SSH方式登录树莓派

1.确保树莓派已经入网了2.通过串口打开树莓派的SSH功能输入命令:sudo raspi-config选择Interfacing Options选择SSH选择yes3.打开MobaXterm点击Session3.打开ssh4.输入账号密码5.此时成功以ssh的方式成功登录树莓派...

2020-07-21 15:32:36 1029

原创 树莓派固定IP地址

1.给树莓派开机2.输入命令sudo nano /etc/rc.local在文件的末尾 exit 0 之前添加 ifconfig wlan0 + 你自己ifconfig看到的ipCtrl + o 保存(按下之后会询问是否保存在文件 此时按下Enter)Ctrl + x 退出4.重启 查看IP是否和之前设置的一致此时我这里设置成功...

2020-07-21 15:13:12 1977 4

原创 树莓派链接WIFI 入网

材料:一只树莓派3B+(有WIFI模块,以前版本有些没有WIFI模块)、一台主机、一台无线路由器1.打开树莓派2.输入命令sudo nano /etc/wpa_supplicant/wpa_supplicant.conf在文件中添加配置信息ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1country=CN network={ ssid="你的无线网名字" //你家WiF

2020-07-21 15:05:23 589 4

原创 树莓派--串口登录

默认情况,树莓派与蓝牙连接,我们需要断开蓝牙连接,通过串口进行数据通讯,下面就是具体步骤1.打开SD卡的磁盘2.修改config.txt文件修改系统配置,启用串口登录树莓派1.打开SD卡根目录的"config.txt"文件,将以下内容添加在最后并且保存。(文件所在位置请参考网线方案那篇文章)dtoverlay=pi3-miniuart-bt这样就停止了蓝牙,解除了对串口的占用。2.然后再修改根目录的"cmdline.txt",将里面的内容全部替换成以下内容,以防万一,请先备份好这个文件的原

2020-07-21 14:49:58 4866 11

原创 树莓派 刷机

树莓派刷机刷机工具TF卡最好是8G与树莓派兼容1.刷机软件网盘:https://pan.baidu.com/s/1Pxfh4TNUY736XIUvGPNySQ提取码:ilny2.下载软件解压 打开软件3.插入读卡器 选择要刷机的磁盘注意注意:刷机的磁盘一定要是TF卡千万别把电脑磁盘给刷机了刷机所需文件就是刚刚压缩包内的.img文件:4.点击write 此时就开始刷机了,大概五分钟左右5.刷机完成点击OK6.退出 此时刷机完毕...

2020-07-21 14:19:18 848

原创 struct tcphdr--TCP首部

struct tcphdrstruct tcphdr { __be16 source; __be16 dest; __be32 seq; __be32 ack_seq;#if defined(__LITTLE_ENDIAN_BITFIELD) __u16 res1:4, doff:4, fin:1, syn:1, rst:1, psh:1, ack:1, urg:1, ece:1, cwr:1;#elif defined(__BIG_ENDIAN_BITF

2020-07-20 17:03:08 1103

原创 struct iphdr--IP头结构体

IP首部在Linux内核中的结构体struct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD) __u8 ihl:4, version:4;#elif defined (__BIG_ENDIAN_BITFIELD) __u8 version:4, ihl:4;#else#error "Please fix <asm/byteorder.h>"#endif __u8 tos; __be16 tot_len; __be16

2020-07-20 16:59:24 2111

原创 Linux中AIO设计框架

概述aio异步读写是在Linux内核2.6之后才正式纳入其标准。之所以会增加此模块,是因为众所周知我们计算机CPU的执行速度远大于I/O读写的执行速度,如果我们用传统的阻塞式或非阻塞式来操作I/O的话,那么我们在同一个程序中(不用多线程或多进程)就不能同时操作俩个以上的文件I/O,每次只能对一个文件进行I/O操作,很明显这样效率很低下(因为CPU速度远大于I/O操作的速度,所以当执行I/O时,CPU其实还可以做更多的事)。因此就诞生了相对高效的异步I/OAIO编程方法AIO 接口的 API 非常

2020-07-20 16:34:00 713

空空如也

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

TA关注的人

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