目录一、数据传输1.1APP和驱动 1.2驱动和硬件二、APP使用驱动的4种方式2.1非阻塞(查询)2.2阻塞(休眠+唤醒)2.3POLL(休眠+唤醒+超时时间)2.3.1 POLL机制流程2.3.2 POLL执行流程2.3.3 POLL应用和驱动编程 2.4异步通知2.4.1异步通知流程2.4.1异步通知应用和驱动编程一、数据传输1.1APP和驱动 APP和驱动之间的数据访问是不能通过直接访问对方的内存地址来操作的,这里涉及Linux系统中的MMU(内存管理单元)。在驱动程序中通过这两个函数来获得APP和传给APP数据:copy_to_usercopy_from_user简单来讲,应用程序与
目录一、DHT11简介1.1DHT11模块硬件设计1.2DHT11模块软件设计1.3DHT11通讯协议1.4 DHT11数据格式二、相关代码2.1驱动代码2.2测试代码2.3上板子测试一、DHT11简介DHT11是一款可测量温度和湿度的传感器。比如市面上一些空气加湿器,会测量空气中湿度,再根据测量结果决定是否继续加湿。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,具有超小体积、极低功耗的特点,使用单根总线与主机进行双向的串行数据传输。DHT11测量温度的精度为±2℃,检测范围为-20℃-60℃。湿度的精度为±5%RH,检测范围为5%RH-95%RH,常用于对精度和实
目录一、驱动程序分离的思想二、设备树2.1使用设备树三、平台总线设备驱动模板一、驱动程序分离的思想【IMX6ULL驱动开发学习】05.字符设备驱动开发模板(包括读写函数、poll机制、异步通知、定时器、中断、自动创建设备节点和环形缓冲区)_阿龙还在写代码的博客-CSDN博客之前编写驱动程序的代码存在不少弊端:移植性差,驱动程序移植到别的板子上时,开发者需要修改引脚。,并且还要重新编译驱动程序或内核。为提高移植和开发效率,驱动程序分离编程的思想尤为重要。首先我们要知道: 内核里有个结构体platform_bus_type(虚拟的总线),总线上抽象出两个链表:设备链表和驱动链表。我们在写驱动程序时
承接上一篇博客【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想(学习设备树过渡部分)代码获取:https://gitee.com/chenshao777/imx6-ull_-drivers我后面将三个层合并了(实际上只有前两层),合并成一个dev_drv.c了,暂时没有加GPIO操作,只是个框架合并前的代码在11.button_drv_chip_device-tree文件夹中合并后的代码在12.led_button_drv_tree文件夹中,文章最后把代码贴出来打算在第13次代码中加入GPIO子系统的代码,并且根据Pinctrl子系统编写设备树,使得外设控制更简单,敬请期待哦!
1.设备树部分首先在imx6ull.dtsi文件中已经帮我们定义好了一些pwm的设备树节点,这里以pwm2为例pwm2:pwm@02084000{ compatible="fsl,imx6ul-pwm","fsl,imx27-pwm"; reg=0x020840000x4000>; interrupts=GIC_SPI84IRQ_TYPE_LEVEL_HIGH>; clocks=&clksIMX6UL_CLK_DUMMY>, &clksIMX6UL_CLK_DUMMY>; clock-names="ipg","per"; #pwm-cells=2>;};我们要在设备树(.dts)文件中引用和
没玩过NES游戏的童年,可能不是80后的童年。我们小时候是从玩FC开始接触游戏机的,那时真的是红极一时啊,我上初中时还省吃俭用买了一台小霸王,暑假里把电视机都给打爆了!那时任天堂单是FC机的主机的发售收入就超过全美的电视台的收入的总和,在人们的心目中扎下了任天堂的这个招牌。前言1983年7月15日,由日本任天堂株式会社(原本是生产日式扑克即“花札”)的宫本茂先生领导开发的一种第三代家用电子游戏机:FC,全称:FamilyComputer,也称作:Famicom;在欧美发售时则被称为nes,全称:NintendoEntertainmentSystem;在中国大陆、台湾和香港等地,因其外壳为红白两
MfgTool烧录的原理和方法网上和各大开发板生产商教程都写的很明白了,这里记录一下遇到的问题供大家参考。打开MfgTool工具,开发板上电后,显示NoDeviceConnected。软件显示识别不到“符合HID标准的供应商定义设备”。确定拨码没有问题,检查线路也正常,没有使用USBHUB接线,而是直接接在电脑上。(网上有说使用USBHUB的问题)反复上下电后,终于能够识别“符合HID标准的供应商定义设备”,点击start开始下载。在烧录文件系统时,烧录失败。提示:“Push”error,file=“D:\TOOLS\mfgtool\Profiles\linux\OSFirmware\file
目录零、前言一、libusb交叉编译1.0前言1.1交叉编译二、usbutils交叉编译2.0前言2.1交叉编译三、libudev交叉编译3.0前言3.1交叉编译3.2错误处理-没找到usbutils3.3错误处理-没找到pci.ids (pci.idsnotfound)3.3.0前言3.3.1查找pci.ids3.3.2继续编译3.4错误处理-没找到gperf (gperfnotfound) 3.5编译并安装四、eudev交叉编译4.0前言4.1交叉编译五、测试代码5.1usb测试代码5.2编译脚本Makefile5.3运行结果零、前言背景:由于正点原子imx6ull需要使用到usblib进
IMX6ULL一共有两个ADC,每个ADC都有八个通道,但他们共用一个ADC控制器1.设备树在imx6ull.dtsi文件中已经帮我们定义好了adc1的节点部分信息adc1:adc@02198000{ compatible="fsl,imx6ul-adc","fsl,vf610-adc"; reg=0x021980000x4000>; interrupts=GIC_SPI100IRQ_TYPE_LEVEL_HIGH>; clocks=&clksIMX6UL_CLK_ADC1>; num-channels=2>; clock-names="adc"; status="disabled";};注意
hi3559imx334sensor修改1080P60先说一下我的需求:让hi3559上支持驱动Mp60/4MP60的imx334海思把一些可能用到的驱动文件开放让我们修改,这样我们确实是可以做一些自己的适配,挺好的先给指一下路,imx334路径obj文件是编译之后会生成的,编译之前没有很正常。主要要修改的就是imx334_cmos.c,imx334_sensor_ctl.c然后思路就是修改底层之后在上层(sample)做适配,本文最终呈现基于海思官方SDK下的sample下的vio另外,原理不清楚,但是亲测ko文件是不用重新生成的。具体的修改测试方法是:先修改component下的底层驱动-