自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (3)
  • 收藏
  • 关注

原创 ALSA内部函数调用流程

一直都有这样的一个疑问就是在linux系统中我们调用snd_pcm_open后,就不知道alsa内部是怎么运行的了

2023-05-15 11:30:21 550

原创 dnw usb下载

dnw usb 下载说明

2023-05-11 09:42:42 134

原创 linux 中的log

klogd 不使用配置文件,它负责截获内核消息,它既可以独立使用也可以作为 syslogd 的客户端运行。syslogd 默认使用 /etc/syslog.conf 作为配置文件,它负责截获应用程序消息,还可以截获 klogd 向其转发的内核消息。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。一般这个缓存中的log会被写入文件中,以防丢失,但目前移远没有这么做,因为这个缓存有10m,够用了。由于内核的特殊性,我们不能使用常规的方法查看内核的信息。1 printk()打印内核消息。

2023-03-03 15:53:32 780

原创 四、IA-32系列处理器 标志寄存器及使用

标志寄存器及使用

2023-02-27 22:31:05 156

原创 三、IA-32系列处理器 简单的汇编指令

使用举例。

2023-02-27 22:07:23 153

原创 二、IA-32系列处理器 通用寄存器介绍

寄存器处理器内的特殊存储单元处理器内有多种不同用途的寄存器寄存器分别有各自的名称,以便表示及访问通用寄存器IA-32系列CPU有8个32位的通用寄存器通用寄存器不仅能存储数据,而且能参与算术逻辑运算,还能给出存储单元的地址ESI作为指针给出存储单元地址EBX作为计算存储单元地址的一部分可以单独直接访问这些通用寄存器的低16位它们是8个16位的通用寄存器名称分别是对应16位处理器Intel 8086的8个通用寄存器。

2023-02-26 23:09:49 358

原创 一 、IA-32系列处理器介绍

IA-32系列处理器泛指:基于英特尔IA-32架构的32位微处理器Intel Pentium(奔腾)Intel Xeon(至强)Intel Core(酷睿)最大特点:保持与先前处理器的兼容处理器的重要指标处理数据的位数16位32位64位主频平行化程度流水线多核早期的16位处理器1978年,Intel率先推出16位微处理器80861979年,Intel推出准16位微处理器80881982年,Intel推出“超级”16位微处理器80286第一款32位处理器。

2023-02-26 22:54:18 387

原创 python

python

2022-10-17 14:24:40 127

原创 做个usb hub

做个usb hub

2022-10-17 14:23:13 168

原创 虚拟机安装samba

添加samba用户时不要直接用root用户,用你常用的用户,会更好点,以免不必要的麻烦。sudo pdbedit -a -u root 给samba加一个root用户。然后就可以在windows中用root用户来访问虚拟机中samba。sudo pdbedit -L -v 列出当前的smb数据库用户。PS:ip地址为你当前linux的ip地址。至此虚拟机samba安装结束。接下来是windows操作。最后一行加下面的内容。

2022-10-15 12:01:03 2176

原创 让模组ping 通虚拟机

a. 将虚拟机的桥接模式接在使用的以太网上。将虚拟机的ip设置到和电脑同网段。2.让虚拟机选择桥接模式。或者指令设置虚拟机ip。第二步:设置电脑ip。虚拟机ping 电脑。电脑ping 虚拟机。

2022-08-25 16:28:32 233

原创 关于stm32 启动文件的选择问题

关于stm32启动文件的选择问题。

2022-07-17 00:59:29 327

原创 音频基础 DAI:Digital Audio Interfaces

音频

2022-06-24 16:00:18 1440

原创 yocto资料查找

yocto资料查找yocto 官网:https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html红框中的都可以查看建议看《开发任务手册》tips:看英文看不下去,可以直接用网页翻译

2022-05-31 10:17:08 99

原创 yocto宏查看方式

yocto宏查看方式1.bitbake -c devpyshell bb文件名如:bitbake -c devpyshell imageimage : bb文件名添加:bitbake -e linux-extension | grep ^TOPDIRlinux-extension: 是bb文件名TOPDIR:要查看得宏名2.出现一个小窗口输入d.getVar(‘宏名称’)就可以看到宏了...

2022-05-31 10:16:56 276

原创 yocto 编译与bb的语法

yocto 编译与bb的语法Image : BootLoader、kernel、rootfsMachine : 平台相关控制、cpu类型、内存大小、外围驱动Distro : 软件的特性,版本选择,文件系统参数,客制化软件Bitbake :编译工具Recipe : 对应一个bb文件,详细的描述了一个源码的编译过程(获取,补丁,配置,编译,安装,打包,检查等)Meta : 把具有某种关联醒的recipe集合到一起,形成一个 “类”编译技巧:为单个配方文件执行任务相对简单。您指定有问题的文件,Bi

2022-05-31 10:16:41 4817

原创 linux 确定usb 对应的串口节点

linux 确定usb 对应的串口节点当开发板上的usb 虚拟的串口节点不止一个,如mtk ag568n的usb 虚拟出来的串口有三个,此时接入linux 中无法判断节点对应的是什么?如:window中的端口:如果将开发板接入linux中,会发现节点不知道怎么对应这里能看到Linux出现了三个节点 ttyACM0、ttyACM1、ttyACM2这样我就不知道windows中的ELT port 对应的是哪个节点。解决方法:1.在windows下查看ELT端口,可以看到00052.看li

2022-05-31 10:16:25 1332 1

原创 编译debug内核

编译debug内核修改点:./kernel/printk/printk.c执行 make kernel_menuconfig执行make kernel

2022-05-31 09:00:00 218

原创 Linux下profile和bashrc四种的区别

Linux下profile和bashrc四种的区别要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。 shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,

2022-05-30 10:53:55 1865

原创 proc文件夹下没有内容,fstab文件规则

proc文件夹下没有内容,fstab文件规则这是因为proc系统没有挂在上去在/etc/fstab 中加入proc /proc proc defaults 0 0即:

2022-05-30 10:52:55 351

原创 linux 中的log

linux 中的log由于内核的特殊性,我们不能使用常规的方法查看内核的信息。下面介绍几种方法。1 printk()打印内核消息。2 管理内核内存的daemon(守护进程) Linux系统当中最流行的日志记录器是Sysklogd,Sysklogd 日志记录器由两个守护进程(klogd syslogd)和一个配置文件(syslog.conf)组成。klogd 不使用配置文件,它负责截获内核消息,它既可以独立使用也可以作为 syslogd 的客户端运行。syslogd 默认使用 /etc/syslog.

2022-05-30 10:48:07 501

原创 linux分区挂载

linux分区挂载(1)ubiattach:将指定的mtd分区关联到ubi上用法:./ubiattach /dev/ubi_ctrl -m 1 -d 1, 将mtd1关连ubi_1(2)ubidetach:解除mtd与ubi的关联用法:./ubidetach /dev/ubi_ctrl -m 1mount -a 是自动挂载 /etc/fstab 里面的东西。要看oem.ubi分区的内容,需要将分区挂载到根文件系统直接将这个分区挂载到/mnt/oem,挂不上去mount /dev/mtd37

2022-05-30 10:46:14 481

原创 设备树描述

设备树描述内容来自《linux设备驱动开发详解–基于linux 4.0内核》设备树是一种描述硬件的数据结构,它起源于OpenFirmware(OF)在linux 2.6中,ARM架构的板极硬件细节过多的被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx中,采用设备树后,许多硬件的细节可以直接通过它传递给linux,而不再需要在内核中进行大量的冗余编码1.DTS设备树由一系列被命名的节点(node)和属性(Property)组成,而节点本身可包含子节点。所谓属性,其实就

2022-05-30 10:32:01 664

原创 fastboot 操作

fastboot 操作fastboot背景介绍1、什么是fastboot(1)fastboot是android使用的一种刷机方法。因为Android、的底层是Linux(2)fastboot使用usb作为物理传输(3)fastboot是uboot中的一个命令在uboot下输入fastboot命令,就可以让uboot进入fastboot模式,刷机就是在fastboot模式下进行刷机。(4)fastboot需要主机端的fastboot软件相配合(5)fastboot在开发板和主机之间定义了一套

2022-05-30 10:25:02 5684

原创 虚拟机使用adb连接板子

虚拟机使用adb连接板子1.首先要让虚拟机能识别到板子,才能使用adb 连接到板子,首先要打开这个按钮,如果没有这这个按钮需要执行第二步操作,如果有就不需要执行第二步2.将虚拟机关机后,把下图中的内容修改好3.此时虚拟机识别了板子,但是还无法操作板子4.接下来就跟着https://blog.csdn.net/binglumeng/article/details/69525361 来操作找到板子使用的usb5.然后cd /etc/udev/rules.d/目录下,查看.rules文件,如果

2022-05-30 10:12:27 2663

原创 常用的linux 命令

常用的linux 命令1.cat /proc/mtd 查看mtd设备2.df -h 查看磁盘大小 3.fuser /dev/ttyS0 和ps |grep 连用可以找到当前什么应用使用了设备节点4.查看usb 是2.0还是3.0find -name current_speed5.du -h . 查看文件大小...

2022-05-30 10:03:47 345

原创 主机驱动与外设驱动的分离思想

主机驱动与外设驱动的分离思想linux 中的SPI 、I2C、USB等子系统都利用了典型的把主机驱动和外设驱动分离的想法,让主机端只负责产生总线上的传输波形,而外设端只是通过标准的API来让主机端以适当的波形访问自身。因此这里面就涉及了4个模块:1.主机端的驱动。根据具体的I2C 、SPI、USB等控制器的硬件手册,操作具体的I2C、SPI、USB等控制器,产生总线的各种波形。2.连接主机和外设的纽带。外设不直接调用主机端的驱动来产生波形,而是调用一个标准的API。由这个标准的API把这个波形的传输请

2022-05-07 15:52:59 405

原创 将globalfifo_platform改写成misc字符设备

将globalfifo_platform改写成misc字符设备由于linux 驱动倾向于分层设计,所以各个具体的设备都可以找到它归属的类型,从而套到它相应的架构里面去,并且只需要实现最底层的那一部分。但是,也有部分类似globalmem、globalfifo的字符设备,确实不知道它属于沈类型,我们一般推荐大家采用miscdevice框架结构。miscdevice本质上也是字符设备,只是在miscdevice核心层的misc_init()中,通过register_chrdev(MISC_MAJOR,“mis

2022-05-07 15:15:06 308

原创 linux globalfifo改成platform平台驱动

linux globalfifo改成platform平台驱动驱动代码:/** 验证阻塞与非阻塞操作*此版本添加了互斥体*进程间互斥访问共享资源(globalfifo)**文件中,读fifo将唤醒写filo的进程(如果之前fifo正好是满的)* 写fifo将唤醒读fifo的进程(如果之前fifo正好是空的)**将globalfifo作为platform设备*完成两个工作* 1.将globalfifo移植为platform驱动* 2.在板文件中添加globalfifo这个p

2022-04-29 16:41:32 146

原创 linux内存管理

linux内存管理在Linux 内核空间中申请内存涉及的函数主要保括kmalloc()、__get_free_pages()和vmalloc()等。kmalloc()和__get_free_pages()(及其类似函数)申请的内存位于DMA和常规内存的映射区,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因此存在较简单的转换关系而vmalloc()在虚拟内存空间中给出一块连续的内存区,实质上,这片连续的虚拟内存在物理上并不一定连续,而且vmalloc()申请的虚拟内存和物理内存之

2022-04-29 10:44:24 1032

原创 linux 定时器操作

linux 定时器操作当出现:Linxu内核编程报错:implicit declaration of function ‘init_timer’错误原因是:在4.15内核里,init_timer被移除了,需要换用新的timer_setup接口,可以查看下面的驱动层代码second_open函数应用层程序#include <stdio.h>#include <sys/time.h>#include <sys/types.h>#include <uni

2022-04-28 15:37:59 1019

原创 linux 阻塞、非阻塞、异步通知

linux 阻塞、非阻塞、异步通知阻塞当应用程序调用了read\write…系统接口到内核空间后,运行了驱动中的函数再返回处理结果时,驱动中的函数使用了等待队列非阻塞(轮询select poll,epoll)当应用程序调用了select/poll/epoll 对应都是内核空间中,驱动程序的poll函数。在进行对设备的读写之前,查询当前设备的状态(是否可读/是否可写)异步通知这种方式是让设备主动告知应用程序,当前设备的状态(是否可读/是否可写)应用层三步走:1.将打开的设备文件描述符的拥有者

2022-04-28 10:05:09 455

原创 linux 互斥机制

linux 互斥机制之前一直不能理解各种互斥机制的优劣,完整的看了《Linux设备驱动开发详解:基于最新的Linux4.0内核》这书第7章后,才彻底的搞懂了linux 系统中的互斥机制(针对并发操作)有:1.原子操作2.自旋锁3.读写锁4.顺序锁5.rcu(read copy update)6.信号量7.互斥锁8.完成量原子操作基于整形变量的原子操作基于变量位的原子操作自旋锁显著特点是:当进程得不到锁,会在原地自转(不释放cpu),此时会降低cpu利用率,影响cpu性能评估,

2022-04-28 09:49:47 1145

原创 sysfs文件系统与Linux设备模型

sysfs文件系统与Linux设备模型linux 2.6以后的内核引入了sysfs文件系统,sysfs被看成是与proc、devfs和devpty同类别的文件系统,该文件系统是一个虚拟的文件系统,它可以产生一个包括所有系统硬件的层级视图,与提供进程和状态信息的proc文件系统十分类似。sysfs把连接在系统伤的设备和总线组织成一个分级的文件,他们可以由用户空间存取,向用户空间导出内核数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件的层次关系,其顶级目录包括block、bus、de

2022-04-26 11:44:39 120

原创 udev比devfs好在哪里

udev比devfs好在哪里为什么devfs 会被udev取代?首先明确一点udev 运行在用户空间 (内核版本2.6及以上)devfs 运行在内核空间(内核版本 2.4)Linux 设计中强调的一个基本观点是机制和策略的分离。机制是做某样事情的固定步骤、方法,而策略就是每个步骤所采取的不同方式。机制是相对固定的,而每个步骤采用的策略是不固定的。机制是稳定的,而策略则是灵活的,因此在linux内核中,不应该实现策略比如Linux 提供API可以让人把县城优先级调高或者调低,或者调整调度策略

2022-04-25 16:54:03 940

原创 linux 文件系统与设备驱动

linux 文件系统与设备驱动如下图所示为linux 中的虚拟文件系统、磁盘/Flash 文件系统及一般的设备文件与设备驱动程序之间的关系应用程序和VFS之间的接口是系统调用,而VFS与文件系统以及设备文件之间的接口是file_operations结构体成员函数,这个结构体包含对文件进行打开、关闭、读写、控制的一系列成员函数,关系如下图所示。由于字符设备的上层没有类似于磁盘的ext4等文件系统,所以字符设备的file_operations成员函数就直接由设备驱动提供了,因此file_operati

2022-04-25 16:46:01 723

原创 宏定义中的##作用

宏定义中的##作用在 GNU C 中,宏也可以接受可变数目的参数,例如:#def ine pr_debug(fmt,arg…) printk(fmt,##arg)这里 arg 表示其余的参数,可以有零个或多个参数,这些参数以及参数之间的逗号构成arg 的值,在宏扩展时替换 arg,如下列代码:pr_debug(“%s:%d”,filename,line)会被扩展为:printk(“%s:%d”, filename, line)使用“##”是为了处理 arg 不代表任何参数的情况,这时候,前

2022-04-24 19:09:17 586

原创 linux 内核抢占分析

linux 内核抢占分析在 Linux 2.6 以后版本的 Linux 内核中,一个内核任务可以被抢占,从而提高系统的实时性。这样做最主要的优势在于,可以极大地增强系统的用户交互性,用户将会觉得鼠标单击和击键的事件得到了更快速的响应。Linux 2.6 以后的内核版本还是存在一些不可抢占的区间,如中断上下文、软中断上下文和自旋锁锁住的区间,如果给 Linux 内核打上 RT-Preempt 补丁,则中断和软中断都被线程化了,自旋锁也被互斥体替换,Linux 内核变得能支持硬实时。如下图所示,左侧是 L

2022-04-24 16:47:49 1607

原创 SD 和 SDIO

SD 和 SDIOSD 和 SDIOSD(Secure Digital)是一种关于 Flash 存储卡的标准,也就是一般常见的 SD 记忆卡,在设计上与 MMC(Multi-Media Card)保持了兼容。SDHC(SD High Capacity)是大容量 SD 卡,支持的最大容量为 32GB。2009 年发布的 SDXC(SD eXtended Capacity)则支持最大 2TB 大小的容量。SDIO(Secure Digital Input and Output Card,安全数字输入输出

2022-04-24 15:49:35 2222

原创 PCI详解

PCIPCI(外围部件互连)是由 Intel 于 1991 年推出的一种局部总线,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛应用。PCI 总线具有如下特点。● 数据总线为 32 位,可扩充到 64 位。● 可进行突发(Burst)模式传输。突发方式传输是指取得总线控制权后连续进行多个数据的传输。突发传输时,只需要给出目的地的首地址,访问第 1 个数据后,第 2 ~ n个数据会在首地址的基础上按一定规则自动寻址和传输。与突发方式对应的是单周期方式,它在 1 个总线周期只传送 1 个

2022-04-24 15:33:45 2692

新版dnw 下载程序,亲测可以使用

dnw 下载

2023-05-11

samba 配置文件,用于配置samba服务器的共享目录

添加部分每一行有注释,有需要的可以看看

2022-10-15

linux中的usb驱动

linux中的usb驱动

2022-05-30

设备发送的jpeg图片数据流,在电脑端显示

设备发送的jpeg图片数据流,在电脑端显示

2022-02-19

linux 点灯驱动(带设备树版本)

linux 点灯驱动(带设备树版本)

2022-01-29

空空如也

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

TA关注的人

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