首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏码农爱学习的专栏

    【i.MX6ULL】驱动开发11——LCD驱动实践

    之前在Linux系统移植时提到过LCD驱动,本篇来看下Linux设备树如何配置LCD驱动。 1.2 LCD驱动文件mxsfb介绍 LCD的驱动文件为mxsfb.c,这是一种platform驱动框架,驱动和设备匹配之后,mxsfb_probe函数就会执行。 6ULL的eLCDIF接口驱动程序 NXP 已经编 写好了,因此 LCD 驱动部分我们不需要去修改。 make imx6ull-myboard.dtb cp arch/arm/boot/dts/imx6ull-myboard.dtb ~/myTest/tftpboot/nxp/ 然后重启开发板,就可以在 保存后,重启开发板,屏幕就不会自动熄屏了。

    2.3K30编辑于 2021-12-27
  • 来自专栏码农爱学习的专栏

    【i.MX6ULL】驱动开发13——电容触摸驱动实践(下)

    上篇文章介绍了电容触摸驱动的编写,包括设备树的修改和驱动程序(IIC驱动+中断+input子系统),并通过将触摸坐标值实时打印出来的方式,对触摸功能进行测试。 1 tslib的使用 Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。 1.1.2 开发板上配置tslib 将编译出的5个文件夹整个复制到开发板的根文件系统中: sudo cp * -rf ~/myTest/nfs/rootfs/ 然后打开板子的**/etc/ts.conf 009d 0000 0000050 00f6 0000 e539 0003 0003 0001 00c1 0000 0000060 00f6 0000 自己编写的触摸驱动,每次系统启动后,都要手动加载驱动模块后才能使用,比较麻烦,现在驱动文件不需要再改了,就可以将自己的驱动直接编译到内核中。

    2K30编辑于 2022-02-11
  • 来自专栏码农爱学习的专栏

    【i.MX6ULL】驱动开发12——电容触摸驱动实践(上)

    2.1 修改设备树 修改imx6ull_myboard.dts文件。 在设备树中把触摸要用到的引脚追加到 iomuxc即可。 新建gt911.c文件作为驱动文件 触摸芯片GT911的使用,本质是使用IIC通信,进行数据的读写,因为触摸屏的驱动,实际就是IIC驱动。 所以,编写触摸驱动,主要涉及3点: IIC协议的驱动 中断的处理(获取触摸数据) input子系统(将触摸数据传递到应用层) 2.3.1 IIC驱动架构 GT911的驱动按照IIC驱动来写,当驱动运行时 : 3 使用Linux内核自带的驱动(未测试) 对于触摸屏的驱动,NXP已经编写好了触摸驱动,加以修改可以在自己的板子上使用。 make imx6ull-myboard.dtb cp arch/arm/boot/dts/imx6ull-myboard.dtb ~/myTest/tftpboot/nxp/ 然后重启开发板,可以先到如下位置

    1.8K20编辑于 2022-01-05
  • 来自专栏码农爱学习的专栏

    【i.MX6ULL】驱动开发1——字符设备开发模板

    之前的几篇文章(从i.MX6ULL嵌入式Linux开发1-uboot移植初探起),介绍了嵌入式了Linux的系统移植(uboot、内核与根文件系统)以及使用MfgTool工具将系统烧写到板子的EMMC中 当驱动开发完成后,根据实际需要,可以选择是否将驱动编译进Linux内核中。 开发6-系统烧写到eMMC与遇到的坑!) 在之前的文章(i.MX6ULL嵌入式Linux开发2-uboot移植实践)中已经介绍了如何在ubuntu中搭建TFTP服务器。 增加延时后再次测试,打印正常: 测试完,最后是rmmod命令卸载模块: 5 总结 本篇介绍了嵌入式Linux驱动开发中的基础驱动——字符驱动开发的基本模式,使用了一个虚拟的字符设备驱动进行测试,了解驱动程序与应用程序之间的调用关系

    1.4K10发布于 2021-09-09
  • 来自专栏嵌入式与Linux那些事

    IMX6ULL驱动开发实战连载-01搭建开发环境

    接下来的一段时间,会基于野火IMX6ULL开发板写一系列教程,主要侧重于驱动和内核的调试技巧。这方面的文章,我也是第一次写,过程中可能会踩不少坑,可能更新时间间隔会很。 /video/BV1PK411T7MA 第三期-裸机开发篇-21集 :https://www.bilibili.com/video/BV1JK4y1Y7xQ 第四期-驱动开发篇-82集 :https:/ 1.2 开发板简介 之前学习驱动开发一直使用的是韦老师的S3C2440,搭配韦老师的第二期视频一起学习,效果很不错。由于马上要工作了,所以,想换一个新一点的平台,熟悉下环境。 尝试使用开发板ping虚拟机成功ping通。 ? 开发板ping主机也可以ping通。 ? 2.2.3 配置虚拟机NFS服务 为了方便测试驱动程序。通过NFS 给开发板共享开发主机编写的应用程序。 使用git克隆下例程,尝试将驱动加载到开发板。

    3.5K20发布于 2021-05-20
  • 来自专栏嵌入式项目开发

    Linux驱动开发: USB驱动开发

    6 bDevicePortocol 1 协议 协议码 这些码的值视bDeviceClass 和 bDeviceSubClass 的值而定。 6 iConfiguration 1 索引 描述此配置的字串描述表索引 7 bmAttributes 1 位图 配置特性: D7: 保留(设为一) D6: 自给电源 6 bInterfaceSubClass 1 子类 子类:这些值的定义视bInterfaceClass域而定。 如果bInterfaceClass域的值为零则此域的值必须为零。 当然,这些制造商和设备标识需要我们编写进USB 驱动程序中。 USB 驱动程序依然遵循设备模型 —— 总线、设备、驱动。 鼠标驱动代码: 该模板适用于键盘驱动

    78.8K23编辑于 2022-01-12
  • 来自专栏码农爱学习的专栏

    【i.MX6ULL】驱动开发2——新字符设备开发模板

    上篇文章(【i.MX6ULL】驱动开发1——字符设备开发模板)介绍了字符设备的开发模板,但那是一种旧版本的驱动开发模式,设备驱动需要手动分配设备号再使用 register_chrdev进行注册,加载成功以后还需要手动使用 比如主设备号为200,那么 0~1048575(2^20-1)这个区间的次设备号就全部都被占用了 回顾上一篇【i.MX6ULL】驱动开发1——字符设备开发模板的操作,先是加载驱动: 加载完,还有手动使用 所以,在嵌入式开发中使用mdev来实现设备节点文件的自动创建与删除。 3.5 新旧驱动方式对比 通过一张图来对比新旧两种驱动编写方式的区别: 旧方式编写驱动的流程 新方式编写驱动的流程 可以看出主要区别在驱动的加载和卸载。 6 总结 此篇文章针对上篇文章使用旧字符驱动编写方式存在的不足,介绍了一种新的字符驱动编写方式,对比两种方式编写的主要区别,在上篇驱动代码的基础上进行修改,并测试通过,和上篇实现一样的效果,但驱动的加载更加方便

    99920发布于 2021-09-09
  • 来自专栏码农爱学习的专栏

    【i.MX6ULL】驱动开发7——按键输入捕获

    前面几篇文章,从最基础的寄存器点灯,到设备树点灯,再到GPIO子系统点灯,一步步了解嵌入式Linux开发的各种点灯原理。 2 软件编写 2.1 修改设备树文件 2.1.1 修改iomuxc节点 修改imx6ull-myboard.dts,在iomuxc节点的imx6ull-evk字节点下创建一个名为pinctrl_key的子节点 _IO10 0x70a1 MX6ULL_PAD_BOOT_MODE1__GPIO5_IO11 0x70a1 MX6ULL_PAD_SNVS_TAMPER7 按键驱动,也属于字符设备驱动,和之前的字符设备驱动的框架一样,主要的修改点在按键的硬件初始化配置已经按键的读取。 return -1; } return 0; } 3 实验测试 3.1 编译程序 3.1.1 编译设备树 编译设备树文件,并将编译出的dtb文件复制到启动文件夹: 网络方式启动开发

    98120发布于 2021-11-12
  • 来自专栏嵌入式项目开发

    Linux驱动开发: FrameBuffe(LCD)驱动开发

    6 帧 然而,LCD的显示并不是对一副图像快速的显示一下,为了持续和稳定的在LCD上显示,就需要切换到另一幅图上(另一幅图可以和上一副图一样或者不一样,目的只是为了将图像持续的显示在LCD上)。 /app /dev/fb5 分辨率:800*480 像素点位数:24 映射的长度:1152000 一行的字节数:2400 mmap映射的空间:0xB6CBC000 [root@tiny4412 4)OLED屏开发了两种接口的 Demo 板,接口分别为七针的 SPI/IIC 兼容模块,四针的IIC 模块。 u8 y,u8 c); static void OLED_RefreshGRAM(void); /* 函数功能: OLED对应的GPIO口初始化 硬件连接: OLED模块---Tiny4412开发板 7.1 编写S70屏幕驱动 如果自己编写了LCD驱动(S720屏幕),测试LCD驱动之前,先去除内核自带的LCD驱动,编译烧写内核: Device Drivers  --->        

    54.7K13编辑于 2022-01-12
  • 来自专栏鸿蒙开发笔记

    OpenHarmony轻量系统开发6驱动之ADC按键

    摘要:本文简单介绍如何操作ADC去读取电压,并且实现开发板上3个ADC按键检测的功能适合群体:适用于润和Hi3861开发板,L0轻量系统驱动开发6.1实验效果查看开发板,可以看到除了复位按键之外,还有3 ,我想邀请你帮我三个小忙:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;关注小编,同时可以期待后续文章ing,不定期分享原创知识;想要获取更多完整鸿蒙最新学习知识点,可关注B站:码牛课堂鸿蒙开发

    54210编辑于 2024-09-04
  • 来自专栏嵌入式项目开发

    Linux驱动开发: 块设备驱动开发

    块设备是与字符设备并列的概念, 这两类设备在 Linux 中驱动的结构有较大差异,总体而言, 块设备驱动比字符设备驱动要复杂得多,在 I/O 操作上表现出极大的不同,缓冲、 I/O 调度、请求队列等都是与块设备驱动相关的概念 在Linux中,驱动对块设备的输入或输出(I/O)操作,都会向块设备发出一个请求,在驱动中用request结构体描述。 + ((u16)csd[7] << 2) + ((u16)(csd[6] & 3) << 10) + 1; Capacity= (unsigned int)csize << (n - 9);// 绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。 ),7个柱面(每个盘片7个磁道) 的磁盘,每条磁道有12个扇区,所以此磁盘的容量为6*7*12*512字节。

    37.8K31编辑于 2022-01-17
  • 来自专栏嵌入式项目开发

    Linux驱动开发: 网络设备驱动开发

    /选中SP0总线支持*/ (使用的测试开发板是友善之臂的Tiny4412开发板) 因为开发板引出的SPI接口只有SPI0,所以只能配置SPI0总线。 1. 修改驱动端的probe函数,增加对SPI模式配置与中断号获取,正常情况下可以直接在SPI设备端直接修改,驱动端直接获取信息即可。 它们由设备驱动初始化,并且只能被设备驱动访问;高层协议不需要关心这块内存。 以下代码,在上面的网络设备驱动模型里加入了ENC28J60驱动代码,实现了完整的网卡驱动程序。 INT 引脚 //0 = 禁止所有INT 引脚的活动(引脚始终被驱动为高电平) //bit 6 PKTIE: 接收数据包待处理中断允许位 //1 = 允许接收数据包待处理中断

    19.2K11编辑于 2022-01-27
  • 1.1 Windows驱动开发:配置驱动开发环境

    在进行驱动开发之前,您需要先安装适当的开发环境和工具。首先,您需要安装Windows驱动开发工具包(WDK),这是一组驱动开发所需的工具、库、示例和文档。 然后,您需要安装Visual Studio开发环境,以便编写和调试驱动程序。在安装WDK和Visual Studio之后,您还需要配置适当的项目设置,以便能够正确编译和构建驱动程序。 ,某些读者可能听说过DDK或者IFSDDK,最典型的开发工具包莫过于DDK7600,直到目前此类工具包仍然可以正常使用,但并不推荐。 图片为了能测试驱动程序运行状态,读者需安装VMWare虚拟机,双击附件中的VMware-workstation-full-16.2.4-20089737.exe安装程序一直点击下一步即可,需要注意的是在如下选项中请在增强型键盘驱动程序上打对勾 避免重装系统,在后续课程中读者会出现无数次的蓝屏,而虚拟机快照的快速恢复功能则是一个很好的选择;图片本文作者: 王瑞本文链接: https://www.lyshark.com/post/e59f3cb6.

    1.3K10编辑于 2023-10-14
  • 驱动开发:配置Visual Studio驱动开发环境

    在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境,首先我们需要安装Visual Studio 2013这款功能强大的程序开发工具,在课件内请双击ISO文件并运行内部的vs_ultimate.exe 安装包,Visual Studio的安装非常的简单,您只需要按照提示全部选择默认参数即可,根据机器配置不同可能需要等待一段时间; 配置驱动开发环境 在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境 ,避免重装系统,在后续课程中读者会出现无数次的蓝屏,而虚拟机快照的快速恢复功能则是一个很好的选择; 图片 配置驱动开发模板 1.打开Visual Studio开发工具,然后选择【文件】菜单新建项目,并在已安装模板中选中 \winv6.3\um\x64 C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\km\x64 当如上文件配置完成后,最终效果如下图所示; 图片 6. ,依次选择【文件-导出模板-项目模板-下一步-完成】即可完成模板的导出,此时关闭VS工具并再次打开,就能直接使用我们的模板来开发驱动了,当用户需要使用时,不需要每次都配置。

    2.6K50编辑于 2023-03-13
  • 来自专栏码农爱学习的专栏

    【i.MX6ULL】驱动开发9——Linux IO模型分析

    2.4 信号驱动式I/O模型 应该程序进行Read系统调用,进程继续运行不会阻塞,立即返回,等待内核缓冲区数据准备好后,通过SIGIO信号通知应用程序,应用程序再进行Read系统调用,内核将内核缓冲区中的数据拷贝到用户缓冲区 信号驱动式I/O模型:只点一个菜,然后给服务员留下手机,告诉他菜准备好了打个电话给你,先不要上菜,然后你就出去玩耍了,等到菜好了,服务员手机通知你,你立马回到了餐厅,对服务员说“你现在可以上菜了”,于是你在餐桌上等待服务员把菜送上来 blog.csdn.net/historyasamirror/article/details/4270633 5 总结 本篇介绍了Linux中的五种I/O模型:阻塞式I/O模型、非阻塞式I/O模型、I/O复用模型、信号驱动

    92620发布于 2021-12-01
  • 来自专栏全栈程序员必看

    windows驱动开发教程_windows内核驱动开发

    对于驱动开发开发指引,微软官方文档网站已经提供了很详细的教程文档,并且在Github上提供了一系列典型的例程源码用于开发人员参考。 就上面5种驱动类型,笔者参考着微软的驱动例子开发过 鼠标键盘设备过滤驱动 和 网络过滤软件驱动程序,所以对驱动开发的理解仍在浅水区,如在阅读过程中发现有误的地方,还请不吝指出。 目前在网上能找到的关于驱动开发的中文书籍基本上都是围绕WDM模式进行讲述的,而关于WDF(Windows 驱动框架)开发的书籍寥寥无几,《竹林溪径——深入浅出Window驱动开发》和《Developing 基于WDF的驱动开发 WDF的开发需要遵循一定的规则,开发实现时需要考虑较多的细节,由于篇幅有限,笔者凭着自己的经验暂且稍做列举,后续将写一篇针对WDF驱动开发的文章。 开发人员熟悉驱动安装逻辑有利于驱动开发,感兴趣可以通过此处进行了解。 6.

    2.8K21编辑于 2022-09-27
  • 驱动开发:配置Visual Studio驱动开发环境

    在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境,首先我们需要安装Visual Studio 2013这款功能强大的程序开发工具,在课件内请双击ISO文件并运行内部的vs_ultimate.exe 安装包,Visual Studio的安装非常的简单,您只需要按照提示全部选择默认参数即可,根据机器配置不同可能需要等待一段时间; 配置驱动开发环境 在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境 ,避免重装系统,在后续课程中读者会出现无数次的蓝屏,而虚拟机快照的快速恢复功能则是一个很好的选择; 配置驱动开发模板 1.打开Visual Studio开发工具,然后选择【文件】菜单新建项目,并在已安装模板中选中 Lib\winv6.3\um\x64 C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\km\x64 当如上文件配置完成后,最终效果如下图所示; 6. ,依次选择【文件-导出模板-项目模板-下一步-完成】即可完成模板的导出,此时关闭VS工具并再次打开,就能直接使用我们的模板来开发驱动了,当用户需要使用时,不需要每次都配置。

    1.9K20编辑于 2023-03-14
  • 来自专栏码农爱学习的专栏

    【i.MX6ULL】驱动开发6——Pinctrl子系统与GPIO子系统点亮LED

    打开自己开发板对应的设备树文件(我的是imx6ull-myboard.dts),然后找到iomuxc节点,先来看一下其基本结构: &iomuxc { pinctrl-names = "default" __GPIO5_IO03 表示将该io复用为GPIO 0x10b0 表示对PAD寄存器的配置值,具体含义为如下,之前的文章(驱动开发4--点亮LED(寄存器版))介绍过。 : 10 速度100Mhz *bit [5:3]: 110 R0/6驱动能力 *bit [0]: 0 低转换率 */ 在根节点下创建名为gpioled的LED节点,内容如下 (imx6ull-myboard.dts)是从NXP官方提供的设备树文件(imx6ull-14x14-evk.dts)上修改而来的,可能某些引脚的配置与自己的开发板不一样,需要检查一下是否有使用冲突。 3.3 修改LED驱动文件 在上一篇的设备树版的驱动文件上进行修改,主要修改内容如下。

    1.6K20发布于 2021-10-19
  • 来自专栏嵌入式项目开发

    Linux驱动开发-编写按键驱动

    杂项设备注册函数 这篇文章介绍,如何使用杂项设备框架编写一个简单的按键驱动,完成编写、编译、安装、测试等流程,了解一个杂项字符设备驱动开发流程。 编写按键驱动 使用杂项设备注册按键驱动,应用层使用read接口读取按键值。 编写驱动之前需要先找到按键的原理图,找到按键接到CPU那个IO上的。 \n"); } module_init(tiny4412_key_init); /*驱动入口--安装驱动的时候执行*/ module_exit(tiny4412_key_exit); /*驱动出口-- 卸载驱动的时候执行*/ MODULE_LICENSE("GPL"); /*设置模块的许可证--GPL*/ 2.2 makefile文件 编译驱动的makefile代码。 : 驱动卸载成功 [root@wbyq code]#

    25.5K31编辑于 2022-04-08
  • 来自专栏嵌入式开发圈

    linux驱动开发中与设备树相关的6种debug方法

    整理出了6驱动开发时与设备注册、设备树相关的调试方法,彼此间没有优先级之分,每种方法不一定是最优解,但可以作为一种debug查找问题的手段,快速定位问题原因。 U-Boot fdt command 驱动代码在debug期间,若希望更改外设模块的设备树属性时,在不改变存储设备中dtb文件的前提下,进入到U-Boot的命令行界面,通过U-Boot的fdt命令来实现 通过fdt print查看测试驱动driver-test的设备树信息,当查看某一个设备树结点的信息时,需要使用绝对路径进行设备树结点的索引。 ? 加载driver-test驱动以后设备未创建成功,当然也就无法执行驱动的probe函数。这是除compatible不匹配之外的另一个无法执行驱动probe函数的原因。 ? #6. of_property_xxx 在代码中可以调用of.h中提供的API来检查或这获取device node的信息。 ? 例如下面的调用方式 ? ------END------

    3.3K10发布于 2021-07-30
领券