自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (2)
  • 收藏
  • 关注

原创 Setup exvim enviroment

exvim setup

2023-09-22 12:13:41 102

原创 SD卡初始化、读写流程及其相关CMD

sd卡初始化、读写

2023-06-27 10:22:31 1662

原创 配置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

2021-07-16 16:13:26 689 1

原创 字符设备驱动框架及测试程序

字符设备驱动框架及测试程序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

2021-06-24 09:46:41 224

原创 查看PCIe设备的MSI和MSI-X的配置

查看PCIe设备的MSI和MSI-X的配置

2021-04-02 10:40:08 700

原创 测试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

2021-02-24 20:41:42 382

原创 推流端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

2021-01-28 21:48:20 662

原创 某平台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驱动框架

2021-01-12 20:29:52 868 1

原创 某平台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

2021-01-12 20:26:48 1598

原创 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

2020-12-30 20:16:14 590

原创 Linux设备驱动开发---USB主机(控制器)与设备驱动(二)

USB主机控制器与设备驱动---主机侧三、USB设备驱动四、实例三、USB设备驱动四、实例

2020-12-30 20:11:30 402 1

原创 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主机控制

2020-12-30 20:06:45 1917

原创 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...

2020-12-29 11:09:45 1033

原创 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-

2020-12-18 20:38:01 372 2

原创 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

2020-12-10 20:21:51 447

原创 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

2020-12-07 16:19:55 249

原创 Linux驱动开发---字符设备驱动

字符设备驱动按键驱动数据结构1.1 设备结构体:缓存键值的buf、缓存按键状态、等待队列、cdev结构体1.2 定时器:软件延时(防抖)1.3 按键硬件信息、键值结构体:记录每个按键对应的中断、GPIO、键值1.4 文件操作结构体:打开、释放、读。流程2.1 确认按键的流程(中断)第一次有按键按下中断,屏蔽中断,延时,再次检测看是否仍是按下状态,若是,则确认按下。否则认为是抖动。2.2 定时器处理流程上述确认按键流程最后,再次查询按键状态是否仍是按下,若是,则将键值录入缓冲区、

2020-12-07 16:18:28 263

原创 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内存管理内存空间

2020-12-02 20:57:41 453

原创 Linux驱动开发---中断和定时器

中断分类向量中断:由硬件提供中断服务程序的入口地址。非向量中断:由软件提供中断服务程序的入口地址。顶半部(top half)/底半部(bottom half)top half: 读取中断状态、清除中断标志后作“登记中断”的工作;—便于服务更多的中断bottom half:完成中断处理的大部分工作;一般比较耗时。Note:一个中断处理不一定都要分为两部分。如果top half本身能够完成整个中断处理,那bottom half也就不需要了。Linux中断编程申请/释放中断:request_

2020-11-16 17:02:06 252

原创 互斥体(mutex)

定义和初始化互斥体struct mutex my_mutex; //定义名为my_mutex的互斥体mutex_init(&my_mutex); //初始化获取互斥体void fastcall mutex_lock(struct mutex *lock);//与前者的区别在于,后者引起的睡眠可被信号打断。int fastcall mutex_lock_interruptible(struct mutex *lock);//尝试获取mutex,获取不到mute.

2020-09-22 15:15:14 414

原创 互斥机制之信号量(semaphore)

信号量(semaphore)//只有得到信号量的进程才能执行临界区代码;//当获取不到信号量时,进程不会原地打转而是进入休眠等待状态。1.定义信号量struct semaphore sem;初始化信号量//初始化信号量,设置信号量sem的值为val。void sema_init (struct semaphore *sem, int val);void init_MUTEX(struct semaphore *sem);== sema_init (struct semaphore *se

2020-09-22 15:13:32 533 2

原创 互斥机制之自旋锁(spinlock)

一、(基础)自旋锁如果测试结果表明锁仍被占用,程序将在一个小的循环内重复这个“测试并设置”操作,即进行所谓的“自旋”。1.定义自旋锁spinlock_t spin;2.初始化自旋锁spin_lock_init(lock);//该宏用于动态初始化自旋锁lock。3.获得自旋锁spin_lock(lock);//该宏用于获得自旋锁lock。//如果能立即获得锁,就马上返回;否则将自旋在那里,直到该自旋锁的保持者释放;spin_trylock(lock);//该宏尝试获得自旋锁lock。

2020-09-21 15:21:41 575

原创 互斥机制之原子操作

一、整型原子操作1.设置原子变量的值void atomic_set(atomic_t*v, int i); //设置原子变量的值为iatomic_t v =ATOMIC_INIT(0); //定义原子变量v并初始化为02.获取原子变量的值atomic_read(atomic_t *v); //返回原子变量的值3.原子变量加/减void atomic_add(int i, atomic_t *v); //原子变量增加ivoid atomic_sub(int i,atomic_t

2020-09-21 13:50:33 278

原创 Makefile --- functions

FunctionsCall Syntax$(<function> <arguments>) or ${<function> <arguments>}1) string handling function1.1) subst Usage: $(subst <from>,<to>,<text>) # replace <from> to <to> in <text>.1.2)

2020-07-20 11:05:26 206

原创 添加arm系列相关的cross compile toolchain

将共享文件夹中的交叉编译工具压缩包复制到/usr/local/arm文件夹下,并且解压:$sudo cp arm-toolchain.tar.bz2 /usr/local/arm/ $sudo tar xvf /usr/local/arm/arm-toolchain打开配置文件,修改环境变量,将交叉编译器的路径添加到PATH中:$sudo vim ~/.bashrc 然后在文件最后一行中加入内容:export PATH=$PATH:/usr/local/arm/arm-to.

2020-07-03 15:53:46 314

原创 fdisk实例

—sudo fdisk /dev/sdx—Command (m for help): pDisk /dev/sdd: 28.9 GiB, 30979129344 bytes, 60506112 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklab

2020-06-30 19:44:05 945

原创 git manage project first

进入本地需要push到github的项目,“cd”进入根目录。执行git init命令,初始化本地仓库,会创建一个.git的隐藏文件夹。执行git add .命令,将目录添加入索引执行git commit -m "commit name"执行git remote add origin https://gitlab.xxxxxx.com/xxxxxxx/xxxxxx.git;执行git pull origin master从远程仓库获取更新,在2.9.2之后的版本还需要加上--allow-unre.

2020-06-30 19:39:31 181

原创 vim练功秘籍

第一层—菜鸟kjhl --- “上下左右”移动光标i --- 当前光标位置插入dd --- 删除当前行(并将该行内容存到剪贴板里)p --- 粘贴剪贴板:wq --- 存盘+退出:help <command> --- 显示相关命令的帮助第二层—入门(1)各种插入模式 a --- 在光标后插入 o --- 在当前行后一行插入 O --- 在当前行前一行插入 cw --- 替换从光标所在位置后到一个单词结尾的字符 (2)简单的移动光标 0 --- 到本

2020-06-30 19:31:45 171

原创 闲置oppoR9sk---获取root权限

刷机

2020-04-12 16:03:54 6762

原创 双系统grub引导时,出现error: file '/boot/vmlinuz-xxx-xxx-xxx' not found的解决方法

晚上本想修改一下grub.cfg文件,去掉多余的引导项,没成想出现如题之尴尬局面。。。一番度娘之后终解决,下面是解决方法:Note: 在grub下,注意提示按c进入grub命令行模式首先需要确定你的ubutun安装到哪个硬盘哪个区;1.1 可以先使用ls命令,查看所有硬盘分区,如(hd0), (hd1,gpt1)等等。1.2 然后再使用ls (hd1, gpt8)查看。如果出现unkno...

2020-03-25 20:23:09 11255 1

原创 双系统win10+ubuntu,去除多余引导项

需要修改的配置文件:grub.cfg获取root权限,并进入/boot/grub文件夹:sudo sucd /boot/grub备份配置文件,并复制一份cp grub.cig grub_bak.cfgcat grub.cfg > tmp在tmp中去除(或注释)掉多余引导项,保存并用cat命令更新配置文件利用gedit或vim打开:vim tmp### menuent...

2020-03-25 20:20:30 1705

原创 configure QEMU时遇到缺少库和工具的问题

之前Running 64-bit RISC-V Linux on QEMU文章中,在configure QEMU时报错。下面是自己遇到的问题及解决方法,仅供参考。ERROR: glib-2.40 gthread-2.0 is required to compile QEMUapt-cache search glib //发现libglib2.0-dev sudo apt ins...

2020-03-11 10:40:45 514

原创 Running 64-bit RISC-V Linux on QEMU

Note: This has been tested on Ubuntu 18.04.Prerequisitessudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \ gawk build-essential bison flex tex...

2020-03-11 10:39:53 1236

原创 ubuntu 18.04 安装并使用evolution接收公司邮件

打开终端,输入以下命令:sudo apt-get install evolutionsudo apt-get install evolution-ews打开安装成功的evolution,进行配置:前面比较简单,一直下一步,直到最重要的一步如下图:首先选择服务器类型为Exchange网络服务;其次,保证用户名和主机url填写正确。完成上一步,基本就可以保证正常使用了。然后再设置新...

2020-02-11 20:47:56 2477

转载 Ubuntu 嵌入式 Arm-aarch64 开发环境搭建

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声...

2019-11-23 13:12:56 2457

原创 ubutun挂载新硬盘详细步骤

查看现有硬盘:sudo fdisk -l给新硬盘进行分区:sudo fdisk /dev/sdb 对新分区进行格式化创建挂载文件夹,将硬盘挂载到该文件夹下 补充:自动挂载 修改/etc/fstab文件:sudo vi /etc/fstab

2018-02-06 12:38:32 539

原创 SPI_MASTER驱动

SPI Master驱动参考文件:spi-s3c24xx.c (drivers\spi)(1) 编写框架声明spi_master结构体,并在init函数中定义(使用函数定义);exit函数;注册init、exit函数;头文件暂时直接拷贝spi-s3c24xx.c的; —头文件 参考spi-s3c24xx.c文件中probe函数,写出上述所需创建spi_master的

2018-02-06 10:46:05 787

原创 ubutun 16.04下安装samba

简介samba是一个标准的套件,用于windows和Linux、unix间的文件传输。更新源(若直接安装失败,需添加源进行更新后在进行安装) sudo apt-get update安装sambasudo apt-get install samba -y修改配置文件,在末尾追加一下内容sudo vi /etc/samba/smb.conf添加samba

2018-02-01 09:55:10 404

原创 SPI_FLASH驱动

SPI_FLASH驱动及调试(1)编写spi_flash驱动参考文件:mtdram.c (drivers\mtd\devices)和m25p80.c (drivers\mtd\devices)编写步骤:与前面spi_oled_drv类似,首先构建一个spi_driver结构体(注意其成员.name应与单板信息中的一致,即该驱动与单板信息文件配套使用),并注册; pro

2018-01-27 09:45:17 1459

原创 SPI_OLED驱动

SPI_OLED驱动(1)编写单板(设备)信息:构造spi_ board_info结构体创建spi_ info_jz2440.c文件。编写单板(设备)信息(模仿内核其他文件:acvilon.c等)。2.1 包含一些头文件(去掉明显不需要的)2.2 编写spi_board_info结构体2.3 注册结构体,添加相关协议 1/5/2018 10:01:56 AM (2)编写spi_ oled_d

2018-01-17 19:00:52 2503 1

空空如也

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

TA关注的人

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