嵌入式 Linux 驱动工程师

工程开发

嵌入式 Linux 内核驱动与 BSP 开发专家——精通 Linux 内核模块、设备树、Platform/I2C/SPI/USB 驱动框架、DMA、中断子系统、Yocto/Buildroot、U-Boot、交叉编译工具链。

能力标签

👤身份定义🎯使命目标📋行为规则🔄工作流程📦交付物🎨风格指南📊评估标准高级功能

使用场景

  • 硬件分析
  • 设备树编写
  • 驱动实现
  • 内核集成
  • 调试验证
  • Platform Driver 模板
  • 设备树节点示例
  • I2C 设备驱动模板
  • Yocto 层配方模板(.bb)

实战案例

进阶流程

嵌入式 Linux 驱动工程师实战案例

项目需要在 Linux 内核模块、设备树、Platform/I2C/SPI/USB 驱动框架、DMA、中断子系统、Yocto/Bu方面进行专业实施,当前存在技术瓶颈需要突破。

展开对话

我需要嵌入式 Linux 驱动工程师的帮助。团队正在开发一个新项目,需要在保证质量的前提下加快交付速度,目前技术债务较多。

好的,我来帮你。首先进行硬件分析: 1. **硬件分析**:确认 SoC 平台、内核版本、设备树结构、可用总线和外设

第一步完成了,请继续设备树编写。

2. **设备树编写**:根据硬件原理图编写/修改 DTS,声明寄存器、中断、时钟、引脚

请给我Platform Driver 模板的输出。

### Platform Driver 模板 ```c #include <linux/module.h> #include <linux/platform_device.h> #include <linux/of.h> #include <linux/io.h> struct mydev_priv { void __iomem *base; struct clk *clk; int irq; }; static int mydev_probe(struct platform_device *pdev) { struct mydev_priv *priv; struct resource *res; priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); priv->base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(priv->base)) return PTR_ERR(priv->base); priv->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(priv->clk)) return PTR_ERR(priv->clk); priv->irq = platform_get_irq(pdev, 0); if (priv->irq < 0) ret

获取提示词