树莓派学习笔记
文章平均质量分 59
树莓派的刷机登录、Linux静态动态库、继电器语言模块与其结合、交叉编译等等
SkyGloaming
这个作者很懒,什么都没留下…
展开
-
内核驱动操控IO口源码(pin17引脚)
根据博文:芯片手册导读,查看引脚17的相关寄存器得到引脚17位于寄存器GPFSEL1位数bit23-21 位于寄存器GPSET0位数bit17 位于寄存器GPCLR0位数bit17对比博文:内核驱动操控IO口源码(pin4引脚)修改声明等参数修改有关寄存器的代码#include <linux/fs.原创 2021-10-08 23:42:51 · 253 阅读 · 0 评论 -
内核驱动操控IO口源码(pin4引脚)
代码分析可查看博文:编写内核驱动操控IO口代码原理分析一、驱动代码:#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原创 2021-10-08 21:24:46 · 346 阅读 · 0 评论 -
树莓派学习笔记(十六)编写内核驱动操控IO口代码原理分析
驱动源码、测试源码可查看博文:内核驱动操控IO口源码1、驱动代码编写框架查看博文:基于框架编写驱动1.1 声明寄存器,并赋值为NULL volatile unsigned int* GPFSEL0 = NULL; volatile unsigned int* GPSET0 = NULL; volatile unsigned int* GPCLR0 = NULL;原因:寄存器地址是物理地址,需要映射为虚拟地址,故将具体地址放在init函数中去映射成虚拟地址,而不直接赋值volatile原创 2021-10-08 21:16:20 · 292 阅读 · 0 评论 -
树莓派学习笔记(十五)博通BCM2835芯片手册导读
树莓派3b的CPU型号为:BCM2835(ARM-cotexA53架构)CPU型号为2440、2410(ARM9架构)编写驱动需要电路图(作用通过电路图找到寄存器)、芯片手册树莓派官网:pinout.xyz/pinout 可查看引脚的寄存器一、第六章节(General Purpose I/O(GPIO)p89)共有54个引脚分为2组,每个引脚至少有2个可选功能有41个寄存器,每个寄存器有32位注意的是此处Address表示的是总线地址而非物理地址常用寄存器(GPFSELn、GPSE原创 2021-10-08 20:27:15 · 3799 阅读 · 1 评论 -
树莓派学习笔记(十四)地址总线、物理地址、虚拟地址
一、地址总线概念:属于一种电脑总线,是由CPU或有DMA能力的单元,用来沟通这些单元想要存取电脑内存元件/地方的实体位址。 通俗来说就是cpu可直接寻址的内存空间大小(例地址总线有32位,即可以访问2^32bit)现象:32位的win7系统,即使内存条为8G,但是系统只识别了3.8G; &nbs原创 2021-10-08 17:54:09 · 342 阅读 · 0 评论 -
树莓派学习笔记(十三)基于框架编写驱动代码
一、代码分析:在内核中由于代码文件多,避免函数名重复,使用static将函数的作用域限制在该文件内内核的打印函数printk和printf类似file_operations结构体使用符号“ . ”指定参数,省去不需要的参数pin4_drv_init初始化函数:MKDEV根据主设备号、次设备号创建设备号register_chrdev 注册驱动,将驱动加入到内核驱动链表中class_create 创建设备类device_create 创建设备文件pin4_drv_exit原创 2021-10-08 17:48:36 · 226 阅读 · 0 评论 -
树莓派学习笔记(十二)Linux驱动认知及编译加载驱动
一、驱动认知:Linux下一切皆文件设备都拥有自己对应的驱动程序通过文件名、设备号去驱动链表中查找驱动设备号分为主设备号和次设备号 主设备号:用来区分不同种类的设备 次设备号:用来区分同一类型的多个设备驱动链表:管理所有设备的驱动添加:编写完驱动程序,加载到内核中查找:调用驱动程序,由用户空间调用函数open添加驱动:驱动插入链表的顺序由设备号检索需要设备名、设备原创 2021-10-08 17:35:27 · 590 阅读 · 1 评论 -
树莓派学习笔记(十一)Linux系统结构框图
一、Linux系统结构框图分为用户级、内核级、硬件级用户级的用户程序通过系统调用接口与内核进行交互内核级中的系统调用接口分为与文件子系统交互、与进程控制子系统交互内核级中的硬件控制来控制硬件级的硬件设备内核分为五大模块:进程调度模块、进程间通信模块、内存管理模块、文件系统模块、网络接口模块所有的模块都需要通过进程调度模块运行具体分析库函数为用户程序提供支配内核干活的接口虚拟文件系统(VFS)包含了系统调用接口,其为各种文件系统提供了一个通用的接口文件子系统:分配文件空间、控原创 2021-10-08 17:05:18 · 1530 阅读 · 0 评论 -
树莓派学习笔记(十)文件系统、虚拟文件系统
一、文件系统1. 什么是文件系统?文件系统就是操作系统用来明确存储设备上文件的方法和数据结构,即在存储设备上组织文件的方法。管理和存储文件信息的软件机构称为文件管理系统,简称为文件系统2. 文件系统(文件管理系统的方法)的种类有哪些?Windows :FAT、VFAT(FAT32)、NTFSLinux :EXT1/2/3/4Mac os :HFS… 树莓派查看文件系统的命令: df -T vfat : boot(bootloader, kernel) ext4原创 2021-10-08 16:51:27 · 477 阅读 · 0 评论 -
树莓派学习笔记(九)树莓派Linux内核开发
一、树莓派Linux源码配置1、概念:驱动代码的编译需要一个提前编译好的内核,想要编译内核就必须先配置配置的最终目标会生成 .config文件,该文件指导Makefile去把有用东西组织成内核厂家配备Linux内核源码,比如说买了树莓派,就会有树莓派linux内核源码 第一种方式: 使用厂家.config原创 2021-09-30 11:32:06 · 588 阅读 · 0 评论 -
树莓派学习笔记(八)树莓派Linux内核开发准备工作及概念
一、下载所需文件交叉编译工具的下载安装及配置(可查看博文:学习笔记六)下载树莓派Linux内核下载地址:https://github.com/raspberrypi点击Linux,根据树莓派版本,下载相对应的版本(树莓派版本通过命令gpio -v查询)从共享文件夹中拷贝树莓派Linux内核并解压(可查看博文:设置共享文件夹)cp /mnt/hgfs/share/linux-rpi-4.14.y.zip ./ unzip linux-rpi-4.14.y.zip二、树莓派等芯片的启动过程原创 2021-09-30 11:01:05 · 205 阅读 · 0 评论 -
树莓派学习笔记(七)带wiringpi库的交叉编译、软硬链接
观看学习上官可编程陈立臣老师的树莓派视频,在其过程中所记录的学习笔记所用到的Linux命令: cp -rf 拷贝文件夹(r表示文件夹,f表示强制执行) ls -l 显示文件详细信息 grep gcc * -nir 在所有文件中查找gcc字段 *表示所有文件 n显示行号 i不区分大小写 r递归查找一、 带wiringPi库的交叉编译如何进行1、正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序,链接库的格式也是正确的。原创 2021-09-29 21:35:39 · 318 阅读 · 0 评论 -
树莓派学习笔记(六)交叉编译概念及安装使用
一、交叉编译概念1、什么是交叉编译交叉编译:是在一个平台上生成另一个平台上的可执行代码。 我们在windows上面编写C51代码,并编译成可执行代码,如xx.hex, &原创 2021-09-27 21:26:03 · 2636 阅读 · 0 评论 -
树莓派学习笔记(五)串口通信
一、串口通信概念1、串口通信用于多机通信2、串口通信属于全双工通信,即双方可以同时进行交流半双工通信,一次只允许一方进行通信3、树莓派进行串口通信要连接两根线TXD和RXD,连接时要相反连接(即树莓派的TXD要与通信方的RXD相连,RXD与TXD相连)4、进行串口通信时,数据格式(数据位、停止位、奇偶校验位)和波特率,通信双方要保持一致二、串口通信编程树莓派的串口是/dev/ttyAmA0(Linux一切皆文件)1、配置串口修改/boot/cmdline.txt文件,将“console原创 2021-09-26 23:02:14 · 3388 阅读 · 0 评论 -
树莓派学习笔记(四)外设开发编程使用
观看学习上官可编程陈立臣老师的树莓派视频,在其过程中所记录的学习笔记一、树莓派初始化函数#include <wiringPi.h>int wiringPiSetup (void) 返回执行状态,0表示成功,-1表示失败实例代码:#include <wiringPi.h>#include <stdio.h>int main(){ int i; i=wiringPiSetup(); printf("%d\n",i原创 2021-09-26 22:02:10 · 423 阅读 · 0 评论 -
树莓派学习笔记(三)外设开发编程概念
观看学习上官可编程陈立臣老师的树莓派视频,在其过程中所记录的学习笔记1. 树莓派外设开发接口文档参考WiringPi库接口详解:参考博文:https://www.cnblogs.com/lulipro/p/5992172.html2. 树莓派的接口IO口:input output 对主控来说 Input:人体,烟雾,火焰,震动等 Output:继电器,蜂鸣器PWM:电机调速,灯光调明亮度 语音识别模块,液晶屏(都有以下四种接口类型)串口uartIICSPIIIS其他特定硬原创 2021-09-25 23:17:17 · 1106 阅读 · 0 评论 -
树莓派学习笔记(二)Linux静态动态库
1.分文件编程 分模块的编程思想 a.功能责任划分 b.方便调试 c.主程序简洁2.函数库概念 函数库可以分为:静态函数库、共享函数库、动态加载库; 共享函数库和动态加载库实际上是同一个 Linux中称为共享函数库,以so为后缀, Windows中称为动态加载库,以dll为后缀  原创 2021-09-25 11:42:18 · 209 阅读 · 0 评论 -
树莓派学习笔记(一)树莓派刷机及登录
树莓派学习笔记(一)树莓派刷机及登录1.树莓派刷机SD卡、读卡器软件:固件包:下载并运行Win32DiskImage,选择SD卡所在盘及固件包进行刷机2.树莓派登录2.1 HDMI视频线连接到显示器2.2 串口登录2.2.1 修改配置文件默认情况,树莓派的串口和蓝牙连接;需要断开蓝牙连接,将该串口用来数据通信将SD卡插入读卡器中,打开“config.txt”,将“dtoverlay=pi3-miniuart-bt”添加到最后一行作用解除蓝牙对串口的占用打开“cmdline.txt原创 2021-09-25 00:43:28 · 369 阅读 · 0 评论