嵌入式linux问答--怎么控制io,iic,uart这些硬件功能

问:嵌入式linux怎么控制io,iic, uart等硬件功能?

答:写好驱动,运行在系统下的程序就可以透过驱动来控制硬件功能。

         Linux实行的是驱动与应用分层的设计。我们需要对要控制的设备,比如串口,io,硬件spi接口灯写好对应的驱动程序,完成初始化,获取数据,发送数据等底层操作都是写在驱动内。

        写好的驱动程序需要被编译进linux内核中。(当然,也有动态装载的方法)

        运行在系统下的程序(应用层)是无法操作底层寄存器的,只有运行于内核中的驱动才有这个权限。所有应用程序都可以通过驱动去控制硬件。

         比如我想实现控制一个led。在系统下编写的程序无权控制底层寄存器,就需要先写一个驱动,驱动内实现初始化led相关的io寄存器,实现点亮/熄灭led的操作功能。然后将其编译进内核,系统下的所有程序就都可以调用该驱动留下的接口,实现对led的控制。

         学习嵌入式linux,自己编写驱动是必经之路。

问:设备树是干什么的?

答:设备树,以树形结构描述当前连接的所有设备,描述给系统和驱动看

        应该很多人写51单片机代码的时候都有个习惯,把引脚连接信息用#define写在程序前面,比如#define led0 P1.1 。这样后面写代码的时候都只要用led0这个名字,就算把led拔掉换到另一个引脚上,只要修改代码文件中这一句,就可以继续用。设备树就相当于单片机程序中的#define led0 P1.1,不过描述的信息多了一些。

        设备树内会写着led012345各自连接在哪些引脚,key12345又连接在哪些引脚,xx模块挂载在哪个spi口上,xx模块在iic总线上的地址。(设备树由你写,写哪些数据由你决定)

        如果硬件发生变动,只需要编写好新硬件电路的设备树,就可以沿用原来编写好的驱动。不需要因为led换了个引脚插,或是多加了个led,就需要重新翻出驱动进行修改。

版权声明:本文为CSDN博主「orange2c」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43850980/article/details/121946375

生成海报
点赞 0

orange2c

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

[STM32学习]——一文搞懂I2C总线

目录 I2C总线的概念 I2C最重要的功能包括: I2C的物理层 I2C主要特点: I2C的高阻态 I2C物理层总结: I2C的协议层 初始(空闲)状态 开始

串口之间的文件传输

一、实验目的 将两台笔记本电脑,借助 usb转rs232 模块和杜邦线,建立起串口连接。然后用串口助手等工具软件(带文件传输功能)将一台笔记本上的一个大文件(图片、视频和压

STM32通信接口RS485

18.1关于 RS485 RS485是美国电子工业协会(Electronic Industries Association,EIA)于1983年发布的串行通信接口标准,经通讯工业协会&#