ARM Linux 在底层 BSP 上的优化

本文详述了在新的ARM体系结构SoC上运行Linux所需的基础硬件支撑,包括定时器、中断控制器、SMP启动、CPU热插拔、时钟框架、pinctrl驱动和DMA驱动的实现。这些驱动对于Linux内核与硬件的交互至关重要,确保了系统的正常运行和功能复用。通过设备树,可以方便地配置GPIO、时钟和pinmux资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 为了让Linux在一块新的ARM SoC上运行,需要提供大量的底层支撑,如定时器节拍、中断控制器、SMP启动、CPU热插拔以及底层的GPIO、时钟、pinctrl、DMA硬件的封装;
  1. 定时器节拍为Linux基于时间片的调度机制以及内核和用户空间的定时器提供支撑;
  2. 中断控制器的驱动使得Linux内核工程师可以直接调用local_irq_disable() disable_irq()等通用的中断API
  3. SMP启动用于让SoC内部的多个cpu核都投入运行;
  4. CPU热插拔用于在运行时挂载或拔除cpu
  5. 时钟框架,让具体的SoC实现clk_ops()成员函数,并通过clk_register()、clk_register_clkdev()注册时钟源以及源与设备的对应关系,具体的时钟驱动都统一迁移到drivers/clk目录中;
  6. pinctrl驱动架构,通过在内核中增加一个drivers/pinctrl目录,以支撑SoC上的引脚复用,各SoC的实现代码均放到该目录;
  7. 各SoC采用dmaengine架构实现DMA驱动,该架构提供了通用的DMA通道API,例如dmaengine_prep_slave_single() dmaengine_submit()等,各SoC实现dma_device的成员函数,实现代码统一放入drivers/dma目录;
  8. drivers/gpio下的gpiolib已能与新的pinctrl共存,实现引脚的GPIO和其他功能之间的复用,各SoC只需要实现统一的gpio_chip结构体的成员函数即可;
  • 当前GPIO、时钟、pinmux等都能良好地进行设备树的映射处理,因此可方便地在.dts中定义一个设备需要的GPIO、时钟和pinmux引脚;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值