Linux
文章平均质量分 82
一个编程的小渣渣
一个自学编程的小白
展开
-
linux文件服务站
linux文件服务站定义一些命令的宏服务端serverserver.h定义一些命令的宏config.h#define LS 0#define GET 1#define PWD 2#define IFGO 3#define LLs 4#define LCD 5#define CD 6#define PUT 7#define QUIT 8#define DOFILE 9struct read{ char data[1024]; int cmd; // 定义标记符号原创 2020-11-05 22:03:40 · 400 阅读 · 0 评论 -
PWM简介
PWM简介概念PWM信号图频率和占空比概念PWM 全称是 Pulse WidthModulation,也就是脉冲宽度调制。PWM信号图频率和占空比PWM 信号有两个关键的术语:频率和占空比。频率:就是开关速度,把一次开关算作一个周期,那么频率就是 1 秒内进行了多少次开关。占空比:就是一个周期内高电平时间和低电平时间的比例,一个周期内高电平时间越长占空比就越大,反之占空比就越小。占空比用百分之表示,如果一个周期内全是低电平那么占空比就是 0%,如果一个周期内全是高电平那么占空比就是100%。原创 2020-10-23 22:47:33 · 1506 阅读 · 0 评论 -
SPI总线原理介绍
SPI总线介绍1. SPI总线简介2. SPI四线3. SPI四种工作模式4. SPI时序图1. SPI总线简介SPI, SPI 全称是 SerialPerripheral Interface,也就是串行外围设备接口。 SPI 是 Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线, SPI 时钟频率相比 I2C 要高很多,最高可以工作在上百 MHz。 SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备,一般 SPI 需要4 根线,但是也可以使用三根线(单向传输原创 2020-10-06 14:37:12 · 2214 阅读 · 0 评论 -
Linux之ARM (I.MX6ULL)UART串口通信原理
Linux之ARM (I.MX6ULL)UART串口通信原理UART串口简介1、 UART 通信格式2、 UART 电平标准不管是单片机开发还是嵌入式 Linux 开发,串口都是最常用到的外设。可以通过串口将开发板与电脑相连,然后在电脑上通过串口调试助手来调试程序。还有很多的模块,比如蓝牙、GPS、 GPRS 等都使用的串口来与主控进行通信的,在嵌入式 Linux 中一般使用串口作为控制台,所以掌握串口是必备的技能。UART串口简介1、 UART 通信格式串口全称叫做串行接口,通常也叫做 COM 接原创 2020-10-04 17:05:06 · 1386 阅读 · 0 评论 -
Linux之ARM (I.MX6ULL)GPT高度延时实验
Linux之ARM (I.MX6ULL)GPT高度延时实验GPT高精度延时简介1.GPT 定时器简介2.GPT 定时器的可选时钟源如图所示:3.GPT 定时器结构如图所示:3.1.GPT 定时器结构各部分的意义如下:4.GPT定时器的两种工作模式5.GPT定时器几种重要寄存器的介绍5.1GPT 的配置寄存器 GPTx_CR结构特性5.2GPT 的配置寄存器 GPTx_PR结构特性5.3GPT 的配置寄存器 GPTx_SR结构特性6.GPT定时器实现高精度延时原理GPT高精度延时简介1.GPT 定时器简介原创 2020-09-29 22:35:59 · 448 阅读 · 0 评论 -
Linux 驱动按键消抖原理
Linux 驱动里面按键消抖原理1.为什么要使用按键消抖?2. 定时器按键消抖简介1.为什么要使用按键消抖?因为机械结构带来的按键抖动问题,也就是按键消抖。前面的实验中都是直接使用了延时函数来实现消抖,因为简单, 但是直接用延时函数来实现消抖会浪费 CPU 性能,因为在延时函数里面 CPU 什么都做不了。如果按键使用中断的话更不能在中断里面使用延时函数,因为中断服务函数要快进快出。2. 定时器按键消抖简介按键消抖的原理在在此之前已经详细的讲解了,其实就是在按键按下以后延时一段时间再 去读取按键值,如原创 2020-09-28 22:16:20 · 434 阅读 · 0 评论 -
Linux之ARM (I.MX6ULL)EPIT定时器实验
Linux之ARM (I.MX6ULL)EPIT定时器实验1.EPIT 定时器简介1.1步骤如下:定时器是最常用的外设,常常需要使用定时器来完成精准的定时功能, I.MX6U 提供了多种硬件定时器,有些定时器功能非常强大。在定时器中断里面我们可以做其它的处理,比如翻转 LED 灯。1.EPIT 定时器简介EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32原创 2020-09-28 21:52:10 · 400 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之主频和时钟配置实验
Linux之ARM(MX6U)裸机之主频和时钟配置实验1. I.MX6U 时钟系统详解1.1系统时钟来源1.2 7 路 PLL 时钟源1.3 时钟树简介1.4 内核时钟设置1.5 PFD 时钟设置1.6 AHB、 IPG 和 PERCLK 根时钟设置2.实验程序编写2.1bsp_clk.h2.2 bsp_clk.c2.3 main.c 修改3.编译下载验证在前几篇 写的实验中我们都没有涉及到 I.MX6U 的时钟和主频配置操作,全使用的默认配置,默认配置下 I.MX6U 工作频率为 396MHz。但是原创 2020-08-28 16:51:11 · 282 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之按键输入实验(GPIO的输入、输出)
Linux之ARM(MX6U)裸机之按键输入实验(GPIO的输入、输出)1.按键输入简介2. 硬件原理分析3.实验程序编写3.1编写bsp_gpio.h3.2编写bsp_gpio.c3.3编写bsp_key.h3.4编写bsp_key.c3.5修改main.c4. 编译下载验证4.1编写 Makefile4.2链接脚本编写4.3 编译下载前面几章试验都是讲解如何使用 I.MX6U 的 GPIO 输出控制功能,I.MX6U 的 IO 不仅能作 为输出,而且也可以作为输入。I.MX6U-ALPHA 开发板上原创 2020-08-25 16:32:20 · 596 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之c语言蜂鸣器实验--驱动编写、编译
Linux之ARM(MX6U)裸机之c语言蜂鸣器实验--编写、编译1.有源蜂鸣器简介2. 硬件原理分析3.编译下载验证3.1在写驱动之前要找到对应的寄存器设置好属性3.1.1初始化SNVS_TAMPER1这个IO复用为GPIO5_IO013.1.2设置SNVS_TAMPER1这个IO的电气属性。3.1.3修改.vscode文件把beep文件夹路径加入到.vscode3.2 修改main.c文件4 编写和验证4.1编写Makefile4.2编写脚本链接4.3编译下载Linux之ARM(MX6U)裸机之c语言原创 2020-08-19 16:06:56 · 580 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之BSP工程管理实验
Linux之ARM(MX6U)裸机之BSP工程管理实验1.工程管理简介2.实验程序编写2.1创建 imx6ul.h 文件2.2创建个.vscode文件修改includePath2.3 编写 led 驱动代码2.4 编写时钟驱动代码2.5 编写延时驱动代码2.6 修改 main.c 文件3.编译下载验证3.1编写 Makefile3.2 编写脚本链接3.3 编译下载1.工程管理简介打开我们上一章的工程根目录,如图所示:在图中我们将所有的源码文件都放到工程根目录下,即使这个工程只是完成了一个 简单的流水原创 2020-08-18 10:58:10 · 518 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之使用官方SDK移植实验
Linux之ARM(MX6U)裸机之使用官方 SDK 移植实验1. I.MX6ULL 官方 SDK 包简介2.硬件原理图分析3.试验程序编写3.1SDK 文件移植3.2创建 cc.h 文件3.3 编写实验代码4.编译下载验证4.1 编写 Makefile 和链接脚本4.2 编译下载1. I.MX6ULL 官方 SDK 包简介NXP 针对 I.MX6ULL 编写了一个 SDK 包,这个 SDK 包就类似于 STM32 的 STD 库或者 HAL 库,这个 SDK 包提供了 Windows 和 Linux原创 2020-08-17 21:05:04 · 731 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机模仿 STM32 驱动开发格式实验 --驱动编写、编译
Linux之ARM(MX6U)裸机模仿 STM32 驱动开发格式实验 --驱动编写、编译一、模仿 STM32 寄存器定义①STM32 寄存器定义简介为了开发方便,ST 官方为 STM32F103 编写了一个叫做 stm32f10x.h 的文件,在这个文件 里面定义了 STM32F103 所有外设寄存器,我们可以使用其定义的寄存器来进行开发,比如我 们可以用如下代码来初始化一个 GPIO:GPIOE->CRL&=0XFF0FFFFF; GPIOE->CRL|=0X00300000原创 2020-08-16 20:29:20 · 478 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机C语言版LED灯实验--驱动编写、编译
Linux之ARM(MX6U)裸机C语言版 LED灯实验–驱动编写、编译一、C语言运行环境构建汇编文件只是用来完成 C 语言环境搭建。设置处理器模式设置6ULL处于SVC模式 下。设置CPSR寄存器的bit4-0,也就是M[4:0]为10011=0X13。读写状态寄存器需要用到MRS和MSR指令。MRS将CPSR寄存器数据读出到通用寄存器里面,MSR指令将通用寄存器的值写入到CPSR寄存器里面去。以前的 ARM 处理器有 7 种运行模型:User、FIQ、IRQ、Supervisor(SVC)、A原创 2020-08-16 19:41:21 · 617 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机之 MX6ULL 启动方式详解
Linux之ARM(MX6ULL)裸机之 MX6ULL 启动方式详解一、启动方式选择BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据BOOT_MODE[1:0]的设置 来选择 BOOT 方式。BOOT_MODE[1:0]的值是可以改变的,有两种方式,一种是改写 eFUSE(熔 丝),一种是修改相应的 GPIO 高低电平。第一种修改 eFUSE 的方式只能修改一次,后面就不能 再修改了,所以我们不使用。我们使用的是通过修改 BOOT_MODE[1:0]对应的 GPIO 高低电平 来选择原创 2020-08-15 11:08:42 · 1534 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机汇编LED驱动实验--烧写bin文件到sd卡并运行
Linux之ARM(MX6ULL)裸机汇编LED驱动实验–烧写bin文件到sd卡并运行一、代码烧写编译完代码以后可以直接通过 MDK 或者 IAR 下载到内部的 flash 中。但是 I.MX6U 虽然内部有 96K 的 ROM,但是这 96K 的 ROM 是 NXP 自己用的,不向用户开放。所以相当于说 I.MX6U 是没有内部 flash 的,但是我们的代码得有地 方存放啊,为此,I.MX6U 支持从外置的 NOR Flash、NAND Flash、SD/EMMC、SPI NOR Flash 和 Q原创 2020-08-14 20:47:57 · 1017 阅读 · 0 评论 -
Linux之ARM(MX6U)裸机汇编LED驱动实验-编译驱动代码
Linux之ARM(MX6ULL)裸机汇编LED驱动实验-编译驱动代码汇编驱动代码(leds.s): .global _start @全局标号 _start:/* 使能外设时钟*CCGR0~CCGR6这7个寄存器全部使能,设置CCGR0~CCGR6这7个寄存器地址全部为 0XFFFFFFFF*/ldr r0, =0x020c4068 @CCGR0ldr r1, =0xffffffff @向CCGR0写入的数据str r1, [r0] @将oxfff原创 2020-08-13 22:04:04 · 444 阅读 · 1 评论 -
Linux之ARM(MX6U)裸机汇编LED驱动实验-编写驱动代码
I.MX6ULL IO初始化一、使能时钟使能时钟,CCGR0~ CCGR6这7个寄存器控制着6ULL所有外设时钟的使能。为了简单,设置CCGR0~CCGR6这7个寄存器全部为0XFFFFFFFF,相当于使能所有外设时钟。CCGR0:CCGR1:CCGR2:CCGR3:CCGR4:CCGR5:CCGR6:汇编使能所有的外设时钟:二、IO复用将寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的bit3~0设置为0101=5,这样GPIO1_IO03就原创 2020-08-13 21:30:54 · 361 阅读 · 0 评论 -
Cortex-A7 MPCore 架构的介绍
Cortex-A7 MPCore 架构的介绍参考了《Cortex-A7 Technical ReferenceManua.pdf》和《ARM Cortex-A(armV7)编程手 册 V4.0.pdf》这俩份文档,这两份文档都是 ARM 官方的文档,详细的介绍了 Cortex-A7 架构和 ARMv7-A 指令集。一、 Cortex-A7 MPCore 简介Cortex-A7 MPcore 处理器支持 1~4 核,通常是和 Cortex-A15 组成 big.LITTLE 架构的, Cortex-A1原创 2020-08-12 12:09:37 · 1034 阅读 · 0 评论 -
I2C总线协议原理介绍
I2C总线协议原理1. I2C 简介2. I2C 协议有关的术语:2.1 起始位2.2 停止位2.3 数据传输2.4 应答信号3. IC2时序3.1 IC2写时序3.2 IC2读时序3.3 I2C多字节读写时序1. I2C 简介I2C 是很常见的一种总线协议, I2C 是 NXP 公司设计的, I2C 使用两条线在主控制器和从机之间进行数据通信。一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),这两条数据线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。 I2C 总线标准原创 2020-10-06 14:23:56 · 5692 阅读 · 1 评论 -
C语言排序(冒泡排序、选择排序、插入排序和快速排序)
C语言排序(冒泡排序、选择排序、插入排序和快速排序)C语言排序什么是排序?1.冒泡排序基本思想主要思路:动态示例demo2.选择排序基本思想主要思路动态示例demo3.插入排序基本思想主要思路动态示例demo4.快速排序基本思想主要思路动态示例demoC语言排序什么是排序?就是将无序的变成有序的1.冒泡排序基本思想在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,原创 2020-09-26 17:24:15 · 43817 阅读 · 16 评论 -
Visual Studio Code 软件的安装以及C/C++插件大全
Visual Studio Code 软件的安装以及C/C++插件大全1.Visual Studio Code 的安装2.Windows下的安装2.1双击安装包,接受,下一步2.2 选择安装路径,下一步2.3下一步2.4创建桌面快捷方式2.5 安装完成3. ubuntu下的安装3.1将下载的安装包传到ubuntu下3.2 解压命令如下:3.3把安装好的VScode图标放到桌面3.4 打开Visual Studio Code4.配置C/C++插件大全5、将VScode设置成中文的1.Visual Stud原创 2020-09-03 13:19:04 · 2216 阅读 · 0 评论 -
MobaXterm 软件安装和使用
MobaXterm 软件安装和使用1.MobaXterm 软件安装2.MobaXterm 的使用1.MobaXterm 软件安装MobaXterm 也是一个类似 SecuerCRT 和 Putty 的终端软件,此软件是网友推荐的,功能强大而且免费(也有收费版)!我试用了一下,用起来非常舒服!在这里推荐大家使用此软件作为终端调试软件, MobaXterm 软件在其官网下载即可,地址为 https://mobaxterm.mobatek.net/如图:点击图中的“Download”按钮即可打开下载界面原创 2020-09-02 15:04:43 · 1182 阅读 · 0 评论 -
按位运算--位与(&)、位或(|) 和异或(^)及左移(<<)和右移(>>)
按位与运算符(&)原创 2020-08-07 17:10:38 · 1051 阅读 · 0 评论 -
Linux中的指令
Linux中的指令一、文件和目录cd /home 进入 ‘/ home’ 目录’cd … 返回上一级目录cd …/… 返回上两级目录cd 进入个人的主目录cd ~user1 进入个人的主目录cd - 返回上次所在的目录pwd 显示工作路径ls 查看目录中的文件ls -F 查看目录中的文件ls -l 显示文件和目录的详细资料ls -a 显示隐藏文件ls [0-9] 显示包含数字的文件名和目录名tree 显示文件和目录由根目录开始的树形结构lstree 显示文件和目录由根目录开始的原创 2020-08-26 11:31:48 · 111 阅读 · 0 评论 -
Linux系统编程---基于TCP的socket网络编程
Linux系统学习—基于TCP的socket网络编程一、关于TCP下socket编程的思路解析:通信的过程解析:二、建立TCP(socket)服务端server解析:(1)socket函数的解析:头文件:#include <sys/types.h> /* See NOTES */#include <sys/socket.h>函数原型:int socket(int domain, int type, int protocol);int so原创 2020-08-10 14:54:23 · 449 阅读 · 0 评论 -
Linux shell编程学习
shell编程学习shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令。这点与Windows的命令提示符类似,但Linux shell的功能更加强大,我们可以使用 <和>对输入输出进行重定向 ,使用|在同时执行的程序之间实现数据的管道传递,使用$(n)获取子进程的参数。重定向:以b.txt为例: ll > b.txtll显示的东西 在b.txt显示了管道传递: ll |grep “s”在ll中 查找带s的文件Linux脚本编写基原创 2020-07-29 23:53:33 · 1463 阅读 · 0 评论 -
Linux系统编程---多线程编程之线程、互斥锁和条件变量
Linux系统编程—多线程编程之线程、互斥锁和条件变量一、进程与线程的区别解析典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。(1)线程与进程进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)原创 2020-07-28 15:31:32 · 321 阅读 · 0 评论 -
Linux系统编程---进程间通信方式
Linux系统编程—进程间通信方式进程间通信(IPC)介绍进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。特点:它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于具原创 2020-07-27 21:37:00 · 476 阅读 · 0 评论 -
linux系统编程---exec族函数、system函数、popen函数
一、exec族函数exec族函数函数的作用:我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。exec族函数定义:功能: 在调用进程内部执行一个可执行文件。可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。函数族: exec函数族分别是:execl, execlp, execle, execv, execvp, exe原创 2020-07-27 13:54:08 · 388 阅读 · 1 评论 -
Linux系统编程—进程学习
Linux系统编程—进程学习1.进程的相关内容2.创建进程函数fork的使用3.vfork创建进程4.进程退出的方式5.父进程等待子进程退出6.孤儿进程原创 2020-07-21 17:36:37 · 223 阅读 · 0 评论 -
在Linux下自己实现cp指令
在Linux下自己实现cp指令Linux中自带的cp的用法:cp a.c b.c输入cp a.c b.c可以将a.c复制到另一个文件b.c下实现cp指令的思路:1.c语言参数2.思路: 1. 打开创建src.c 2. 读src.c到buf中 3. 打开创建des.c 4. 将buf写入des.c 5. close关闭文件代码示例:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h原创 2020-07-21 16:34:15 · 592 阅读 · 0 评论 -
Linux系统编程—文件编程(open、write、read、lseek的用法)
Linux文件编程open、write、read以及光标lseek的用法write的用法read的用法光标lseek的用法open的用法头文件:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>原创 2020-07-11 16:28:43 · 822 阅读 · 2 评论 -
Linux库之动态库、静态库
Linux库之动态库、静态库有关库的详情介绍:https://www.cnblogs.com/sunsky303/p/7731911.htmlhttps://blog.csdn.net/wk_bjut_edu_cn/article/details/817359561.库的介绍:2.静态库静态函数库,是在程序执行前(编译)就加入到目标程序中去了 ;优点: 运行快发布程序无需提供静态库,因为已经在app中,移植方便缺点:大3.动态库动态函数库,是在程序执行时动态(临时)由目标程序去调用原创 2020-08-10 15:39:24 · 179 阅读 · 0 评论 -
Linux系统编程之高并发服务器--epoll用法
epoll的用法:epoll的使用主要在于三个函数。epoll_create(int size);创建一个epoll的句柄,size用来告诉内核这个监听的数目最大值。注意:是数量的最大值,不是fd的最大值,切勿搞混。当创建好epoll句柄后,它就是会占用一个fd值,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽。 int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);epoll的原创 2020-08-10 18:36:01 · 223 阅读 · 0 评论 -
Makefile的用法
一、Makefile 介绍make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:1)如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。2)如果这个工程的某几个C文件被修改,那么我们只编译被原创 2020-08-11 14:44:30 · 418 阅读 · 0 评论 -
Source Insight的使用及解决中文乱码
Source Insight的使用及解决中文乱码1. Source Insight 新建工程1.1新建工程1.点击 Source Insight 的: Project->New Project如图所示:2.点击“New Project”后进入图所示界面:3.在图中设置好工程名字和路径以后点击“OK”按钮,会进入另外一个设置界面,如图所示:4.新建工程完成以后 Source Insight 如图所示:1.2新建源文件1.3代码编写1.4工程同步2.Source Insight 解决中文乱码1.第一次装好原创 2020-09-03 12:29:48 · 1449 阅读 · 0 评论 -
Source Insight 软件安装
Source Insight 软件安装和使用1.Source Insight 安装1.解压运行2.next3.next4.选择安装目录5.install6.finish7.打开安装位置,并用我们解压的sourceinsight4替换掉安装位置中的sourceinsight48.打开sourceInsight4,选择第三个,next9.把解压出来的 .lic文件导入进去10.安装成功1.Source Insight 安装Source Inisght 是一款功能强大的代码编辑、阅读工具,工作在 Window原创 2020-09-03 10:36:08 · 715 阅读 · 0 评论