自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于 kernel 4.0 初始kmalloc

内存篇

2023-08-27 10:28:24 191

原创 Qemu 启动无法交互的处理方法

【代码】Qemu 启动无法交互的处理方法。

2023-04-09 10:13:26 334

原创 字符设备驱动_5:自动创建设备节点

自动创建的方法实现设备节点创建

2022-12-30 15:43:35 253

原创 字符设备驱动_4:字符设备驱动注册方法的总结

概述: 对字符设备驱动的总结。

2022-12-27 14:53:14 179

原创 Android 简单办法引出gpio供应用控制

记录一中可以直接通过属性控制gpio的方法。

2022-12-26 11:13:45 408

原创 字符设备驱动_3:register_chrdev_region() 简单字符设备驱动的实现

egist_chrdev_region() 函数接口注册同一类字符设备的多个子设备

2022-12-22 11:40:28 676

原创 字符设备驱动_2:register_chrcev() 简单字符设备驱动的实现

register_chrcev() 简单字符设备驱动的实现和注册过程梳理

2022-11-04 10:37:21 1279

原创 字符设备驱动_1:基本概念和数据结构

基于kernle 4.0 的qemu 对字符设备驱动学习进行记录

2022-10-31 15:09:09 342

原创 kernel-4.0 定时器使用问题在kernel-4.19上纠正

处理之前博客中遗留的问题

2022-10-31 12:09:59 469

原创 kernel-4.0 定时数据结构和API

基于Kernel 4.0 定时器的数据结构和API。

2022-10-28 15:42:10 678

原创 Kernel 定时器的使用

内核定时器简单使用的案列

2022-10-26 20:20:08 323

原创 kernel驱动配置文件的编写的记录

简单记录Kconfig 编写方法和 make menuconfig 配置时的展现形式的对应

2022-10-21 20:49:26 326

原创 驱动的第一个模块

通过qemu 启动kernel 加载第一个驱动

2022-10-21 19:52:38 427

原创 Qt Widget 项目对qml的加载实例

qml 加载方法

2022-07-26 11:35:40 1090

原创 linux qume开发环境搭建

实验依照《奔跑吧linux内核》第一版进行,感谢大佬们的创作。1. 拉取kernel 4.0 codewget -c https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.tar.gz2. 拉取busybox codewget -c https://busybox.net/downloads/busybox-1.24.0.tar.bz23. 解压 kernel 和 busyboxtar -xvf linux-4.0.tar.gz...

2022-05-20 17:39:38 611

转载 音频接口定义

音频接口

2022-05-11 17:07:17 315

原创 sound core 的分析

sound core

2022-05-10 19:37:49 380

原创 音频相概念扫盲——声音处理的过程

首先,需要认识到的是,生活中声音都是模拟信号,比如正弦信号等。但是CPU能处理的信号是数字信号,所以需要进行AD转化,输入到系统处理后,通过DA转换,然后输入到音频系统进行放大等播放出来。一、这里提到的几个过程进行简单描述1. AD转换对模拟信号进行 采样-----》保持-----》量化 ------》 编码采样还有许多参数,比如分辨率、采样精度、采样量程等,挑几个在音频中经常使用的描述一下(1)采样频率:AD转换器在单位时间内对模拟信号的采样次数。采样应该遵行采样定...

2022-05-09 20:04:58 1631

原创 ubuntu 中比较好用的一些工具

ubuntu 18.04 比较好用的一些工具记录,不定期持续更新。

2022-05-09 18:17:12 458

原创 Java JNI调用C语言中的函数

1、调用无参函数java codepublic class JNITest { static { /*加载*/ System.loadLibrary("mynative"); } public native static void JavaHello(); public static void main(String[] args) { /*java c库 函数建立联系*/ /*调用*/ JavaHello(); }}C code#i

2022-04-09 14:17:25 2506

原创 C++ virtual 多态的理解

C++ virtual 重载

2022-04-09 10:18:48 153

原创 Android HAL 之HIDL 的hello world 实现

从事Android BSP开发一年有余,都是在驱动上的工作,每每涉及HAL层面的工作,总是“望而却步”却又心有不甘。前期系统性的学习了一些C++(记录整理后补上)后,再反过来看HAL相关的code,稍有熟悉感。趁热打铁,小试牛刀,尝试一下HIDL 的hal。平台介绍:firefly RK 3399 pc pro, 系统是Android10。第一步:创建文件夹# mkdir -p hardware/interfaces/hidltest/1.0第二步:新建 .hal 文件# touch

2022-04-06 21:11:32 3484 1

原创 ubuntu 18.0 交叉编译Qt5.12.12生成库文件

ARM 64 的QT 库交叉编译

2022-03-28 19:42:09 2116 5

原创 USB 设备驱动之设备接入梳理(六)

话说上一章,介绍了host获取设备描述符的过程,主要的思路就是先获取9 bytes,从这9 bytes中获取配置描述符的长度,然后一次性获取全部的配置描述符,配置描述符其实是配置描述符信息 + 端口描述符信息的总和,在设备内存中的分布如下图所示。有些设备可能不只一个配置描述符(业界称之为:符合设备),也同样是这样的分布。 获取了配置描述符后,对其进行解析。static int usb_parse_configuration(struct usb_device *d...

2022-03-24 15:03:53 471

原创 海思3518E系列之sample代码的阅读记录

基于海思3518E平台,做实验学习和实践;从sample_venc.c开始,因为在板子上跑的就是sample_venc,并抓取到图像。对于一些关键字的定义:typedef unsigned char HI_U8;typedef unsigned short HI_U16;typedef unsigned int HI_U32;typedef signed char HI_S8;typedef short

2021-08-17 23:30:00 168

原创 USB 设备驱动之设备接入梳理(五)

继上一步获取到设备描述符之后,判断如果是HUB设备,则对其进行设置。 if (udev->descriptor.bDeviceClass == USB_CLASS_HUB && udev->bus_mA <= unit_load) { u16 devstat; status = usb_...

2021-05-20 16:13:58 805

原创 USB 设备驱动之设备接入梳理(四)

static inthub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1, int retry_counter){ struct usb_device *hdev = hub->hdev; struct usb_hcd *hcd = bus_to_hcd(hdev->bus); int retries, operations, retval, i; unsigned delay = H.

2020-12-20 12:01:08 941

原创 USB 设备驱动之设备接入梳理_hub_port_connect()函数(三)

hub_port_connect()函数断开该端口设备的连接。 if (udev) { if (hcd->usb_phy && !hdev->parent) usb_phy_notify_disconnect(hcd->usb_phy, udev->speed); usb_disconnect(&port_dev->child); }消除抖动,接入或拔出时,会有物理抖动,导致状态不稳定,所以需要消抖。if (!(po

2020-12-20 11:08:35 5147

原创 USB 设备驱动之设备接入梳理(二)

USB提供了一套自顶向下的识别方法,从hub_event出发,检查是否真的有端口发生了改变,如果坐实是port被触发了,则进入port_event。先去获取hub的状态if (hub_port_status(hub, port1, &portstatus, &portchange) < 0) return;最终也是调用get_port_stats()函数去获得想要的状态,hub也是一类usb设备,static int get_port_status(struct

2020-11-26 22:01:24 2315

原创 USB 设备驱动之设备接入梳理(一)

hub_event()的前世今生缘起 usb_hub_init()主要是注册驱动和创建工作队列注册hub驱动:if(usb_register(&hub_driver)<0){printk(KERN_ERR"%s:can'tregisterhubdriver\n",usbcore_name);return-1;}这里引入usb_driver 结构体,先看看hub是如何初始化的...

2020-11-25 22:27:19 1659

原创 USB设备的枚举过程分析——数据结构先行

USB枚举是host端为了配置(加载合适的驱动)device进行的一个重要配置,如果枚举成功,那么设备正常工作的可能性约为90%,是USB驱动程序中重要的一项配置。主要进行的操作就是获取配置描述符,解析配置描述符、解析端口描述符;简而言之就是从device端获取device性能和配置。 先介绍一下枚举过程中涉及的结构体和成员:第一个 usb 配置描述符struct usb_config_descriptor { __u8 bLength; ...

2020-11-23 23:41:44 548

原创 usb转串口——u_serial.c_2

将数据送到tty层,由tty继续处理,数据在req的buffer里面。static void gs_rx_push(unsigned long _port){ struct gs_port *port = (void *)_port; struct tty_struct *tty; struct list_head *queue = &port->read_queue; bool disconnect = false; bool do_push = fa...

2020-11-23 21:50:48 649

原创 usb转串口——u_serial.c_1

static int gs_buf_alloc(struct gs_buf *gb, unsigned size){ gb->buf_buf = kmalloc(size, GFP_KERNEL); if (gb->buf_buf == NULL) return -ENOMEM; gb->buf_size = size; gb->buf_put = gb->buf_buf; gb->buf_get = gb->buf_buf; return .

2020-11-19 23:31:57 698

原创 yocto 使用记录

基于 NXP imx6 平台搭建Qt5 BSP。1. NXP imx6 yocto 编译 编译文件系统: MACHINE=xxx(目标板名字) DISTRO=fslc-framebuffer . setup-environment build_fb(目标文件夹) bitbake fsl-image-qt5编译后生成的 镜像位于build_fb/tmp/deploy/images/qt 交叉编译工具链生成 MACHINE=xxx(目标板名字) D...

2020-07-14 11:55:04 633

原创 scp + expect 实现全自动传送文件

嵌入式工作中总会有各种需求,比如这次,客户希望在板子上实现scp免确认,直接传送文件。那是经过一番折腾,可算是实现了,前因后果,且看下面慢慢道来。 scp 工作模式 ,当用scp 传送文件时,首次总会让确认$ scp vimrc [email protected]:~The authenticity of host '192.168.9.250 (192.168.9.250)' can't be established.ECDSA key fingerpr...

2020-05-10 11:57:14 1351

原创 Led驱动架构理解

作为一个驱动工程师,每每遇到问题,总是抓耳挠腮,查找许久。是否有一些本质的特性,能让工作变得轻松? 如果有,那可能是对驱动本质的理解,对器件工作特性的熟悉,首先了解本质基于2.6.3内核的led驱动框架来分析,并记录。...

2020-04-25 15:44:45 733

原创 request_mem_region 实践

功能: 通过request_mem_region 和 ioremap,实现 led 驱动,led功能如前面《字符设备注册实例》代码示例#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/fs.h>#...

2020-04-18 08:31:03 950

原创 驱动中动态内存申请(request_mem_region)

利用动态内存生气编写驱动,使得驱动的具有较强的移植性,内核中封装了一些函数以供驱动开发者使用,屏蔽了具体的细节。1. 动态获取内存的函数request_mem_region()#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name), ...

2020-04-15 07:46:39 3818

原创 字符设备注册实例

实验平台:s5pv210开发板 + kernel2.6功能:驱动三颗led,led1 led2,共用一个fops,led3单独使用一个fops。当open led1/led2 时,led1 和 led2 同时亮,open led3 时, led3亮;release 对应熄灭。#include <linux/module.h>#include <linux/kernel...

2020-04-08 07:40:59 150

原创 Linux驱动复习_字符设备的注册

1. 字符设备相关结构体include/linux/cdev.hstruct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops; struct list_head list; dev_t dev; unsigned in...

2020-04-06 14:07:49 160

32bit ARM printf

32bit ARM printf

2023-08-01

coreutils-9.3

coreutils-9.3

2023-08-01

vs code编辑器,用于代码编辑

vs code 编辑器

2023-06-02

RK SDIO驱动和配置

RK SDIO驱动和配置

2023-05-24

基于 linux kernel4.0 的qume 环境

通过qume 在ubuntu 上,ubuntu版本在18.04和20.04 均可,启动 kernel4.0 。 实现在电脑上调试内核或者编写驱动,免去对板子的依赖,免除下载、烧录的繁琐。 通过脚本“quem_start.sh”即可启动。

2022-07-26

类图测试文档_图片.rar

类图测试文档_图片.rar

2021-01-29

空空如也

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

TA关注的人

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