目录标题 Linux设备驱动程序的重要性 | Importance of Linux Device Drivers字符设备驱动程序概述 | Overview of Character Device Drivers Linux字符设备驱动程序的基本组件 | Basic Components of Linux Character Device Drivers文件操作结构体 | File Operations Structur…
写了篇2时,我绞尽脑汁想在虚拟机上实现UMDF的远程调试,但没办法,据我能找到的书来看,只有一个方法就是,在WinDBG--File--Attach to a process,哦嘀神啊,在本机怎么Attach目标机器的进程…
1、设置内核配置
CONFIG_KGDBy, CONFIG_DEBUG_INFO y, CONFIG_FRAME_POINTERy,CONFIG_STRICT_KERNEL_RWX is not set 屏蔽掉该选型 然后重新给板子烧录内核镜像
2、进入uboot,设置bootargs,添加kgdboc参数
setenv bootargs mem512M consolettyAMA0,…
2019独角兽企业重金招聘Python工程师标准>>> 本文是从 How to become a proficient Python programmer 这篇文章翻译而来。 这篇文章主要是对我收集的一些文章的摘要。因为已经有很多比我有才华的人写出了大量关于如何成为优秀Python程序员的好文章。 我的总结主要集…
通过字符设备驱动分步注册方式编写LED驱动,完成设备文件和设备的绑定: head.h:
#ifndef __HEAD_H__
#define __HEAD_H__
typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned …
特斯拉发布过自己的扁线电机,最近Ingineerix大神发布了特斯拉最新动力系统的拆机视频,本篇结合之前的Tesla Model 3 SIC 控制器(控制器具体命名不清楚,以最熟悉的一款车型进行描述我们不妨称之为第二代,第一代为单管IG…
开发板是开发和学习嵌入式技术的主要硬件设备, 尽管可以在 PC 上开发 Linux 驱动, 然后重 新编译成 ARM 架构的 Linux 驱动模块。但最终都是要在开发板上进行测试的。这主要是因为 ARM 架构的开发板可基于 X86 架构的 PC 在 CPU 指令以及二进制格式上都有…
ARM Linux 开发板编译字符驱动模块 my_driver.ko
1.下载源码:
源码版本必须和开发板linux内核源码版本号一模一样例如:linux-4.14.111
查看开发板linux版本:uname -r解压:
sudo tar -zxvf xxxx.tar.gz2.进入源码/driver目录
driver下新建…
1,信息来源:深圳市世微半导体有限公司 Augus
2,产品描述
AP5103 是一款效率高,稳定可靠的 LED 灯恒流驱动控制芯片,内置高精度比较器,固定关断时间控制电路,恒流驱动电路等,特别适合大功率 LED 恒流驱动。…
系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核 深入理解 Linux 内核(二) Linux 设备驱动程序 Linux设备驱动开发详解 文章目录 系列文章目录五、定时测量1、时钟和定时器电路2、Linux 计时体系结构(1)计时体系机构的数据…
ARM 的概念ARM(Advanced RISC Machine),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM 公司并不生产芯片也不销售芯片,它只出售芯片技术授权。其合作公司针对不同需求搭配各类硬…
通常驱动程序的调试都是用ddk在cmd中完成的。这部分我暂时略过。下面先介绍如何设置vc6.0在Visual Studio 6.0集成环境中开发设备驱动程序的方法。 在Windows上,Windows DDK提供的开发环境是基于命令行的,操作起来极为不便,而Visual Studio 6…
GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。 其位置约束为: 放于声明的尾部“…
Windows Streams - An Introduction to File System Streams The NT Insider, Vol 13, Issue 2, March - April 2006 | Published: 17-Apr-06| Modified: 17-Apr-06 文件流的概念是与NTFS一起在1993年出现的. 但这个概念在应用程序中很少出现.在Windows Server 2003中出现了API…
ASP.NET WEB FORMS 页面间的传值方法 ASP.NET WEB FORMS 给开发者提供了极好的事件驱动开发模式。然而这种简单的应用程序开发模式却给我们带来了一些小问题,举个例子,在传统的ASP应用程序中,你能够通过POST方法很容易的把一个值或多个值从一…
\内容提要\\《Humans vs Computers》其中包含一系列故事,其中有的很有趣,也有的很可怕,这些故事都是人们在软件缺陷和二进制逻辑中能够遇到的\\t现代软件交付是持续努力的过程,它将现实世界中的某些部分进行抽象、简化,…
在Windows驱动开发中,如果是使用C开发的,那么必须在有些关键函数钱加extern c 的关键词,否则编译出来的函数,跟C语言编译的函数不同,导致驱动程序不能 被有效识别。 最关键的是DriverEntry函数,如果使用C开…
tty子系统解析
tty子系统是一个庞大且复杂,也是内核维护者所头大的子系统。 At a first glance, the TTY layer wouldn’t seem like it should be all that challenging. It is, after all, just a simple char device which is charged with transferring byte-o…
由John Ferguson Smart所编写的《BDD In Action: Behavior-Driven Development for the Whole Software Lifecycle》一书旨在完整地涵盖BDD实践的方方面面,从需求分析到生产环境中的代码开发,通过可执行规范与自动化测试支撑着整个流程。因此本书可分为四…
目录
一、 USB 协议简介
二、 Linux USB 驱动
三、 USB 设备驱动实例 一、 USB 协议简介 USB(Universal Serial Bus,通用串行总线)正如它的名字一样,是用来连接PC外设的一种通用串行总线,即插即用和易扩展是它最大的特点。所谓即插即用&am…
好几年前看了JetBrains的CEO Sergey Dmitive一篇文章Language Oriented Programming - The Next Programming Paradigm才开始知道LOP的,当时也试用了MPS,觉得眼前一亮。到现在隔了好几年了,对LOP的具体内容也有点忘记了,而近期在思…
AP9193 是一款高效率、高精度的升 压型大功率 LED 灯恒流驱动控制芯片。
应用领域
LED 灯杯
电池供电的 LED 灯串
平板显示 LED 背光
恒流充电器控制
大功率 LED 照明 AP9193 内置高精度误差放大器,固 定关断时间控制电路,恒流驱动电路等ÿ…
[原文: Introduction to Test Driven Development (TDD)] [中文名:测试驱动开发介绍(TDD)] [出处: http://www.agiledata.org/essays/tdd.html] [作者: Scott W. Ambler] [翻译:极地银狐.NET] 测试驱动开发是一种先开发测试的先进技术,即你在编写足够的产品代码用于…
文章目录 原子操作原子整型操作 API 函数Example原子位操作 API 函数 自旋锁Warning自旋锁 API 函数Example: 读写自旋锁读写锁API 函数 顺序锁顺序锁API 函数 信号量特点信号量 API 函数Example 互斥体Warning互斥体 API 函数Example 原子操作
Linux 内核定义了叫…
在学习 Go 编程语言时,您可能会遇到这句著名的格言:“不要通过共享内存来进行通信;相反,通过通信来共享内存。” 这句话构成了 Go 强大并发模型的基础,其中通道(channels)作为协程之间的主要通信…
在C语言中,如果要使用常量,我们常常会使用宏定义。
例如#define PI 3.14159,使用宏的好处是如果程序中多个地方使用到,我们只需改这一行就行。
其通用格式如下: #define NAME value
注意,末尾不用加分号…
全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 之前见过计数信号量,也是在FreeRTOS中看到的。也看到过这样的功能在驱动设计中的应用,但是当时没有理解这个使用的方式。 1.…
全志A63的Android7.1开发文档 这个文档是完整的全志A63的Android7.1开发文档,涉及camera、LCD、音频、蓝牙、wifi、uboot等快速开发,具体内容如下:A63 Android N Camera自适应使用说明书;A63 Android N WiFi-BT配置说明书…
linux 内核中的 USB 代码和所有的 USB 设备通讯使用称为 urb 的东西( USB request block). 这个请求块用 struct urb 结构描述并且可在 include/linux/usb.h 中找到. 一个 urb 用来发送或接受数据到或者从一个特定 USB 设备上的特定的 USB 端点, 以一 种异步的方式. 它用起来非…
头文件
#ifndef __HEAD_H__
#define __HEAD_H__typedef struct
{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR;
}gpio_t;#define PHY_LED1_ADDR 0x50006000
#define PHY_LED2_ADDR 0x50007000
#defin…
准备:
Preparation:
1、 一块bpi的开发板,一根ttl的串口线,以及一张烧录好镜像的sd/tf卡(烧录到eMMC也行)。
1. A BPI development board, a TTL serial port cable, and an SD/TF card with a burned image (it ca…
一、Linux 自带 LED 驱动使能 其实 Linux 内核自带 LED 抢夺那个,但在此之前需要配置 Linux 驱动来使能 LED 驱动。 输入以下命令:
cd linux/atk-mpl/linux/my_linux/linux-5.4.31
make menuconfig 根据以下路径找到 LED 驱动:
→ Device D…
SD 总线是基于命令和数据流,它们由一个开始 Bit 发起,由一个停止 Bit 结束。
Command:命令开始一个操作。命令由 Host 驱动,或者给单卡(寻址命令),或者给所有连接的卡(广播命令&…
头文件:
#ifndef __HEAD_H__
#define __HEAD_H__typedef struct
{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR;
}gpio_t;//LED灯的寄存器地址
#define LED1_ADDR 0X50006000
#define L…
1. 放置代码
在./source/driver/char下放置模块文件夹
2. Makefile和Kconfig
makefile文件参考
obj-$(AAA_LED) AAA-led.oKconfig文件参考
config AAA_LEDtristate "Phytium macb led control module"depends on XXXdefault mhelpIf you have a n…
为什么需要BDD?
“开发软件系统最困难的部分就是准确说明开发什么” (“The hardest single part of building a software system is deciding precisely what to build” — No Silver Bullet, Fred Brooks) 。 看一下下面的开发场景:
场景一…
一、我使用过的编程语言 Java、 c 和 c、shell。 C 语言的未来:
在编程语言流行程度方面,Java、Python、C 等现代编程语言已经取代了C语言的地位;但是C语言已经存在了很长时间,并且到目前仍然被大量使用。
C语言失败的一个主要原…
talk is cheap,show you my book!
新书《从0开始学ARM》终于在各大平台上架了!!
一、关于本书
1. 本书主要内容
ARM体系架构是目前市面上的主流处理器体系架构,在手机芯片和嵌入式芯片领域,ARM体系架构…
所谓内核符号表就是在内核内部函数或变量中可供外部引用的函数和变量的符号表。在 2.6 内核下,使用以下命令可以看到内核符号表: 引用beyeslinux-beyes:/> cat /proc/kallsyms | more c0100000 T _text c0100000 T startup_32 c0100054 t default_en…
一、基本框架<?xml:namespace prefix o />二、基本概念1、操作系统的主要任务是调度线程,还有一些必要的工作,如:内存管理,进程管理,安全管理和I/O管理,这些部分叫做执行部件。2、Ring是CPU的概念,…
模型驱动架构 自从2001年被OMG(Object Management Group 国际对象管理集团)提出以后,"随风潜入夜,润物细无声",未见轰轰烈烈宣传,各大厂商却惊人一致地争相跟进,关于MDA的话题转眼之间…
目录
一、背景
二、基本知识和调试思路
三、移植过程
3.1.1 USB串口驱动移植
(1)Add VID and PID
(2)Add the Zero Packet Mechanism
(3)Add Reset-resume Mechanism
(4)Inc…
行为驱动开发(BDD)能够用于改善测试人员、开发者和业务人员之间的沟通。举例来说,你能够使用以given-when-then方式表述的场景开发测试脚本,同时定义系统的需求。在敏捷测试日荷兰2015大会的某场演讲中,Nick van Giess…
1. 介绍 SAM9X60 处理器有部分OTP(One Time Programming) Aera 可用于存储user data,这样的话我们就可以将板卡 MAC Address和 SN 序列号写到固定的OTP User Area中。 为什么要使用 OTP 区域存储MAC地址和序列号呢?答案是为了省钱…
1、解释什么是软件开发生命周期(SDLC)?
软件开发生命周期(Software Development Life Cycle,SDLC)是一种用于软件开发的方法,它包括软件项目的所有阶段和活动,从项目开始到项目结束…
1、简介
典型的Uboot启动分为两个阶段,bootrom->SPL(Secondary Program Loader)->ATF->OPTEE(可选)->Uboot。其中SPL为BL2,ATF为BL31,OPTEE为BL32,Uboot为BL33。其中bootrom是固化在芯片内部的…
一、自旋锁spinlock的实现
自旋锁,顾名思义:自己在原地打转,等待资源可用,一旦可用就上锁霸占它。 ① 原地打转的是CPU x,以后CPU y会解锁:这涉及多个CPU,适用于SMP系统; ② 对于单…
简介
mapstructure用于将通用的map[string]interface{}解码到对应的 Go 结构体中,或者执行相反的操作。很多时候,解析来自多种源头的数据流时,我们一般事先并不知道他们对应的具体类型。只有读取到一些字段之后才能做出判断。这时࿰…
项目场景:
一直处于host 模式,10次有2次出现30s-1min 才能识别硬盘。其它时候识别都很快2-3s。 问题描述
面的USB3.0口移动硬盘,接入时识别信息如下: [25.497767] usb 6-1.4: new SuperSpeed USB device number 4 using xhci-hcd[25.512350] usb 6-1.4: New USB device f…
一、控制三盏灯的亮灭
头文件:
#ifndef __HEAD_H__
#define __HEAD_H__
typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR;
}gpio_t;
#define PHY_LED1_ADDR 0X50006000
#def…
一、Linux 中断简介
1. Linux 中断 API 函数
① 中断号 每个中断都有一个中断号,通过中断号可以区分出不同的中断。在 Linux 内核中使用一个 int 变量表示中断号。 ② request_irq 函数 在 Linux 中想要使用某个中断是需要申请的,request_irq 函数就是…
AI 引擎系列 1 - 从 AI 引擎工具开始(2022.1 更新) AI 引擎系列简介
在这篇题为 Versal 自适应 SoC AI 引擎入门的文章中,我介绍了一些 Versal™ 自适应 SoC 器件中存在的 AI 引擎 (AIE) 阵列。本系列是全新的 AI 引擎系列博文,我…
应用/服务支持API Version 4至9,首次使用DevEco Studio,工具的配置向导会引导您下载SDK及工具链。配置向导默认下载 API Version 9的SDK及工具链,如需下载API Version 4至8,可在工程配置完成后,进入HarmonyOS SDK界面手…
CAN 使用
1. CAN 简介
CAN (controller Area Network):控制器局域网络总线,是一种有效支持分布式控制或实时控制的串行通信网络。 目前世界上绝大多数汽车制造厂商都采用CAN总线来实现汽车内部控制系统之间的数据通信。 RK3568/RK3588的CAN驱动文件&a…
一. 简介
前面几篇文章学习了Linux内核自带的 LED 灯驱动,一篇文章分析了驱动与LED设备匹配的关键,一篇文章通过内核配置界面使能了Linux内核自带的 LED 灯驱动。文章如下:
Linux内核自带的LED灯驱动框架:驱动与设备匹配分析-CS…
DAC(Digital to Analog Converter)是一种通过电流、电压或电荷的形式将数字信号转换为模拟信号的设备。
DAC模块支持数模转换的开发。它主要用于: 作为过程控制计算机系统的输出通道,与执行器相连,实现对生产过程的自…
前言
不必害怕未知,无需恐惧犯错,做一个Creator!
一、总体框架图
暂时无法在飞书文档外展示此内容
二、Mesa API 处理 OpenGL 函数调用
Mesa API 负责实现 OpenGL 和其他图形 API 的函数接口。Mesa API 表是一个重要的数据结构…
nRF52832——PPI 模块的应用 引言原理分析PPI 的结构fork 从任务机制group 分组机制 PPI 之 GPIOTE 应用寄存器方式库函数方式函数介绍工程使用 fork 从任务应用PPI fork 从任务寄存器应用PPI fork 从任务库函数应用 PPI 之 group 分组应用PPI group 分组原理PPI group 分组寄存…
SDIO(Secure Digital Input and Output)由SD卡发展而来,与SD卡统称为MMC(MultiMediaCard),二者使用相同的通信协议。SDIO接口兼容以前的SD卡,并且可以连接支持SDIO接口的其他设备。
运作机制
…
What is uC/OS-III?
C/OS-III 的发音为“Micro C O S Three”,这意味着 C/OS-III 是基于 C 语言编写的第三代 小型操作系统,当然这里所说的第三代是相对于 C/OS 的前两个版本 C/OS 和 C/OS-II 而言 的,后面也会介绍这三个版本的差别。C/OS/…
在Windows内核中,SSSDT(System Service Shadow Descriptor Table)是SSDT(System Service Descriptor Table)的一种变种,其主要用途是提供Windows系统对系统服务调用的阴影拷贝。SSSDT表存储了系统调用的函数…
AP9193 是一款高效率、高精度的升 压型大功率 LED 灯恒流驱动控制芯片。
应用领域 LED 灯杯 电池供电的 LED 灯串 平板显示 LED 背光
恒流充电器控制 大功率 LED 照明 AP9193 内置高精度误差放大器,固 定关断时间控制电路,恒流驱动电路等, …
在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境,首先我们需要安装Visual Studio 2013这款功能强大的程序开发工具,在课件内请双击ISO文件并运行内部的vs_ultimate.exe安装包,Visual Studio的安装非常的简单,您…
系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序(三…
现象描述
[ 3257.804953] usb 5-1: New USB device found, idVendor0756, idProduct0527, bcdDevice 1.00
[ 3257.805008] usb 5-1: New USB device strings: Mfr2, Product1, SerialNumber3
[ 3257.805018] usb 5-1: Product: MV-Medical
[ 3257.805027] usb 5-1: Manufactur…
AAA: 在项目文件下新建Qt5文件夹文件夹内新建文件并且设置对应参数
文件夹路径:
project-spec/meta-user/recipes-qt/qt5
新建文件
vim ./qt5/qt3d_%.bbappend
vim ./qt5/qtquickcontrols2_%.bbappend
vim ./qt5/qtserialbus_%.bbappend
文件内容
qt3d_%.bbap…
系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux设备驱动开发详解 文章目录 系列文章目…
系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序(三…
1. 概述 V4L2(Video for Linux 2):Linux内核中关于视频设备驱动的框架,对上向应用层提供统一的接口,对下支持各类复杂硬件的灵活扩展; V4L2框架,主要包括v4l2-core、meida framework、videobuf2等模块,这也…
1、fatal error C1083: Cannot open include file: specstrings.h: No such file or directory 1.1、环境:使用的 是 圈圈的 "VC6DDK3790.1830"的环境(XP虚拟机) 1.2、在编译 "...\01_Windows驱动开发技术详解-源代码\chapter…
Paula Paul和Rosemary Wang撰写的一篇博文中介绍了适应度函数(fitness function)的基本概念、入门方法,并给出了如何验证各种架构质量的一些实例。文中提出,适应度函数驱动开发的方法可用于编写测定系统符合架构目标的测试&#x…
文档介绍:http://lxr.linux.no/linuxv2.6.37/Documentation/filesystems/sysfs.txt The sysfs Filesystem Sysfs was developed initially as an extension of the driver model. Sysfs is a mechanism for representing kernel objects, their attributes, and the…
上一篇笔记STM32MP157芯片的开发环境,之后就直接简写为MP1。为了保证安全ARM推出了 Arm Trusted Firmware的可信固件,简称 TF-A。它是一个开源的软件,最早是用在Armv8-A,ST也在MP1里面使用到了TF-A。它的作用就是隔离硬件…
Falco 0.6.0 Released New Features | Sysdig
在0.6.0之前,falco使用来自sysdig的内核模块sysdig-probe。从0.6.0开始,falco使用自己的内核模块falco-probe。内核模块实际上是由相同的源代码构建的,但是拥有一个特定于falco的内核模块允许fa…
注册字符设备使用gpio设备树节点控制led三盏灯的亮灭
设备树: 头文件:
#ifndef __HEAD_H__
#define __HEAD_H__
typedef struct
{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int OD…
《PCI_Exepress体系结构导读》《WDC databook》读书笔记
RCB read completion boundary
MPS max payload size
MRRS max read request size
4K对齐 Specifies the address page boundary size supported by the AXI bridge. No packet can have an address that crosses…
SSDT表(System Service Descriptor Table)是Windows操作系统内核中的关键组成部分,负责存储系统服务调用的相关信息。具体而言,SSDT表包含了系统调用的函数地址以及其他与系统服务相关的信息。每个系统调用对应SSDT表中的一个表项…
FDD 方法来自于一个大型的新加坡银行项目。FDD 的创立者 Jeff De Luca 和 Peter Coad 分别是这个项目的项目经理和首席架构设计师。在 Jeff 和 Peter 接手项目时,客户已经经历了一次项目的失败,从用户到高层都对这个项目持怀疑的态度,项目组士…
Linux USB 驱动架构
Linux USB 协议栈是一个分层的架构,如下图 5-1 所示,左边是 USB Device 驱动,右边是 USB Host 驱动,最底层是 Rockchip 系列芯片不同 USB 控制器和 PHY 的驱动。 Linux USB 驱动架构 USB PHY 驱动开发
USB 2…
DDK大部分函数的返回值类型是NTSTATUS类型。查看DDK.h文件,可以看到
typedef LONG NTSTATUS;
NTSTATUS的定义和LONG等价。为了函数的形式统一,所有函数的返回值都是NTSTATUS类型。NTSTATUS就是一个32位的整数,其每位有着不同的含义…