Linux学习笔记9-Linux驱动【1】

本文解释了Linux驱动与应用的区别,介绍了单片机编程、内核态与用户态概念,以及如何通过字符设备驱动实现LED设备的基本操作,包括open、read、write和release函数。后续内容将涉及驱动的注册、模块化加载与卸载,以及设备树的学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不知道有没有人和我一样,一开始对Linux驱动和Linux应用概念模糊,现在明确了。

  • 单片机的编程属于裸机,是直接在硬件上运行的程序,不需要操作系统支持,包括之前基于的I.MX6ULL编程都是如此
  • Linux驱动负责将应用程序的请求转化为硬件可以理解的指令,并将硬件的响应传递给应用程序。在Linux中,驱动程序通常以内核模块的形式存在,它们被加载到内核中以支持特定的硬件设备。驱动会调用内核接口提供的API完成设备驱动的注册
  • Linux应用编程是指开发运行在Linux操作系统上的应用程序。可以这么理解,Linux应用就是我们熟悉的windows应用程序,而Linux驱动是windows底层的那些设备驱动,例如声卡驱动,网卡驱动等等。驱动和硬件打交道,应用则不需要
  • Linux开发其实就是这两个方向,驱动和应用。Linux应用使用Qt creator比较多,类似于C#的Winform
  • 接下去的学习就是Linux驱动,即和硬件(设备)打交道,同时也会有一些基于命令行的Linux应用开发作为驱动的测试。

最开始要明确的概念是用户态内核态,即userkernel。写了Linux驱动后需要用应用(App)来操作内核,App属于用户态,和内核是隔绝开的。

Linux中一切都是文件,驱动加载成功后会在/dev生成一个相应的文件,例如/dev/DCmotor,就是直流电机的文件。对该文件进行相应的操作即实现对硬件的操作。
使用open, close, write, read几个函数实现打开设备,关闭设备,向设备写数据实现操作和读取设备状态等功能。这些实现硬件操作的函数集合可以参考include/linux/fs.h中的file_operation结构体。字符设备驱动开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值