自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ForFuture_的博客

我们来学习吧!!!

  • 博客(34)
  • 收藏
  • 关注

原创 00 安装交叉编译环境

安装交叉编译环境源码及所需要的工具:链接:https://pan.baidu.com/s/1brjjTF5 密码:eor51.下载源码及所需要的工具2.进入Allwinner_H3夹下的tools文件夹,将gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2压缩包拷贝到某一目录下,解压: tar -xvf ...

2018-11-25 16:26:35 282

原创 交流220v转直流24v(LM7824CT)

交流220v转直流24v(LM7824CT):电路图:T1为变压器,用于降压;D1~D4为整流二极管,形成整流桥;C1、C2分别为输入和输出端的滤波电容;U1(LM7824CT)为三端集成稳压器,输出电压24V。示波器显示:增强型电路图:示波器显示:...

2018-11-23 16:13:10 20734 5

原创 交流220v转直流24v(电容降压法)

交流220v转直流24v(电容降压法)删除线格式标题

2018-11-23 08:20:53 28624 1

原创 25 驱动设备申请及源码实现设备文件创建一体函数(miscdevice)

驱动设备申请及源码实现设备文件创建一体函数(miscdevice)miscdevice是字符设备驱动的简化版本,方便实现一个简单的字符设备驱动。 只适用于没有同类型的设备驱动,也就是一个驱动只对应一个硬件。相关变量及函数:#include <linux/miscdevice.h>struct miscdevice { int minor; //指...

2018-03-01 00:43:45 292

原创 24 驱动设备申请一体函数(register_chrdev)

驱动设备申请一体函数(register_chrdev)register_chrdev函数把以前分开的做的申请设备号,cdev_init,cdev_add等操作封装起来,一个函数来完成。用起来方便,但有局限性,它的次设备号固定是从0开始,设备的个数固定为256个。 如都用这函数来实现设备驱动,那主设备就无法重用,尽管次设备号可用范围还有很大的空间。 如用于实现只有一个同类设备的驱动,...

2018-03-01 00:10:13 549

原创 23 mdev与驱动源码实现设备文件创建

mdev与驱动源码实现设备文件创建前面设备驱动备加载后,都需要用命令”mknod”来创建出设备文件。 其实内核里有接口在驱动源码里实现创建出设备文件。busybox做的嵌入式文件系统里有提供”mdev”命令。“mdev –help”命令可以查看相关信息:mdev -s is to be run during boot to scan /sys and populate...

2018-02-28 23:44:58 402

原创 22 自定义ioctl命令及用户进程操作GPIO

自定义ioctl命令ioctl ---> kernel ---> cdev.fops->unlocked_ioctl(...)系统调用ioctl函数的作用:用户进程用于通过相应的设备驱动来获取或者设置硬件状态。在字符设备驱动里,unlock_ioctl函数原形:long (*unlocked_ioctl) (struct file *fl, un...

2018-02-28 23:10:19 1385

原创 21 类型的封装(内核里的继承)

类型的封装(内核里的继承)#include <linux/init.h>#include <linux/module.h>#include <linux/fs.h>#include <linux/cdev.h>#include <linux/slab.h>#include <asm/uaccess.h>...

2018-02-28 23:04:15 298

原创 20 字符设备驱动相关的函数和参数及实现(虚拟文件)

字符设备驱动相关的函数和参数及实现(虚拟文件)用户进程调用函数顺序:open ---> kernel ---> cdev.ops->open(..)read ---> kernel ---> cdev.ops->read(..)ioctl ---> kernel ---> cdev.ops->unlocked_io...

2018-02-28 22:59:32 378

原创 19 字符设备驱动基础

字符设备驱动基础设备驱动通常是给用户进程来调用的最常用的是设备驱动里实现字符设备驱动,实现后在”/dev/”目录里提供一个设备文件,然后用户进程就可以通过操作该设备文件来调用驱动如pc上的uart设备文件: crw-rw—- 1 root dialout 4, 64 Jun 8 09:20 /dev/ttyS0 crw-rw—- 1 root dialout 4, 6...

2018-02-28 22:49:48 201

原创 18 增加驱动源码到内核

增加驱动源码到内核linux内核源码目录下,进行配置时:make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 上面命令执行,它又会调用: scripts/kconfig/mconf Kconfig //其中"scripts/kconfig/mconf"是一个专门在...

2018-02-28 22:42:47 311

原创 17 驱动模块的符号导出(一个驱动模块调用另一个驱动模块)

驱动模块的符号导出(一个驱动模块调用另一个驱动模块)查看elf文件的信息 :readelf xxx.ko -aUND标识的函数在内核符号表里都是“T”,表示是全局函数,也就是说只有全局函数,内核才会帮我们把相应的函数地址转换好驱动模块里默认情况下不管是函数还是全局变量都是作局部使用(相当于在函数或者变量名前加了“static”) 如果需要作为全局使用,需要使用导出符...

2018-02-28 22:30:14 1159

原创 16 驱动模块参数(支持外部输入参数)

驱动模块参数(支持外部输入参数)模块参数是用于在加载驱动模块时,指定模块里面的特定变量的具体值。实现方法步骤:1.包含头文件: #include <linux/moduleparam.h>2.在驱动源码里定义变量: 如:static int num = 0;//当加载模块不指定num的值时则为03.声明指定的变量为驱动模块参数: ...

2018-02-27 23:32:27 530

原创 15 内核里控制IO口

内核里控制IO口在linux内核里mmu已经启用,不能直接访问物理地址,必须要把物理地址映射到一个虚拟地址上,然后通过该虚拟地址来访问原物理地址。相关函数:void *ioremap(cookie, size) //用于把指定的物理地址映射到一个虚拟地址上 //cookie用于指定要映射的物理地址,size表示映射的大...

2018-02-27 23:27:46 612

原创 14 Linux设备驱动基础编程

Linux设备驱动基础编程内核功能模块:进程调度,内存管理(mmu,分配进程内存),文件系统管理(如:支持的文件系统格式),设备驱动(硬件驱动由内核来统一管理),网络协议栈。模块机制: 静态加载:把驱动模块编进内核,在内核启动时自动加载。 动态加载:把驱动模块编为.ko文件,在内核启动后,需要用时手动加载。内核驱动头文件中所定义有关的宏:#def...

2018-02-27 22:36:36 216

原创 13 Linux设备驱动基础知识

Linux设备驱动基础知识驱动是硬件与用户进程之间的通信桥梁。用户进程是不可以直接访问硬件的。 数据是驱动先接收到硬件反馈的数据处理后再移交给用户进程的。驱动不属于任何一个用户进程,可以给多个用户进程调用。 驱动是常驻于内存里,等待用户进程调用。用户进程如访问越界则会发生段错误,但对其它进程没有影响。 用户进程在cpu的usr模式下工作。 驱动是在svc模式下工作(特权...

2018-02-27 22:31:35 254

原创 12 裸板实现printf函数

裸板实现printf函数在uboot上,首先uart第0个控制器已经被uboot驱动好了。 uart控制器负责数据的收发,我们只要把数据交给uart控制器发出,和从uart控制器里把数据取回来即可。 也就是我们只要找到相应的uart控制器的配置寄存器即可。查看Allwinner_H3_Datasheet_V1.1.edit.pdf说明文档P468页:uart0的基地址...

2018-02-27 22:28:25 237

原创 11 裸板控制IO

裸板控制IO控制器就是相当于一个接口,这个接口用于与特定用途的硬件模块通信及数据的交互。GPIO表示通用的IO接口,这些接口上面可以接不同的硬件模块。GPIO口共分成组: GPIOA, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOL。 每组里面有数个不等的IO口。GPIO口都是多功能的,可以做输入、输出、外部中断、控制器的引脚。 GPIO...

2018-02-27 22:25:39 490

原创 10 uboot的配置及编译过程分析

uboot的配置及编译过程分析uboot的配置过程(make config_uboot):1.orangepi_sdk目录下的Makefile: 26 PHONY += config_uboot 27 config_uboot : 28 @echo "+++++config uboot+++++" 29 @$(PWD)/script...

2018-02-27 22:21:27 304

原创 09 uboot上添加自己的命令

uboot上添加自己的命令在uboot里增加自定义的命令:只要实现一个功能函数,再调用U_BOOT_CMD宏即可。uboot命令统一放在源码目录orangepi_sdk/source/u-boot-2016.07里的cmd目录,每个文件表示一类或一个命令。实现一个自己的命令,在cmd目录里:1.编写cmd_mytest.c文件:#include <common...

2018-02-27 22:18:23 241

原创 08 配置telnet服务

配置telnet服务telnet是一个通过网络登录系统的服务,busybox里本身已有提供此服务程序,只要配置好即可使用。 配置服务后,就可以不再用通过uart线来操作板上系统,只要网络连通,即可通过网络来操作。让开发板启动进入文件系统后,在minicom上操作(不是在pc端):1.修改/etc/init.d/rcS,在后面增加语句: mkdir /dev/pt...

2018-02-27 22:09:24 320

原创 07 wifi驱动配置

wifi驱动配置OrangePiLite板上的wifi型号是rtl8189fs(用的接口是sdio)。1.配置内核,编译出所需的wifi驱动模块:(1)进入源码目录orangepi_sdk/source/linux-3.4.112(2)配置: make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabi...

2018-02-27 22:06:50 777

原创 06 通过USB线实现开发板与PC端的网络通信

通过USB线实现开发板与PC端的网络通信板上的uart通过usb线接到pc上,板子可以通过uart口接收到pc端的uart口发出内容,pc端也可接收到板上发的内容。板上的uboot会接收uart数据,并会把接收到的内容转发回去(回显)。板上uboot通过uart接收命令,并把执行命令的结果通过uart口发出去。linux内核的作用:统一管理软硬件的资源,而且也统一硬件设备的

2018-02-06 00:52:38 6818

原创 05 用busybox制作文件系统

用busybox制作自己的文件系统busybox用于制作小型的文件系统,常用于嵌入式。用busybox制作文件系统步骤: 1.进入orangepi_sdk/source/busybox-1.25.0目录 2.先清除编译出来的文件及配置文件: make distclean 3.配置busybox: make menucon

2018-02-05 23:11:23 337

原创 04 内核编译

Orange Pi内核编译1.配置交叉编译器: (1)解包gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2 tar -jxvf gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2 (2

2018-02-05 23:09:10 509

原创 03 uboot常用的命令

uboot常用命令uboot是bootloader的一种,主要是用于引导内核启动。uboot除此功能外,还带有很多其它功能;功能是通过命令来调用。uboot常用命令: help //列出当前uboot所有支持的命令 help 命令 //查看指定命令的帮助 reset //重启uboot printenv //打印所

2018-02-05 21:00:59 243

原创 02 uboot编译与启动

uboot编译计算机系统的组成:CPU,内存,输入/输出设备,外存(硬盘)。单片机:一个芯片上就是一个完整的计算机系统。片上系统(system on chip, SOC):功能更强大的单片机。arm:一种CPU核心(如:51(intel));arm公司不会生产具体的硬件芯片,只设计CPU核心,通过与芯片厂家合作,生产基于arm核心的具体CPU芯片。USB转TTL线:

2018-02-05 16:13:39 448

原创 01 Linux下的串口调试助手(minicom)

minicomminicom是linux下的串口调试助手。minicom是pc上操作uart设备的一个软件工具。 minicom会捕捉用户的键盘输入,并把输入的内容通过uart接口发出去,但不显示发出的内容。minicom只显示通过uart接口接收到的内容。1.安装minicom: sudo apt-get install minicom*2.配置minic

2018-02-05 16:10:46 1123

原创 触摸按键传感器模块

触摸按键传感器模块

2018-02-04 16:20:07 5402

原创 人体感应模块

人体感应模块 简单来说: +端接电源的正极;-端接电源的负值;out端为输出端,当人进入范围时输出高电平,人离开范围时延时一段时间后输出低电平。

2018-02-04 15:14:43 5430

原创 有源蜂鸣器模块

有源蜂鸣器 只要将VCC端接入3.3v~5v电压,GND端接地,I/O接信号的输入(低电平/高电平,本人的为低电平触发),当触发时就能发出“哔哔哔~~~”的响声;注意: 1. 继电器的驱动电压,不能超过限制电压,不然会烧掉继电器; 2. 低电平触发,还是高电平触发。示例代码:#include //cc2530芯片(zigbee)#define LED1

2018-02-04 14:23:27 15156 2

原创 UART编程基础

UART基础知识通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。串口:每次传输是按位为单位进行传输的接口。 如uart, us

2018-02-03 16:13:57 627

原创 云台

云台控制设计云台标识 云台的标识标明了云台接线的各接线端接通时所执行的功能。云台接线云台控制器 画圈标明处用来接USB转485转换器,通过转换器,将运行程序写入控制器中,控制云台工作。 每个Byte都用十六进制表示; Synch Byte总是为0xFF; Address为云台的本地地址(即第几个云台,如:0x02) 想要云台怎

2018-02-03 15:10:12 1080

原创 继电器模块

继电器设计设备的火线接继电器的常开端(NO),电源线接继电器的公共端(COM);不通电情况下,公共端(COM)和常闭端(NC)是连接的;通电时,公共端(COM)和常闭端(NC)断开,公共端(COM)和常开端(NO)连接,设备正常工作。注意: 1. 继电器的驱动电压,不能超过限制电压,不然会烧掉继电器; 2. 低

2018-01-31 22:26:34 10653

空空如也

空空如也

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

TA关注的人

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