笔记
文章平均质量分 80
我要暴富
这个作者很懒,什么都没留下…
展开
-
git工具
一、创建仓库及初始化当前目录创建仓库:git init 该命令执行完后会在当前目录生成一个 .git 目录。指定目录创建git init dir 在指定目录下会转载 2021-02-26 14:09:44 · 11203 阅读 · 0 评论 -
I2C 协议
1、I2C 简介I2C 是很常见的一种总线协议,I2C 是 NXP 公司设计的,I2C 使用两条线在主控制器和从机之间进行数据通信。一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),这两条数据线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。I2C有主从之分,支持多个从机,即一个I2C主控芯片下可以挂多个 I2C 从设备。每个设备都有唯一的器件地址,用于区别多个从机。一个 I2C原创 2020-12-04 21:19:53 · 1217 阅读 · 0 评论 -
PWM
PWM简介PWM 全称是 PulseWidth Modulation,也就是脉冲宽度调制。它有什么用呢?利用它我们可以控制灯光的亮度、电机的转速、屏幕背光亮度等等。假如一个IO高电平可以点亮一盏led灯,那么此时的亮度是最亮,当输出低电平时led熄灭。如果不停的开关led灯,那么只要速度足够快,我们人眼就无法发现led灭了,但是可以发现亮度改变。利用这种原理我们就可以控制屏幕背光的亮度。PWM的两个关键术语:频率和占空比。频率: 就是开关的速度,在一秒内可以开关多少次。把一次开关叫做一个周期。*原创 2020-12-04 20:39:57 · 1115 阅读 · 0 评论 -
左移运算符和右移运算符
左移操作(<<)规则:右边空出的位用0填补高位左移溢出则舍弃该高位。例如:10 的二进制为 0000 1010 ,那么10左移3为就是 0101 0000,结果就是80.10<<3 ==80右移操作(>>)规则:左边空出的位用0或者1填补。正数用0填补,负数用1填补。注:不同的环境填补方式可能不同;低位右移溢出则舍弃该位。例如:20 的二进制为 0001 0100 ,那么10右移3为就是 0000 0010,结果就是2。20>>3 ==2原创 2020-12-01 20:31:37 · 6871 阅读 · 0 评论 -
arm汇编基础
汇编的重要性我们在进行嵌入式 Linux 开发的时候是需要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一上电 SP 指针还没初始化,C 环境还没准备好,所以肯定不能运行 C 代码,必须先用汇编语言设置好 C 环境,比如初始化 DDR、设置 SP指针、初始化一些二外设等等,当汇编把 C 环境设置好了以后才可以运行 C 代码。汇编的知识很庞大,本章我们只讲解最常用的一些指令,满足我们后续学习即可。对于 Cortex-A 芯片来讲,大部分芯片在上电以后 C 语言环境还没准备好,所以第一行程序肯定是转载 2020-12-01 15:45:04 · 593 阅读 · 0 评论 -
Linux线程
进程与线程转载自典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中**,进程本身不是基本运行单位,而是线程的容器**。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。**线程是操作系统能够进行运算调度的最小单位。**它被包含原创 2020-11-16 16:45:13 · 196 阅读 · 0 评论 -
Linux网络编程
一、网络编程简介回忆之前学过的多种进程间通信的方式,他们是不同的进程之间进行消息的的交互。他们都有一个共同的特点就是都是基于内核(系统调用)来实现通信,那么就必然有一个弱点,就是只能在一台主机上进行交互。要想在多机之间进行信息交互,除了UART、I2C、SPI等之外的,还有还可以进行网络通信。网络编程的两个重要元素:地址:当一个客户端想要连接服务器时就必须要知道服务器的地址。地址分为两部分IP地址和端口号。IP地址:IP地址用于确定服务器位于哪一台主机(哪个设备)。一台主机可以运行多个服务,如F原创 2020-11-13 20:06:02 · 768 阅读 · 0 评论 -
文件系统
1.什么是文件系统文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;以上所说的方法就是文件管理系统(程序),简称文件系统。2.文件系统的种类有哪些如:FAT、VFAT、NTFS、EXT1/2/3/4 HFS …树莓派查看文件系统的指令:df -T,如图所示:如图有:VFAT:boot(bootloader、kernel)ext4:根目录tmpfs:内存文件系统(临时)3.什么是分区windows有分c盘(装系统原创 2020-09-18 16:37:41 · 133 阅读 · 0 评论 -
交叉编译
什么是交叉编译交叉编译是在一个平台上生成另一个平台上的可执行代码(例如我们在windows上用keil编译代码生成hex文件,供51单片机使用,这个过程就是交叉编译。这是一个行为。)。为什么要交叉编译既然我们已经有了主机编译器,那为什么还要交叉编译呢?有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征。有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器。有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。(操作系统也是代码原创 2020-09-16 20:35:39 · 5156 阅读 · 0 评论 -
库的创建与使用
什么是库库是一组预编译好的函数集合,这些函数都是按照可重用得原则编写。在库中的函数是互相关联的,通过这些函数组合可以实现相应功能,如屏幕处理函数(curses和ncurses),数据库访问例程(dbm库)。在Linux中标准的库文件一般存放在/lib和/usr/lib目录中。c语言编译器(确切的说是链接程序)需要知道要搜索哪些库文件,默认情况下它只搜索标准的c语言库。仅仅把库文件放在标准目录就希望c语言编译器gcc找到他们是不够的,库文件的命名必须遵循一定的规范并且在命令行中明确指定。gcc -o h原创 2020-09-12 14:44:10 · 683 阅读 · 0 评论 -
函数exec
fork函数创建新的子进程后,子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec的函数时,该进程执行的程序完全替换为新的程序(就是通过子进程取执行其他程序,此时子进程ID不变,exec只是用磁盘上的一个新程序替换了当前进程的正文段、数据段、堆段和栈段),新程序执行完毕之后exec不会回到原程序继续执行。exec有7个函数供我们使用,他们能实现的功能相同,只是方式不太一样,称为exec族函数。 int execl(const char *path, const char原创 2020-09-09 16:30:09 · 768 阅读 · 0 评论 -
进程
什么是进程用户角度:进程是动态的程序。操作系统:进程是分配资源的基本单位,也是最小单位。进程的存储空间是如何分配的原创 2020-09-28 16:34:08 · 825 阅读 · 0 评论 -
标准I/O与文件I/O的区别
1.来源文件I/O(低级I/O)是Linux系统调用,通过系统调用来访问文件,返回一个文件描述符,可以直接对文件进行读写。需要进行内核与用户之间的切换。标准I/O(高级I/O)是c语言的标准库,返回一个指向文件结构的流的指针,建立缓冲区存储文件的数据,流中记录着文件的信息,不在内核上操作,不需要频繁切换。2.移植性文件I/O是Linux(Unix)的系统调用操作,移植性较差。标准I/O是c语言标准库,大多数操作系统上都装备了c库,移植性较好。3作用范围文件I/O可以对管道,设备驱动等读写。标原创 2020-09-28 11:27:19 · 1716 阅读 · 0 评论 -
文件I/O
文件I/O#引言可用文件的I/O函数——打开文件、读文件、写文件等,Linux系统中大多数的文件I/O只需要5个函数:open、read、write、lseek以及close。本文描述的函数经常被称为不带缓冲的I/O,术语不带缓冲指的时每个read和write都调用内核中的一个系统调用。#文件描述符对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数,当打开/创建一个文件时内核会向进程返回一个文件描述符,当读、写一个文件时使用open或creat返回的文件描述符标识该文件,将原创 2020-09-07 15:45:01 · 172 阅读 · 0 评论