配置ftp并传输数据 这里写目录标题一、Host安装ftp二、Remote安装、配置并启动ftp服务1. 安装2. 配置3. 启动三、Host使用ftp实例OS version:Ubuntu18.04·Host ip:10.10.1.123Remote ip:10.10.1.456目标:在Host下使用ftp,与Remote双向传输数据。一、Host安装ftpsudo apt update sudo apt install vsftpd二、Remote安装、配置并启动ftp服务1. 安装sudo apt up
字符设备驱动框架及测试程序 字符设备驱动框架及测试程序1. 驱动框架1.1 驱动文件: my_cdev.c1.2 Makefile2. 驱动测试程序2.1 测试文件: my_cdev_test.c2.2 Makefile3. 测试结果(全程打开dmesg)3.0 全程打开dmesg3.1 加载driver3.2 运行test程序3.3 卸载driver4. 附dmesg1. 驱动框架1.1 驱动文件: my_cdev.c#include <linux/module.h>#include <linux/cdev
测试Cgroup下的FROZEN(冻住)/THAWED(解冻)对wait_event_interruptible()的影响 测试Cgroup下的FROZEN/THAWED对wait_event_interruptible的影响一、带有等待队列的字符设备驱动(testdrv.c)二、应用程序(test.c)三、FROZEN/THAWED测试观察及结论NOTE:测试环境------Centos7,Kernel 5.4.24的x86 PC机上一、带有等待队列的字符设备驱动(testdrv.c)#include <linux/fs.h>#include <linux/init.h>#include
推流端ffmpeg + nginx环境的搭建(ubuntu 18.04) 推流端ffmpeg + nginx环境的搭建一、ffmpeg的配置安装1. 编译安装libx264及libx2651.1 安装libx2641.2 安装libx2652. 编译安装ffmepg 4.1.5二、nginx的配置安装及使用1. 获取nginx-rtmp-module-1.1.102. 获取openssl-1.0.1f3. 安装nginx-1.10OS verison:Ubuntu 18.04.1一、ffmpeg的配置安装1. 编译安装libx264及libx2651.1 安装li
某平台pcie设备的(host)controller驱动框架及其phy驱动框架(二) 某phy驱动框架1、相关结构2、phy驱动框架NOTE:Kernel version: 5.4.24File Path:drivers/phy/xxxxxx/phy-xxx-pcie.c(省略返回值判断)1、相关结构2、phy驱动框架
某平台pcie设备的(host)controller驱动框架及其phy驱动框架(一) 平台pcie设备的controller驱动框架1、相关结构的定义2、controller驱动框架7)编写xxx_pcie_host_init函数6)定义pcie_port的操作函数xxx_pcie_host_ops5)probe函数调用的主要函数4)编写xxx_pcie_probe和xxx_pcie_shutdown函数3)定义.driver.of_match_table2)定义一个platform driver1)入口函数3、phy驱动框架NOTE:Kernel version: 5.4.24Fil
Linux设备驱动开发---USB主机(控制器)与设备驱动(三) USB主机控制器与设备驱动---主机侧一、Linux USB驱动层次二、USB主机(控制器)驱动三、USB设备驱动3.1 usb_driver3.2 USB请求块(URB)3.3 probe和disconnect函数3.4 USB骨架程序(详解)10)编写skel_delete函数(减少引用计数时使用)9)编写skel_write及其完成函数;8)编写skel_read及依赖函数7)编写skel_open和skel_release函数6)定义skel_class里的成员函数;5)定义usb_class_dr
Linux设备驱动开发---USB主机(控制器)与设备驱动(一) USB主机控制器与设备驱动---主机侧一、Linux USB驱动层次1、USB驱动(主机侧)2、USB的逻辑组合(4个层次)二、USB主机(控制器)驱动1、主机控制器规格2、主机控制器的相关结构3、实例:xHCI主机控制器驱动三、USB设备驱动四、实例一、Linux USB驱动层次1、USB驱动(主机侧)NOTE:在Linux 系统中,USB驱动可以从两个角度去观察,一个角度是主机侧,一个角度是设备侧。从主机侧角度看,USB驱动从底到上依次是:USB主机控制器硬件层 --> USB主机控制
Centos7选定默认启动的内核版本 查看系统可用内核cat /boot/efi/EFI/centos/grub.cfg | grep menuentry修改开机时默认使用的内核grub2-set-default 'CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)'查看修改结果grub2-editenv list删除指定内核yum remove kernel-x.xx.x-xxx.el7.x86_64...
Linux设备驱动开发---PCI设备驱动 PCI设备驱动(Linux kernel 4.9.x)一、PCI总线与配置空间1、PCI桥:一种特殊的PCI设备。2、PCI总线的数据结构3、PCI设备的数据结构4、PCI配置空间二、PCI设备驱动结构1、pci_driver结构体2、PCI设备驱动的组成三、驱动实例(省略返回值及部分代码)一、PCI总线与配置空间1、PCI桥:一种特殊的PCI设备。HOST/PCI桥: 连接CPU和PCI根总线;通常被称为“北桥芯片组”。PCI/ISA桥: 连接旧的ISA总线;通常被称为“南桥芯片组”。PCI-
Linux驱动开发---网络设备驱动 网络设备驱动(Linux kernel 4.9.x)网络接口层网络协议接口层:net/core/dev.c1.1 重要函数 int dev_queue_xmit(struct sk_buff *skb); /*发送*/ int netif_rx(struct sk_buff *skb); /*接收*/1.2 重要结构体:套接字缓冲区 struct sk_buff{ ... ... /* These elements must be at the end, see
Linux驱动开发---块设备驱动 块设备驱动主要结构gendisk结构体:表示一个独立的磁盘设备(或分区)1.1 定义如下:struct gendisk { /* major, first_minor and minors are input parameters only, * don't use directly. Use disk_devt() and disk_max_parts(). */ int major; /* major number of driver */ int fir
Linux驱动开发---字符设备驱动 字符设备驱动按键驱动数据结构1.1 设备结构体:缓存键值的buf、缓存按键状态、等待队列、cdev结构体1.2 定时器:软件延时(防抖)1.3 按键硬件信息、键值结构体:记录每个按键对应的中断、GPIO、键值1.4 文件操作结构体:打开、释放、读。流程2.1 确认按键的流程(中断)第一次有按键按下中断,屏蔽中断,延时,再次检测看是否仍是按下状态,若是,则确认按下。否则认为是抖动。2.2 定时器处理流程上述确认按键流程最后,再次查询按键状态是否仍是按下,若是,则将键值录入缓冲区、
Linux驱动开发---内存与I/O 内存与I/OMMU功能1.1 虚拟地址和物理地址的映射;1.2 内存访问的权限保护;1.3 Cache缓存控制。相关概念2.1 TLB:转化旁路缓存。缓存虚拟地址与物理地址的转换关系,也称“快表”。2.2 TTW:转化表漫游。在TLB中没有所需的虚拟地址与物理地址的转换关系时,会去主存储器转换表中获取相应关系,并缓存到TLB中。2.3 DTLB/ITLB:数据TLB/指令TLB。2.4 C:高速缓存。2.5 B:缓冲。CPU数据访问流程Linux内存管理内存空间
Linux驱动开发---中断和定时器 中断分类向量中断:由硬件提供中断服务程序的入口地址。非向量中断:由软件提供中断服务程序的入口地址。顶半部(top half)/底半部(bottom half)top half: 读取中断状态、清除中断标志后作“登记中断”的工作;—便于服务更多的中断bottom half:完成中断处理的大部分工作;一般比较耗时。Note:一个中断处理不一定都要分为两部分。如果top half本身能够完成整个中断处理,那bottom half也就不需要了。Linux中断编程申请/释放中断:request_