E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
tiny4412驱动开发
第20章 原子操作实验(iTOP-RK3568开发板
驱动开发
指南 )
在上一章节的实验中,对并发与竞争进行了实验,两个app应用程序之间对共享资源的竞争访问引起了数据传输错误,而在Linux内核中,提供了四种处理并发与竞争的常见方法,分别是原子操作、自旋锁、信号量、互斥体,在之后的几个章节中会依次对上述四种方法进行讲解。本章首先对四种常见方法中的原子操作进行讲解。20.1原子操作“原子”是化学世界中不可再分的最小微粒,一切物质都由原子组成。在Linux内核中的原子操
北京迅为
·
2023-09-09 15:02
驱动开发
第22章 自旋锁死锁实验(iTOP-RK3568开发板
驱动开发
指南 )
在上一小节中,学习了内核中自旋锁的使用,而自旋锁若是使用不当就会产生死锁,在本章将会对自旋锁的特殊情况-死锁进行讲解。22.1自旋锁死锁死锁是指两个或多个事物在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。当多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进,这种情况就是死锁。自旋锁死锁发生存在两种情况:(1)第一种情况是拥有自旋锁的进程A在
北京迅为
·
2023-09-09 14:02
驱动开发
第24章 互斥锁实验(iTOP-RK3568开发板
驱动开发
指南 )
在上一章节中对信号量进行了学习,而本章节要学习的互斥锁可以说是“量值”为1的信号量,最终实现的效果相同,既然有了信号量,那为什么还要有互斥锁呢,带着疑问,让我们来进行本章节的学习吧!24.1互斥锁在上一章节中,将信号量量值设置为1,最终实现的就是互斥效果,与本章节要学习的互斥锁功能相同,虽然两者功能相同但是具体的实现方式是不同的,但是使用互斥锁效率更高、更简洁,所以如果使用到的信号量“量值”为1,
北京迅为
·
2023-09-09 14:02
驱动开发
第21章 自旋锁实验(iTOP-RK3568开发板
驱动开发
指南 )
在上一节中对原子操作进行了讲解,并使用原子整形操作对并发与竞争实验进行了改进,但是原子操作只能对整形变量或者位进行保护,而对于结构体或者其他类型的共享资源,原子操作就力不从心了,这时候就轮到自旋锁的出场了,下面就让我们一起来进行自旋锁的学习吧。21.1自旋锁自旋锁是为了保护共享资源提出的一种锁机制。自旋锁(spinlock)是一种非阻塞锁,也就是说,如果某线程需要获取锁,但该锁已经被其他线程占用时
北京迅为
·
2023-09-09 14:32
驱动开发
第23章 信号量实验(iTOP-RK3568开发板
驱动开发
指南 )
在上面两个章节对自旋锁和自旋锁死锁进行了学习,自旋锁会让请求的任务原地“自旋”,在等待的过程中会循环检测自旋锁的状态,进而占用系统资源,而本章节要讲解的信号量也是解决竞争的一种常用方法,与自旋锁不同的是,信号量会使等待的线程进入休眠状态,适用于那些占用资源比较久的场合。下面对信号量相关知识的进行讲解。23.1信号量信号量是操作系统中最典型的用于同步和互斥的手段,本质上是一个全局变量,信号量的值表示
北京迅为
·
2023-09-09 14:31
驱动开发
Linux I2C设备驱动基本规范
不同于单片机
驱动开发
,即使是简单的I2C设备驱动程序,如果要在Linux上实现同种功能的驱动程序,事情也会变的复杂起来。
奔跑的码仔
·
2023-09-09 09:37
ARM-linux
Linux
kernel
设备树编程实践
linux
I2C
设备驱动
【深入理解Linux内核锁】七、互斥体
我的圈子:高级工程师聚集地我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux
驱动开发
和系统开发,曾就职于世界500强企业!创作理念:专注分享高质量嵌入式文章,让大家读有所得!
卍一十二画卍
·
2023-09-08 16:19
深入理解Linux驱动程序开发
#
Linux内核锁
linux
Linux驱动开发
Linux内核锁
嵌入式硬件
ubuntu
linux设备
驱动开发
学习--内存和IO访问
一I/O端口1.读写字节端口(8位宽)unsignedinb(unsignedport);voidoutb(unsignedcharbyte,unsignedport);2.读写字端口(16位宽)unsignedinw(unsignedport);voidoutw(unsignedshortword,unsignedport);3.读写长字端口(32位宽)unsignedinl(unsignedp
Rocky_zhm
·
2023-09-08 14:15
驱动开发
驱动开发
嵌入式Linux
驱动开发
(LCD屏幕专题)(三)
1.硬件相关的操作LCD驱动程序的核心就是:分配fb_info设置fb_info注册fb_info硬件相关的设置硬件相关的设置又可以分为3部分:引脚设置时钟设置LCD控制器设置2.在设备树里指定LCD参数framebuffer-mylcd{compatible="100ask,lcd_drv";pinctrl-names="default";pinctrl-0=;backlight-gpios=;
嵌入式学习者。
·
2023-09-08 10:20
Linux
驱动以及裸机
linux
驱动开发
运维
嵌入式Linux
驱动开发
(LCD屏幕专题)(四)
单Buffer的缺点与改进方法1.单Buffer的缺点如果APP速度很慢,可以看到它在LCD上缓慢绘制图案即使APP速度很高,LCD控制器不断从Framebuffer中读取数据来显示,而APP不断把数据写入Framebuffer假设APP想把LCD显示为整屏幕的蓝色、红色很大几率出现这种情况:LCD控制器读取Framebuffer数据,读到一半时,在LCD上显示了半屏幕的蓝色这是APP非常高效地把
嵌入式学习者。
·
2023-09-08 10:20
Linux
驱动以及裸机
linux
驱动开发
运维
第3章 helloworld 驱动实验(iTOP-RK3568开发板
驱动开发
指南 )
在学习C语言或者其他语言的时候,我们通常是打印一句“helloworld”来开启编程世界的大门。学习驱动程序编程亦可以如此,使用helloworld作为我们的第一个驱动程序。接下来开始编写第一个驱动程序—helloworld。3.1驱动编写本小节来编写一个最简单的驱动——helloworld驱动。helloworld.c如下(图3-1)所示代码:#include#includestaticint_
北京迅为
·
2023-09-08 10:20
驱动开发
【IMX6ULL
驱动开发
学习】24.关于mmap为什么能直接操作LCD显示
记录今天面试中遇到的一个提问,当时没有答上来感谢面试官(弓总)的提问,让我认识到了目前的不足,下午又深入的学习了一下,在这里做一下补充mmap为什么能直接操作LCD显示首先在内核空间申请一段或多段内存作为显存,即Framebuffer然后使用mmap把这段内存的物理地址映射到应用程序的地址空间相当于应用中也有一块内存,这两块内存的虚拟地址不一样(一个虚拟地址是内核空间的,一个是用户空间的),但是对
晨少爱学习
·
2023-09-08 10:20
IMX6ULL
驱动开发
mmap
Linux
驱动开发
主设备号和次设备号主设备号区分不同种类的设备次设备号区分同一类型不同的设备Linux的驱动链表会管理这些设备驱动1.添加(编写完驱动程序加载到内核)2.查找(调用驱动程序,用户层去调用open)驱动插入链表的顺序由设备号检索2.
驱动开发
驱动的开发就是添加驱动和调用驱动添加驱动
C有点难。
·
2023-09-08 07:15
Linux
驱动开发
linux
驱动开发
--day2
实现三盏灯的控制,编写应用程序测试head.h#ifndef__HEAD_H__#define__HEAD_H__#defineLED1_MODER0X50006000#defineLED1_ODR0X50006014#defineLED1_RCC0X50000A28#defineLED2_MODER0X50007000#defineLED2_ODR0X50007014#endifmychrdev
林黛玉倒拔垂杨柳~
·
2023-09-08 01:02
驱动开发
c语言
stm32
全志A133成长录
文章目录前言前言1.本专栏主要是记录使用全志A133开发过程的经验和bug2.主要是针对
驱动开发
,不定期更新3.后期会把目录更新到本文中。
不知道起个啥名“”
·
2023-09-08 00:28
A133
A133
驱动开发
linux
驱动开发
--day1(驱动、内核模块及相关命令、内核模块传参)
#include#includeinta=10;module_param(a,int,0664);MODULE_PARM_DESC(a,"thisisavalue");charb=97;module_param(b,byte,0664);MODULE_PARM_DESC(b,"thisisachar");char*c="hi";module_param(c,charp,0664);MODULE_P
林黛玉倒拔垂杨柳~
·
2023-09-07 11:56
linux
驱动开发
c语言
嵌入式Linux
驱动开发
(LCD屏幕专题)(二)
一、结合APP分析LCD驱动程序1、openapp:open("/dev/fb0",...)主设备号:29,次设备号:0--------------------------------------------------------------kernel:fb_open//fbmem.cstructfb_info*info;info=get_fb_info(fbidx);if(info->fbo
嵌入式学习者。
·
2023-09-07 11:23
Linux
驱动以及裸机
linux
驱动开发
运维
第4章 内核模块实验(iTOP-RK3568开发板
驱动开发
指南 )
在上一章节我们编写了最简单的helloworld驱动程序。有了驱动程序以后,要如何编译并使用驱动呢。编译驱动有俩种方法,分别是将驱动编译成内核和将驱动编译成内核模块。我们先来学习如何将驱动编译成内核模块、4.1设置交叉编译器1下载网盘资料下的交叉编译器,网盘路径为:“XXX”,将下载的交叉编译器拷贝到Ubuntu的/usr/local目录下,如下图(图4-1)所示:图4-12输入以下命令,解压交叉
北京迅为
·
2023-09-07 11:50
驱动开发
第5章 驱动模块传参实验(iTOP-RK3568开发板
驱动开发
指南 )
经过前两章实验的实战操作,我们已经完成最简单的helloworld驱动实验和模块驱动实验,加载模块可以使用“insmod”函数,使用“insmod”函数进行模块加载时也能进行参数的传递。运用得当可以极大提升内核测试速度。本节就来学习一下如何进行驱动模块的传参。5.1驱动模块传参简介驱动模块传参是一种可以随时向内核模块传递、修改参数的方法。例如可以传递串口驱动的波特率、数据位数、校验位、停止位等参数
北京迅为
·
2023-09-07 11:50
驱动开发
第6章 内核模块符号导出实验(iTOP-RK3568开发板
驱动开发
指南 )
在上一小节中,给大家讲解了驱动模块传参实验,使用insmod命令加载驱动时可以进行参数的传递,但是每一个内核模块之间是相互独立的,那模块间的符号传递要怎样进行呢,让我们带着疑问来进行本章节的学习吧!6.1内核模块符号导出简介驱动程序编译生成的ko文件是相互独立的,即模块之间变量或者函数在正常情况下无法进行互相访问。而一些复杂的驱动模块需要分层进行设计,这时候就需要用到内核模块符号导出。内核符号导出
北京迅为
·
2023-09-07 11:50
驱动开发
嵌入式Linux
驱动开发
(LCD屏幕专题)(一)
一、LCD简介总的分辨率是yres*xres。1.1、像素颜色的表示以下三种方式表示颜色1.2、如何将颜色数据发送给屏幕每个屏幕都有一个内存(framebuffer)如下图,内存中每块数据对用屏幕上的一个像素点,设置好LCD后,只需把颜色数据写入framebuffer即可。二、Framebuffer驱动框架Framebuffer驱动属于字符设备驱动,我们先说字符设备驱动框架如下图:驱动主设备号构造
嵌入式学习者。
·
2023-09-07 11:47
Linux
驱动以及裸机
linux
驱动开发
第1章 前言(iTOP-RK3568开发板
驱动开发
指南 )
磨刀不误砍柴工!在学习驱动之前先和同学们交流下学习方法和学习态度。1.1学习方法在学习驱动的过程中,同学们难免会遇到很多问题,例如编译环境的问题造成内核编译不通过、交叉编译器或者架构类型没有设置导致驱动编译失败、内核版本和驱动版本不统一造成驱动加载不成功等多种问题。在遇到问题的时候,同学们一定不要灰心,要敢于去尝试用自己的思路去解决问题。机遇与挑战往往是并存的。当同学们解决一个问题以后,自然就会前
北京迅为
·
2023-09-07 10:47
驱动开发
IMAU鸿蒙北向开发-2023年9月4日学习日志
南向:指的软硬件结合的嵌入式开发,一般用c、c++进行开发,注重硬件操作、
驱动开发
、操作系统裁剪定制等。1.2HarmonyOS介绍HarmonyOS是一款面向
okfang616
·
2023-09-07 09:25
harmonyos
学习
华为
“深入理解SpringMVC的注解
驱动开发
“
本文将深入探讨SpringMVC的注解
驱动开发
,重点关注常用注解、参数传递、返回值和页面跳转等方面。1.Sprin
叶秋∵
·
2023-09-07 00:27
mybatis
spring
tomcat
java
maven
idea
log4j
已启用spectre缓存,但找不到spectre缓解库
出现这个错误提示是因为VisualStudio安装了
驱动开发
环境就会自动开启这个选项,如图:把这个选项关了就行,但这样就需要每个项目都改一改这个比较麻烦,也可以补全缺失的库,打开VisualStudio
l198738655
·
2023-09-07 00:23
C/C++
c++
Pixhawk原生固件PX4之MPU6000驱动分析
涉及到一些关于Linux设备
驱动开发
的知识。在继续往下读之前有必要先感受一下PX4中驱动的注册过程,以及关键的设备驱动ID分配。字符型设备在NuttX操作系统中,M
FantasyJXF
·
2023-09-06 09:23
Pix学习笔记
Pixhawk
PX4
MPU6000
传感器
驱动
面经——嵌入式常见面试题总结100题(下)
52,试总结单片机底层开发与LINUX
驱动开发
有哪些异同?53.请从网卡、USBHOST、LCD驱动器、NANDFLASH、WIFI
行稳方能走远
·
2023-09-06 03:49
嵌入式知识
linux
嵌入式
面试
iBizSys Cloud MDD的探索和实践
前言模型
驱动开发
ModelDrivenDevelopment(MDD)是一种以模型作为主要内容的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码、文档或者可运行配置。
MoneyQ
·
2023-09-05 16:39
基于QEMU的IMX6ULL虚拟开发环境搭建
姓名:顿皓学号:19020100178学院:丁香2号书院转自:https://blog.csdn.net/ReCclay/article/details/104971182【嵌牛导读】Linux下的
驱动开发
是一个合格的全栈工程师必备技能
lemonlem
·
2023-09-05 12:03
第七章:敏捷开发工具方法-part1-敏捷开发基础
角色与职责2.1ScrumTeam2.2角色职责总结2.3、研发阶段概览1、Sprint计划会议2、产品实施阶段3、Sprint评审会议4、Sprint回顾会议三、敏捷开发实践3.1、增量迭代3.2、测试
驱动开发
Sophie_U
·
2023-09-05 10:44
敏捷开发
scrum
Linux学习笔记(更新中~)
Linux1Introduce适用人群:运维工程师(系统运维、应用运维、DBA)开发工程师(内核/
驱动开发
、软件开发、嵌入式开发)架构师(进阶,性能调优、故障处理、…)应用场景:Web应用数据库大数据云计算物联网图标
CodeWithMe
·
2023-09-04 21:48
linux
linux
学习
笔记
Linux设备树简介
一、起源减少垃圾代码减轻
驱动开发
工作量驱动代码和设备信息分离参考OpenFireware设计用来记录硬件平台中各种硬件设备的属性信息二、基本组成两种源文件:xxxxx.dtsdts是devicetreesource
西班牙大马猴
·
2023-09-04 16:49
linux
Linux驱动——input子系统
等等)的
驱动开发
统一输入类外设产生的数据格式(structinput_event),更加方便应用层编程设计了输入子系统事件处理层:接收来自核心层上报的事件,并选择对应的handler(事件处理器structinput_handler
西班牙大马猴
·
2023-09-04 16:19
linux
运维
Flutter:TDD单元测试
此前,我曾写过关于TDD(测试
驱动开发
)的文章在这里它解释TDD是如何工作的,以及它将如何在我们日常的日常开发工作有所帮助。提交新代码时,我们要确保我们的功能始终随着应用程序的增长而正常运行。
开心人开发世界
·
2023-09-04 16:12
Cortex-A7 架构
参考《Cortex-A7TechnicalReferenceManua.pdf》和《ARMCortex-A(armV7)编程手册V4.0.pdf》【正点原子】I.MX6U嵌入式Linux
驱动开发
指南V1.6
是东东东啊
·
2023-09-04 11:48
Linux驱动学习
架构
【网络BSP开发经验】交换芯片
驱动开发
1(RTL8306MB交换芯片
驱动开发
)
文章目录交换机基础知识交换机处于网络中的位置以太网帧结构端口二层转发原理典型网络接口分析SMIMII接口RMII接口GMII接口典型交换芯片分析RTL8306MB交换芯片调试过程交换芯片SDK移植问题背景问题解决交换机基础知识交换机处于网络中的位置以太网帧结构端口二层转发原理典型网络接口分析SMISMI是MMI管理总线具有MDIO和MDC两根线,它允许带有smi的外部设备控制PHY的状态以及内部寄
与光同程
·
2023-09-04 06:46
BSP开发
LINUX
驱动开发
网络
nodejs单元测试和性能测试
测试
驱动开发
TDD以实现有效和高效的算法代码。
stonejianbu
·
2023-09-03 07:59
打印机
驱动开发
,初步了解
在Windows中,打印机驱动的作用是编写一组接口。应用程序调用的GDI函数会变成相应的DDI函数,打印机驱动提供的这组接口负责将DDI函数转变为打印机识别的的指令。至于是通过网口、串口等接口与真实打印机相连接,这是PrinterMoniter的职责,而不是PrinterDriver的职责。打印机驱动一般分为两个部分。1.printergraphicsDLL2.PrinterInterfaceDL
_Fighter
·
2023-09-02 22:20
printer
驱动开发
windows
microsoft
【AI创作助手使用测试】C++使用场景生成、Windows设备
驱动开发
介绍、调试技巧
C++是一种通用的编程语言,具有高性能、高效率、高可维护性等优点,被广泛应用于以下场景:操作系统和嵌入式系统开发:C++是编写操作系统和嵌入式系统的主要语言之一,它可以提供底层的控制和资源管理,并且具有高效和可靠性。游戏开发:C++可以提供高性能游戏引擎和图形库,适用于游戏开发中的物理引擎、AI算法、图形渲染等领域。金融和高性能计算:C++可以提供高性能的算法和数据结构,适用于金融和高性能计算领域
明教张公子
·
2023-09-02 20:46
C++
c++
Linux块设备
驱动开发
简介
本文基于Linux-4.14文件系统框架Linux内核的文件系统框架图如下所示:gendisk对象Linux中用一个gendisk对象结构体表示一个磁盘分区,这个结构体对象中会包含该分区对应的设备文件的主设备号,次设备号,以及对应的gendisk->fops操作函数,这个块设备操作方法结构体如下所示:structblock_device_operations{int(*open)(structbl
程序猿Ricky的日常干货
·
2023-09-02 18:27
内核笔记
块设备驱动
文件系统
实现智能指针shared_ptr(难度3)(源码与测试用例)
本作业主要考察:复制控制/动态内存管理/模板编程/基于引用计数的智能指针原理/测试
驱动开发
实现代码完成下面的my_shared_ptr以及main函数中的测试用例本实现主要是利用复制控制来增加引用计数实现智能指针
C++程序员Carea
·
2023-09-01 11:09
C++数据结构与算法实现
算法
数据结构
排序算法
开发语言
c++
【测试】笔试02
文章目录1.下面不属于软件测试步骤的是2.关于测试
驱动开发
,描述错误的是3.在软件测试中,圈复杂度(Cyclomaticcomplexity):代码逻辑复杂度的度量,提供了被测代码的路径数量。
'Dream是普通小孩耶
·
2023-09-01 09:37
笔试复盘
测试
笔试
Linux
驱动开发
(外传)---
驱动开发
调试方法
前文回顾《Linux
驱动开发
(一)—环境搭建与helloworld》《Linux
驱动开发
(二)—驱动与设备的分离设计》《Linux
驱动开发
(三)—设备树》《Linux
驱动开发
(四)—树莓派内核编译》《Linux
胖哥王老师
·
2023-09-01 09:31
驱动开发
操作系统
linux知识
驱动开发
linux
调试
嵌入式开发之configure
1前述在Linux的应用或者
驱动开发
过程中,编写makefile是无法避免的问题,但是由于makefile的各种规则,或显式,或隐式,非常多,不经常写的话,很难写出一个可用的makefile文件。
枫之星雨
·
2023-09-01 09:15
嵌入式软件
开发语言
c语言
wfp框架解析
我一直对wfp框架含混不清,搞
驱动开发
有一段时间了,拿着老板的钱,到对自己手头工作的一些基础概念都弄不明白,实在是说不过去,寝食难安,特此加深一下记忆和理解。
satadriver
·
2023-09-01 05:02
驱动
驱动开发
windows
USB
驱动开发
流程
1、基本框架structusb_dev_data{structusb_endpoint_descriptor*ep_in;structusb_endpoint_descriptor*ep_out;structinput_dev*input;spinlock_tlock;};staticintusb_device_probe(structusb_interface*iface,conststruct
juno
·
2023-08-31 13:32
linux
kernel
driver
linux
驱动开发
QEMU搭建arm64 Linux调试环境
可以方便得使用gdb调试内核,既可以作为学习linuxkernel源码的实验环境,也可以用于ARM64内核
驱动开发
调试环境。
eydwyz
·
2023-08-31 08:41
Linux环境搭建
Linux块设备
驱动开发
学习
1.什么是块设备?块设备是针对存储设备的,比如SD卡、EMMC、NANDFlash、NorFlash、SPIFlash、机械硬盘、固态硬盘等。因此块设备驱动其实就是这些存储设备驱动,块设备驱动相比字符设备驱动的主要区别如下:①、块设备只能以块为单位进行读写访问,块是linux虚拟文件系统(VFS)基本的数据传输单位。字符设备是以字节为单位进行数据传输的,不需要缓冲。②、块设备在结构上是可以进行随机
是东东东啊
·
2023-08-31 05:33
Linux驱动学习
驱动开发
c语言
教程更新 | RK3568驱动指南第六篇-平台总线
《iTOP-RK3568开发板
驱动开发
指南》更新,本次更新内容对应的是驱动(第六期_平台总线_全新升级)视频,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。
迅为电子
·
2023-08-31 01:48
嵌入式硬件
人工智能
从函数的角度来看TDD开发
TDD是TestDrivenDevelopment,即我们常说的测试
驱动开发
。这种开发模式的一个显著特点是开发时,先写测试用例,然后再来写代码。
reduce & reduce
·
2023-08-31 01:26
Javascript
函数式编程
tdd
上一页
16
17
18
19
20
21
22
23
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他