Uboot中外存MMC(sd/iNand等)驱动架构代码简单分析

2020-7-5 19:50 北京 晴 屋内开空调不知道外面啥情况 一天没出屋 外面貌似闷热吧 !

本文仅作为技术积累,方便日后查阅!

作家格拉德威尔在《异类》一书中指出:“人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件”。他将此称为“一万小时定律”。要成为某个领域的专家,需要10000小时,按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。
 

2.10.1.uboot与linux驱动

1、uboot本身是裸机程序

裸机程序中是直接操控硬件的,操作系统中必须通过驱动来操控硬件。这两个有什么区别?本质区别就是分层。

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

(1)操作系统(指的是linux)下MMU肯定是开启的,也就是说linux驱动中肯定都使用的是虚拟地址。而纯裸机程序中根本不会开MMU,全部使用的是物理地址。这是裸机下和驱动中操控硬件的一个重要区别。

(2)uboot早期也是纯物理地址工作的,但是现在的uboot开启了MMU做了虚拟地址映射,这个东西驱动也必须考虑。查uboot中的虚拟地址映射表,发现除了0x30000000-0x3FFFFFFF映射到了0xC0000000-0xCFFFFFFF之外,其余的虚拟地址空间全是原样映射的。而我们驱动中主要是操控硬件寄存器,而S5PV210的SFR都在0xExxxxxx地址空间,因此我们这里驱动中不必考虑虚拟地址。

这个虚拟地址映射详细原理和配置还不太懂,记录一下,有空专门去研究一下???????

3、uboot借用(移植)了linux驱动

(1)linux驱动非强耦合的模块化特点,是让uboot借用(移植)的关键。

(2)uboot移植了linux驱动源代码。

(3)uboot中的硬件驱动比linux简单。uboot移植linux驱动时只是借用了linux驱动的一部分而已。

 

2.10.2.iNand/SD驱动解析1

 

1、在uboot启动第二阶段start_armboot中初始化

mmc_initialize关键代码流程

start_armboot

         mmc_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值