自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一口Linux的专栏

专注linux知识的分享

  • 博客(16)
  • 资源 (10)
  • 收藏
  • 关注

原创 12. 如何实现基于Cortex-A9 的UART裸机驱动并实现printf函数

前言通讯问题,和交通问题一样,也有高速、低速、拥堵、中断等等各种情况。如果把串口通讯比做交通,UART比作车站,那么一帧的数据就好比汽车。汽车跑在路上,要遵守交通规则。如果是市内,一般限速30、40,而高速公路则可以到120。而汽车走什么路,限速多少,就要看协议怎么规定了。常见的串口协议有RS-232、RS-422、RS-485等,他们之间有何细微差别?下面我们就一起来探讨一下。UART是什么UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmi

2020-08-31 08:21:54 1113

原创 手把手教Linux驱动6-原子操作原理分析

原子操作原理分析概念原子操作是指不被打断的操作,即它是最小的执行单位。最简单的原子操作就是一条条的汇编指令(不包括一些伪指令,伪指令会被汇编器解释成多条汇编指令)。在 linux 中原子操作对应的数据结构为 atomic_t,定义如下:typedef struct { int counter;} atomic_t;本质上就是一个整型变量,之所以定义这么一个数据类型,是为了让原子操作函数只接受 atomic_t 类型的操作数,如果传入的不是 atomic_t 类型数据,在程序编译阶段就不会通过;

2020-08-28 13:58:16 735

原创 22张图详解浏览器请求数据包如何到达web服务器(搞懂网络可以毕业了)

浏览器的请求数据包如何到达web服务器?很多读者对于其中的完整流程不是特别的了解,下面一口君通过这22张图,详细的讲解我们点击浏览器的网址之后,数据包是如何经过重重险阻到达web server的。LAN网络中的用户要访问位于远程网络中的服务器存储的网页。用户首先激活网页上的链接。如果该域名对应的IP地址本地已经缓存,就直接访问该地址的80端口或者8080端口;如果没有缓存,那么浏览器会发出DNS请求给DNS服务器,获得该域名对应的IP地址。获得地址后,浏览器会通过socket首先向服务器发送三次

2020-08-28 13:17:02 969

转载 一篇文章了解什么是串口,UART、RS-232、RS-422、RS-485

通讯问题,和交通问题一样,也有高速、低速、拥堵、中断等等各种情况。如果把串口通讯比做交通,UART比作车站,那么一帧的数据就好比汽车。汽车跑在路上,要遵守交通规则。如果是市内,一般限速30、40,而高速公路则可以到120。而汽车走什么路,限速多少,就要看协议怎么规定了。常见的串口协议有RS-232、RS-422、RS-485等,他们之间有何细微差别?下面我们就一起来探讨一下。一、UART是什么UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmit

2020-08-28 09:36:43 3288

原创 Linux scp命令

概念scp是secure copy的简写, 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。因为scp传输是加密的,可能会稍微影响一下速度。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。语法scp [-1246BCpqrv] [-c cipher]

2020-08-27 17:45:47 815

原创 Ubuntu18.04搭建ssh服务器

Ubuntu安装后默认只有ssh客户端,即只能在Ubuntu内去连接其他ssh服务器,若想实现我们的Ubuntu被其他主机远程连接,则需要自己去安装ssh服务端。安装进入Ubuntu18.04,打开终端,su进入root,输入命令:sudo apt install openssh-server执行结果:重启ssh服务器命令:/etc/init.d/ssh restartservice sshd restart修改配置文件vim /etc/ssh/sshd_config连接测

2020-08-27 15:36:09 807

原创 Linux命令cURL如何访问FTP服务器

前言cURL 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。cURL 的原作者是 Daniel Stenberg (目前是 cURL 的核心开发者),同时也是 IETF HTTPbis 工作组的资深成员。Daniel 在 1998 年创建了 curl 项目,他编写了最初的 curl 版本,并创建了 libcurl 库。到目前为止,代码仓库包括的 24000 次 commit 有超过一半是 Daniel 本人提交的,他依然是项目的核心开发者。Dan

2020-08-27 09:41:03 7205

原创 使用Linux命令cURL实现文件定时上传到ftp服务器的程序

前言有个同学私信问我,想实现某个文件定时上传到服务器要怎么来实现。我突然想到在之前公司为高通的iot模组编写FOTA功能时使用的一个超级强大的工具curl。心血来潮,决定专门写一篇文章,送给需要的朋友。文章分两部分,首先介绍curl的用法,然后实现一个定时上传日志文件的一个简单的程序。概念curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面

2020-08-27 08:16:40 2205 1

原创 手把手教Linux驱动4-进程、文件描述符、file、inode关系详解

本文目标什么是文件描述符?进程打开文件相关信息管理Linux设备文件三大结构:inode,file,file_operationsmknod 做了什么事?进程打开设备文件驱动如何支持同类型设备?如何获得注册的设备结构体私有地址?什么是文件描述符?Linux 中一切都可以看作文件,包括普通文件、链接文件、Socket 以及设备驱动等,对其进行相关操作时,都可能会创建对应的文件描述符。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,用于指代被打开的

2020-08-25 14:01:47 1580

原创 手把手教Linux驱动5-自旋锁、信号量、互斥体概述

在Linux系统中有大量的临界资源需要保护,如何让各个任务有条不紊的访问这些资源,这涉及到Linux中并发访问的保护机制设计相关知识。 后面会详细介绍这几个机制。(据可靠消息,锁的实现经常出现在笔试环节。既可以考察面试者对锁的原理的理解,又可以考察面试者编程技能)。注:部分代码都是根据ARM64架构汇编代码翻译成C语言并经过精简(例如:spin lock、read-write lock)。也有部分代码实现是为了呈现背后设计的原理自己编写的,而不是精简Linux中实现的代码(例如mutex)。自旋锁(s

2020-08-25 12:11:51 851 1

原创 内核窥探|在kernel中的链表,其他的链表真的弱爆了

在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作list_head 的通用接口很容易实现代码的重用,有点类似于C++的继承机制(希望有机会写篇文章研究一下C语言的面向对象机制)。首先找到list_head结构体定义,kernel/inclue/linux/types.h 如下:struct list_head { struct list_head *n

2020-08-24 21:20:07 947 3

原创 fs4412 I2C驱动基于Cortex-A9,mpu6050裸机程序,驱动,I2C架构,有这一篇够了

本文基于三星Cortex-A9架构,Exynos4412讲解I2C原理、以及基于I2C的mpu6050陀螺仪的数据读取实例(包括在裸机模式下数据的读取以及基于Linux驱动的读取)。还会分析Linux内核I2C架构,篇幅过长,绝对干货。裸机篇本篇首先详细讲解I2C时序,然后讲解如何基于三星I2C控制实现裸机读取从设备信息方法。前言I2C(Inter-Integrated Circuit)总线(也称 IIC 或 I2C) 是有PHILIPS公司开发的两线式串行总线,用于连接微控制器及外围设备,是微电子

2020-08-24 18:52:31 1551 5

原创 16.从0学arm,基于Cortex-A9 ADC裸机驱动详解

前言在嵌入式开发中,ADC应用比较频繁,本文主要讲解ADC的基本原理以及如何编写基于ARM的裸机程序和基于Linux的驱动程序。ARM架构:Cortex-A9Linux内核:3.14在讲述ADC之前,我们需要先了解什么是模拟信号和数字信号。模拟信号主要是与离散的数字信号相对的连续的信号。模拟信号分布于自然界的各个角落,如每天温度的变化,而数字信号是人为的抽象出来的在时间上不连续的信号。电学上的模拟信号是主要是指幅度和相位都连续的电信号,此信号可以被模拟电路进行各种运算,如放大,相加,相乘等。模

2020-08-23 09:04:00 3988 1

原创 手把手教Linux驱动3-之字符设备架构详解,有这篇就够了

一、Linux设备分类Linux系统为了管理方便,将设备分成三种基本类型:字符设备块设备网络设备字符设备:字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少要实现open、close、read和write的系统调用。字符终端(/dev/console)和串口(/dev/ttyS0以及类似设备)就是两个字符设备,它们能很好的说明“流”这种抽象概念。字符设备可以通过文件节点来访问,比如/dev/tty1和/dev/lp

2020-08-22 18:39:39 2677 4

原创 手把手教Linux驱动2-之模块参数和符号导出

通过《手把手教Linux驱动1-模块化编程》的学习,我们已经掌握了如何向内核加载一个模块,现在我们学习模块之间如何传递参数。一、给模块传递参数当我们加载一个模块到Linux内核的时候,Linux内核允许向这个模块传递一些参数。这样设计的好处就是,让我们的模块操作起来更灵活,我们可以通过给它传递不同的参数来完成不同的功能。例如:我们写一个模块程序,来完成硬件中断的操作。在Linux操作系统中,每个中断都有一个中断号。如果我们在模块里面将中断号写死,那我们的模块只能响应特定的中断了。如果我们把中断号作为参数

2020-08-22 18:12:49 1084 3

原创 手把手教Linux驱动1-模块化编程

大家好,从本篇起,一口君将手把手教大家如何来学习Linux驱动,预计会有20篇关于驱动初级部分知识点。本专题会一直更新,有任何疑问,可以留言或者加我微信。##什么是模块化编程?Linux的开发者,遍布世界各地,他们相互之间觉大数估计都不认识。如果真的是对这些开发者进行统一管理,那是很难做到的。所以大牛们,在设计Linux内核的时候,融入了模块化的思想。也就是说,现在大家已经有一个现成的Linux操作系统了,所有的开发者写的代码对于这个Linux操作系统而言都是一个模块,开发者可以模块的形式将自己的代码添

2020-08-22 17:49:14 2007 4

S3C2440全套中文手册.PDF

S3C2440A32位CMOS RISC微控制器用户手册 引言此用户手册描述的是三星公司的16/32位精简指令集(RISC)微处理器S3C2440A。三星公司的S3C2440A为手持设备和普通应用提供了低功耗和高性能的小型芯片微控制器的解决方案。为了降低整体系统成本,S3C2440A还提供了以下丰富的内部设备。S3C2440A基于ARM920T核心,0.13μm的CMOS标准宏单元和存储器单元。低功耗,简单,精致,且全静态设计特别适合于对成本和功率敏感型的应用。它采用了新的总线架构如先进微控制总线构架(AMBA)。S3C2440A 的突出特点是其处理器核心,是一个由Advanced RISC

2020-10-24

mdk414.rar

作者讲解ARM课程专用的IDE软件 mdk414.rar 学习ARM指令用的IDE环境 AREA Example,CODE,READONLY ;声明代码段Example ENTRY ;程序入口 Start ; 程序中的标号,本质上是内存单元(的地址)的别名 MOV R0,#0 ;设置实参,将传递给子程序的实参存放在r0和r1内 MOV R1,#10 BL ADD_SUM ;调用子程序ADD_SUM B OVER

2020-10-23

imx6ull arm板子支持lcd显示图片

lcd_show_jpeg.c test.c lcd.c HZK16 libjpeg.a jpegsrc.v6b.tar.gz

2020-10-04

移植无线AP,使无线网卡变成AP

移植之后就可以实现将无线网卡变成一个无线AP, 素有的压缩包,都已经汇总了,并验证过 dnsmasq-2.81.tar.xz hostapd-2.0.tar.gz iwlist.zip libnl-1.1.4.tar openssl-OpenSSL_1_0_0s.tar.gz

2020-09-18

MPU6050-英文原版数据手册.pdf

MPU6050-英文原版数据手册, CONTENTS 1 REVISION HISTORY ...................................................................................................................................5 2 PURPOSE AND SCOPE .....................................................................................................

2020-08-23

公众号一口Linux驱动部分源码汇总.rar

代码是公众号一口Linux 文章驱动部分所有势力代码,文章如下: 《玩转内核链表list_head,如何管理不同类型节点的实现(万字文)可以收藏》 《I2C干货-基于Cortex-A9(重新整理)》 《一文搞懂ADC裸机和基于Linux驱动编写方法》 《手把手教Linux驱动4-进程、文件描述符、file、inode关系详解》 《 手把手教Linux驱动3-之字符设备架构详解,有这篇就够了 》 《手把手教Linux驱动2-模块参数param和符号导出export用法》 《手把手教Linux驱动1-模块化编程》

2020-08-23

linux局域网多线程聊天室

linux c语言 聊天室 多线程 pthread

2013-10-09

ZIGBEE配置与组网

ZIGBEE配置与组网,如何搭建一个zigbee网络!

2013-05-02

zigbee网络建立过程

星形网络和树型网络可以看成是网状网络的一个特殊子集,所以接下来分析如何组建一个Zigbee网状网络。组建一个完整的Zigbee网络分为两步:第一步是协调器初始化一个网络;第二步是路由器或终端加入网络。加入网络又有两种方法,一种是子设备通过使用MAC层的连接进程加入网络,另一种是子设备通过与一个先前指定的父设备直接加入网络。

2013-05-02

空空如也

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

TA关注的人

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