【驱动】02.GPIO子系统

【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM

【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym

【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM

【嵌入式八股】四、嵌入式Linux篇(本专栏)https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0

GPIO子系统

硬件原理

alt

alt

GPIO名为"General Purpose Input/Output",通用目的输入/输出,就是常用的引脚。

芯片内部有很多引脚,这些引脚可以接到GPIO模块,也可以接到I2C等模块。

通过Pinctrl子系统来选择引脚的功能(mux function)、配置引脚:

当一个引脚被复用为GPIO功能时,我们可以去设置它的方向、设置/读取它的值。

一般的寄存器有pin模式选择

使能、时钟

方向,输入输出

电平高低

设置、清除寄存器

应用编程

导出/设置方向/读写值

在sysfs中访问GPIO,实际上用的就是引脚号,老的方法。

a. 先确定某个GPIO Controller的基准引脚号(base number),再计算出某个引脚的号码。

方法如下:

① 先在开发板的/sys/class/gpio目录下,找到各个gpiochipXXX目录:

② 然后进入某个gpiochip目录,查看文件label的内容

③ 根据label的内容对比设备树

label内容来自设备树,比如它的寄存器基地址。用来跟设备树(dtsi文件)比较,就可以知道这对应哪一个GPIO Controller。

内核驱动

具体应用时的驱动

a. 引脚配置为GPIO功能,使用Pinctrl子系统

b. 在设备树里指定GPIO引脚(某一组GPIO 哪一个引脚 属性) gpios=<&gpio1 2 GPIO_ACTIVE_LOW>

c. 在驱动代码中:驱动代码中要注册一个platform_driver,在probe函数中:获得引脚、注册file_operations。

在file_operations中:使用GPIO子系统的标准函数获得GPIO、设置GPIO方向、读取/设置GPIO值。

descriptor-based legacy 引脚号,老的方法
获得GPIO
gpiod_get gpio_request
gpiod_get_index
gpiod_get_arra

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

【嵌入式八股】嵌入式Linux 文章被收录于专栏

查阅整理上千份嵌入式面经,将相关资料汇集于此,主要包括: 0.简历面试 1.语言篇 2.计算机基础 3.硬件篇 4.嵌入式Linux【本专栏】 (建议PC端查看)

全部评论

相关推荐

01-13 13:08
已编辑
嵌入式工程师
秋招大失败0offer,写一下面经方便自己回顾。其实整个秋招投了很多,也没什么面试,只能看看春招了bg双非本,这段日子算了一下好像投递数都没有过百,emm欣旺达(一面挂)一面(9.23,15min)1.自我介绍2.常用的编译器和调试工具3.项目拷打4.LVGL是什么5.英语口语怎么样6.反问聊到后面面试官直接质疑我的项目是不是自己做hh,我的项目确实是自己做的🥲只是特别玩具罢了。中科创达(一面挂)一面(9.24,15min)1.static关键字的作用2.内存对齐及作用3.typedef和define的作用,谁占内存4.局部变量存储的位置5.其他C语言内存管理相关6.字符处理函数7.Linux命令8.TCP通信流程9.反问华勤(线下面,hr面挂)一份没什么价值的面试,没问八股没问技术,也是对我打击最大的面试,这个面试官的压力面太压力我了,而且我感觉他在pua我,他认为我很垃圾但是给我过了一面,我害怕这个公司。。。。于是在hr面没有表现出什么热情,当时我脑子里还记得那个开场就是一句你成绩很差的话。以上是九月份的面试,这时候的基本问题就是太自信,八股没背什么就上了。于是十月份开始背八股。十月份:竹素科技,这一面hr面,宝洁八大问,无后续,后面才知道这一面应该是技术面但是简历经历不匹配,那个人没啥好问的才变hr面。华曦达二面挂,具体面经可见主页。其他基本是来学校宣讲的线下面,算是海面,也蛮少的,之前还不信秋招是靠运气,然后秋招宣讲的时候碰到一家公司,只看了在宣讲当晚的我们学校的简历,提前投了的就没看了。12.10&nbsp;&nbsp;&nbsp;&nbsp;武汉佰钧成-Modem助理工程师线上面试,高通外包岗,投的是驱动但是变这个了1.专业课部分:太久没看过已经忘了,寄(1)&nbsp;FFT的作用及公式(2)奈奎斯特采样定理(3)电阻电容电感的原理以及作用(4)DFT和FFT的区别(5)数字信号处理2.C语言嵌入式八股(1)static关键字作用(2)TCP和UDP的通信流程和相关函数(3)变量的存储地方(4)线程和进程(5)IIC(6)数组和指针前四个答的还可以,TCP的三次握手流程没很熟悉。3.闲聊:比赛,工作,offer约hr面了,但是拒面了,因为心很累。12.12小厂&nbsp;嵌入式开发(20min)主要是项目,1.为什么做这个项目,2.堆栈区别,两个溢出的场景,第二点没答好,只记得一点3.uart和usart的区别4.ADC数据采集原理以及数据采集的算法(滤波),传感器原理,网上买的模块只知道应用原理而不知道设计原理5.对公司的了解以及一些hr问题这家一面就给oc了可惜给的太低且在深圳不包吃住加班也没有加班费没有其他福利的话生活压力太大,技术面面试官很好,还针对我的项目的实际应用给了建议,如果不是给的太低我其实很想去的,秋招唯一的offer,还是很感谢这个公司的肯定,不至于让我在整个秋招真的一无所获。CVTE&nbsp;嵌入式软件支持,二面挂其他有笔试的:CVTE笔试挂,海康威视笔试挂,创维笔试挂,恒生电子笔试挂。面了那么多有点累,收拾收拾一下春招吧,有钱没钱,回家过年
查看26道真题和解析
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务