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()

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

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

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

相关推荐
熊猫钓鱼>_>2 小时前
ArkTS 装饰器总览:V1 / V2 / 通用装饰器完整学习笔记
笔记·学习·华为·交互·harmonyos·arkts·arkweb
GLDbalala2 小时前
GPU PRO 5 - 5.2 glTF: Designing an Open-Standard Runtime Asset Format笔记
笔记
春生野草2 小时前
个人笔记——栈
笔记
chnyi6_ya2 小时前
论文阅读笔记 | One Sentence, One Drama: 基于多智能体系统的个性化短剧生成
论文阅读·笔记
ysa0510303 小时前
【板子】短序列dp(换成维护更小常数维度的dp)
c++·笔记·算法·板子
Dory_Youth4 小时前
联想笔记本电脑失灵
运维·笔记·电脑
2501_926978334 小时前
认知边缘的双向耦合:从核技术类比到智力货币时代
人工智能·经验分享·笔记·ai写作
hanlin034 小时前
刷题笔记:力扣第242、349题(哈希表)
笔记·算法·leetcode
茯苓gao5 小时前
嵌入式开发笔记:CAN与CAN FD完全指南——从帧格式差异到MCU选型实战
网络·笔记·stm32·嵌入式硬件·学习·汽车
木木_王5 小时前
嵌入式学习 | STM32 裸板驱动开发(Day06) | DHT11温湿度传感器超详解(单总线时序+全套驱动代码+智能温湿度报警项目)
驱动开发·stm32·学习