Platform设备驱动
🚀 Platform设备驱动简介很多设备虽然用途不同,但其接口定义都是一样的 ,因此很多时候我们不需要去为每个设备都写一个驱动 。
因此 Linux 2.6 及以后的内核中虚拟出来的一条总线 ,即 platform 总线。
平台总线模型将设备代码和驱动代码分离, 将和硬件设备相关的都放到 device.c 文件里面,驱动部分代码都放到 driver.c 文件里面。
这样做的好处是, 实现了此类设备和驱动的分离, 增强设备驱动的可移植性。
🚀 Platform 设备✈ platform_device 结构体在 platform 平台下用 platform_device 这个结构体表示 platform 设备。
如果内核支持设备树的话就不用使用 platform_device 来描述设备了, 因为改用设备树去描述了 platform_device。
具体定义在内核源码 /include/linux/platform_device.h 里面, 结构体内容如下:
1234567891011121314151617struct platform_device { ...
杂项设备驱动点灯
🚀 驱动程序123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120#include <linux/init.h> // 包含初始化宏定义的头文件#include <linux/module.h> // 包含初始化加载模块的头文件#include <linux/miscdevice.h> // 杂项设备驱动相关的头文件#include <linux/fs.h> // 包含文件操作集定义的头文件#include <linux/io.h> ...
Linux杂项设备驱动
🚀 杂项设备驱动简介杂项设备是字符设备的一种,它比常规字符设备驱动更加简单。
杂项设备驱动可以自动生成设备节点,而且所有杂项设备的主设备号均为 10,可以有效节约内核资源。
可以用 cat /proc/misc 来查看系统当前的杂项设备。
🚀 miscdevice 结构体misc 设备用 miscdevice 结构体表示, miscdevice 结构体的定义在内核源码具体定义在 include/linux/miscdevice.h 中, 内容如下:
123456789101112// 一般只需要给 minor、name、fops 这三个成员变量赋值即可struct miscdevice { int minor; //次设备号 const char *name; //设备节点的名字 const struct file_operations *fops; //文件操作集 struct list_head list; struct device *parent; struct device *this_device; const struct attr ...
linux字符驱动
🚀 设备号✈ 设备号简述设备号由主设备号和 次设备号构成。主设备号用来表示一个特定的驱动程序。 次设备号用来表示使用该驱动程序的各个设备。 Linux 提供了一个名为dev_t 的数据类型表示设备号, dev_t 定义在文件 include/linux/types.h 里面, 定义如下:
12typedef __u32 __kernel_dev_t;typedef __kernel_dev_t dev_t
由 dev_t 类型的定义可知,设备号是一个32位的变量, 其中 前12 位用来表示主设备号(0-4095 ), 后20 位用来表示次设备号。
Linux 提供了几个宏定义来操作设备号:
12345#define MINORBITS20 //次设备号的位数, 一共是 20 位#define MINORMASK ((1U << MINORBITS) - 1) //次设备号的掩码#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS)) //在 dev_t 里面获取我们的主设备号#define ...
Linux系统TF卡镜像生成脚本
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#! /bin/bash# 变量定义ImgFile=CocoPI-Zero.img # 生成的镜像文件名称Sdb1Name=boot # 第一分区名称Sdb2Name=rootfs # 第二分区名称UbootFile=u-boot-sunxi-with-spl.bin # 使用的 uboot 文件zImageFile=zImage # Linux内核镜像文件名称dtbFile=suniv-f1c100s-licheepi-nano.dtb # 设备树文件名称rootfsFile=rootfs.tar # 文件系统压缩包sudo echo & ...
CocoPI-Zero开发学习资料汇总
🚀 荔枝派Nano资料荔枝派Nano 全流程指南:https://wiki.sipeed.com/soft/Lichee/zh/Nano-Doc-Backup/index.html
荔枝派Nano 资料下载:https://dl.sipeed.com/shareURL/LICHEE/Nano
🚀 李山文大佬编写的教程https://www.writebug.com/myres/static/uploads/2022/3/13/72bf30443093e49a1f9622336c852c8b.html
🚀 墨云大佬的博客https://www.cnblogs.com/twzy/
🚀 立创开源硬件资料https://oshwhub.com/lengyuefeng/v3scopy_copy
https://oshwhub.com/an_ye/f1c100s_copy_copy
🚀 其他资料哇酷开发者社区:https://whycan.com/
驱动开发视频教程:https://space.bilibili.com/417254117/favlist?fid=1412587817&a ...
linux开发环境搭建
🚀Ubuntu16固定IP地址打开网络设置,安装下图进行相应的设置即可。
ifconfig 命令查询一下当前IP
然后 ping 一下 baidu.com,如果可以 ping 通则说明设置成功。
🚀 SSH 服务开启开启 Ubuntu 的 SSH 服务以后我们就可以在 Windwos 下使用终端软件登陆到 Ubuntu,比如 使用 MobaXterm。
Ubuntu 下使用如下命令开启 SSH 服务:
1sudo apt-get install openssh-server
上述命令安装 ssh 服务,ssh 的配置文件为/etc/ssh/sshd_config,使用默认配置即可。
🚀 FTP 服务开启Windows 和 Ubuntu 下的文件互传我 们需要使用 FTP 服务.
设置方法如下:
1、 执行如下命令来安装 FTP 服务:
1sudo apt-get install vsftpd
2、使用 VI 命令打开/etc/vsftpd.conf,命令如下:
1sudo vi /etc/vsftpd.conf
打开以后 vsftpd.conf 文件以后找到如下两 ...
vim简易配置
Vim简易配置原则:简易实用方便,不装额外插件。
123456789101112131415161718192021222324252627282930313233343536syntax on "语法高亮"set number "显示行号"set cursorline "突出显示当前行"set showmatch "括号匹配"set showmode "在底部显示当前模式"set showcmd "命令模式下显示键入的指令"set t_Co=256 "启用256色"set textwidth=80 "设置行宽"set wrap "超过设定行宽时自动换行""set nowrap" "取消自动换行"set scrolloff=5 ...
ESP32获取网络时间
原文链接:https://blog.csdn.net/Naisu_kun/article/details/115627629?ops_request_misc=&request_id=&biz_id=102&spm=1018.2226.3001.4187
🚀 示例代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include <WiFi.h>const char *ssid = "********"; //你的网络名称const char *password = "********"; //你的网络密码const char *ntpServer = "pool.ntp.org";const long gmtOffset_sec = 8 * 3600;const int daylightOffset_sec = 0;void printLocalTim ...
vim常用命令总结
插入模式
快捷键
说明
i
在光标处进入插入模式
I
在行首进入插入模式
a
在光标后进入插入模式
A
在行尾进入插入模式
o
在下一行插入新行并进入插入模式
O
在上一行插入新行并进入插入模式
gi
进入到上一次插入模式的位置
<esc>
退出插入模式
缓存操作
快捷键
说明
:e <filename>
新建buffer打开文件
:bp
切换到上一个buffer
:bn
切换到下一个buffer
:bd
删除当前buffer
窗口操作
快捷键
说明
:sp <filename>
横向切分窗口并打开文件
:vsp <filename>
竖向切分窗口并打开文件
<c-w>h
跳到左边的窗口
<c-w>j
跳到下边的窗口
<c-w>k
跳到上边的窗口
<c-w>l
跳到右边的窗口
<c-w>c
关闭当前窗口
<c-w>o
关闭其他窗口
:onl ...