uboot之uboot中的硬件驱动

本文详细介绍了UBoot如何在启动过程中初始化硬件驱动,特别是针对MMC系统的初始化过程,包括uboot与linux驱动的关系、硬件地址映射、驱动模块化设计等。通过分析mmc_initialize、cup_mmc_init、smdk_s3c_hsmmc_init和s3c_hsmmc_initialize等关键函数,阐述了从SoC到SD卡的初始化步骤,并强调了struct mmc结构体在驱动管理中的重要作用。

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

一、uboot和linux驱动

    1、uboot本身是裸机程序,裸机程序是没有驱动概念的

    2、裸机程序是直接操控硬件的,操作系统中必须通过驱动来操控硬件。这两个的区别在于分层。

    3、uboot的虚拟地址对硬件操作的影响

        (1)、操作系统(linux)下MMU肯定是开启的,也就是说linux驱动中肯定都使用的是虚拟地址。而纯裸机中根

        本不会开MMU,全部使用的是物理地址。这是裸机下和驱动中操控硬件的一个重要区别。

        (2)、uboot早期也是纯物理地址工作的,但是现在的uboot开启了MMU做了虚拟地址映射,这个东西驱动也必

        须考虑。查uboot中的虚拟地址映射表,发现除了0x30000000-0xfffffff映射到了0xc000000-0xcffffff之外,其余的

        虚拟地址空间全是原样映射的。而我们驱动中主要是操控硬件寄存器,而S5PV210的SFR都在0xExxxxxx地址空间,

        因此驱动中不必考虑虚拟地址。

    4、uboot借用了linux驱动

        (1)、linux驱动本身做了模块化设计。linux驱动本身和linux内核不是强耦合的,这是linux驱动可以被uboot借用

        的关键。

        (2)、uboot移植了linux驱动源代码。uboot是从源代码级别去移植linux驱动的,这就是linux系统的开源性。

    5、mmc_initialize

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值