3.26-3.27学习笔记

4月份开始找实习,有点项目经验。这几天电话面了一个小公司,被问到

这两个项目的背景是什么,介绍一下这两个项目,常用什么操作系统,有其他板子的sdk包你可以做到驱动lcd吗,iic和spi出现问题会用示波器查询原因吗,有了解rtos吗,专业成绩怎么样

我感觉自己都能说一点,但是挂断后感觉答的不好还有错误,对操作系统的知识直接说不会,面试题目还是要积累一下,答不上来

面试题目:

有用过指针吗,主要在项目怎么使用?

直接访问寄存器地址

ioremap 映射虚拟地址操作硬件

处理数据缓冲区

用结构体指针管理设备信息

函数指针实现驱动接口与回调

uboot启动流程

硬件上电,CPU 从复位地址取指(一般是 Flash 起始地址)。

执行 SPL / 第一阶段启动:关看门狗、关中断、初始化 DDR、时钟、引脚。

把 U-Boot 本体从 Flash 搬到 DDR 并跳转到 DDR 执行。

进入 第二阶段 U-Boot:初始化串口、网口、Flash、EMMC 等外设。

解析环境变量,执行 bootcmd:读取内核、设备树到内存。

启动命令 bootm / booti 跳转 Linux 内核,U-Boot 使命结束。

uboot如何引导内核启动的

U-Boot 先把内核镜像 和设备树 DTB 读到 DDR 里,然后准备好启动参数,最后通过 bootm/booti 跳转到内核入口,把 CPU 控制权完全交给 Linux,自己就退出了。

iic和spi出现问题怎么排查问题

排查 IIC 和 SPI 问题,我一般先看硬件供电、引脚和上拉,然后用示波器看时钟是否正常、有没有应答。

有时钟没应答,多是从机地址或硬件问题;没时钟多是驱动配置或引脚复用错。

再降低速率、确认 SPI 模式、IIC 读写时序,基本就能定位。

LCD的驱动框架,如何编写

1.分配一个fb_info结构体:framebuffer_al1oc();

2.设置fb_info

3.设置硬件相关的操作

  1. 使能LCD,并注册 fb_info:register_framebufferO

什么是根文件系统

根文件系统是 Linux 挂载的第一个文件系统 ,对应根目录 /,里面包含 init 进程、工具、库、设备节点,内核必须靠它才能完成后续启动,进入用户态。

中断实验:

这次实现GPIO中断实验。当IO口检测到低电平(按键触发),就使得LED亮

要写一个中断要知道为什么中断分上半部和下半部,Linux 内核将中断分为上半部和下半部的主要目的就是实现中断处理函数的快进快出,那些对时间敏感、执行速度快的操作可以放到中断处理函数中,也就是上半部。剩下的所有工作都可以放到下半部去执行。中断下半部一般使用"软中断""tasklet""工作队列"

添加设备树节点

复制代码
	key {
	compatible = "rzroomi,key";
	pinctrl-0 = <&key_gpio>;
	pinctrl-names = "rzroomi,key";
	key-gpio = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
	interrupt-parent = <&gpio0>;
	interrupts = <22 IRQ_TYPE_LEVEL_LOW>;
	status = "okay";
	};

设置 interrupts 属性,也就是设置中断源,第一个 cells 的 22 表示 GPIO0 组的 22

号 IO,也就是 PC6。IRQ_TYPE_LEVEL_LOW表示低电平触发。

如何写一个驱动中断?使用的框架是什么?

1定义 platform_driver 结构,实现 probe / remove 函数。

2编写 of_device_id 匹配表,与设备树 compatible 对应。

3在 probe 函数中:从设备树获取按键 GPIO通过 gpiod_to_irq() 转换成中断号

4注册中断处理函数 request_irq

5实现 中断上半部(中断处理函数),快速响应并调度底半部。

6用 工作队列 / 定时器 做 底半部,处理消抖、LED 控制等逻辑。

7卸载时释放中断、GPIO,取消工作队列。

上半部快速响应并调度工作队列,下半部做按键消抖和 LED 控制,实现稳定的按键中断功能。

函数使用

1,module_platform_driver

这是新认识的函数自动帮你生成module_init(xxx_init)module_exit(xxx_exit)

2,devm_request_irq()

注册中断,最核心函数

参数有

中断号

中断处理函数

触发方式(IRQF_TRIGGER_LOW / FALLING)

设备名称

传递给中断的私有数据

3,irqreturn_t irq_handler()

中断执行函数。中断上半部,中断触发时立刻执行。

具体的驱动代码下期再写。

'这期内容有点少,主要是花时间去准备实习面试,如有错误的地方请指正,谢谢!!

相关推荐
~patience~1 小时前
WAV 逆向分析工具使用笔记
笔记
滴啦嘟啦哒1 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
xier_ran1 小时前
【infra之路】AI 编译器学习笔记(十三):AI 编译器全景——TVM、XLA、IREE 与其他
人工智能·笔记·学习
连山齐名1 小时前
ai应用开发的学习笔记
服务器·笔记·学习
乔旭伟2 小时前
中小厂生产管理系统选型笔记:驱动方式、主线链路与成本结构
笔记·需求分析·规格说明书
xier_ran2 小时前
【infra之路】AI 编译器学习笔记(十四):为什么要 tiling,以及矩阵计算单元的“固定“
人工智能·笔记·学习
燕落南枝2 小时前
HTML 学习:辅助标签 label 与字符实体
前端·学习·html
hackchen2 小时前
LangChain 学习第 3 课 - 输出解析器(Output Parser)
数据库·学习·langchain
如旧呀3 小时前
origin绘制等距的HSD置信区间
笔记·origin
问心无愧05133 小时前
[极客大挑战 2019]Upload
笔记