uboot驱动和Linux内核驱动有什么区别?

一、前言

uboot启动后,一些外设如DDR、EMMC、网口、串口、音频、显示等等已经被初始化,为什么Linux内核中还需要写Linux驱动呢?


二、uboot驱动和Linux驱动的区别

1、直观理解

驱动,不仅仅是为了初始化,还实现了一组接口(read、write、open、close)供用户态应用程序使用。

光初始化有啥用,就像你开车一样,发动机发动了,前灯亮了,如此而已。驱动不会自己执行,驱动都是被动被程序调用。就像车不会自己跑一样,需要司机(应用程序)通过车(驱动)提供的接口,去行驶、倒车、关窗、关闭打开车灯。

来自:https://www.zhihu.com/question/534378582/answer/2500296995

2、专业理解

uboot本质就是个裸板程序,对于裸板程序来说:

第一只能单任务执行,用户需求要多任务;

第二,开发起来极其繁琐,比如IIC,各种时序写完程序员要花很多时间加班加点赶进程最后还是比竞争对手慢;

第三,直接操作物理地址,极其不安全。

因此uboot我们要把他设计成这样的特性:

功能上只做一些必要的硬件初始化(根据用户需求),和启动linux内核,并为linux提供根文件系统的启动参数。生命周期上linux一旦启动,uboot就死亡,所有内存由linux掌控。

来自:https://www.zhihu.com/question/534378582/answer/2502620899


 三、uboot为什么要有驱动

我们都知道uboot主要作用就是启动Linux内核,那为什么需要再uboot中添加硬件的驱动呢?等到内核启动之后再添加Linux驱动到内核不就可以了吗?

uboot提供网络的功能,可以方便后续调试。比如,nfs文件系统,tftp下载等。当然,如果不想用这个网络驱动也可以,但是,这样就少了一些调试途径了。 现在的开发板,有些也可以通过OTG USB下载,下载文件系统的,不需要网线可以的。

比如移植网络驱动,uboot阶段可以通过网络下载,更新linux kernel,rootfs等。

在内核出现故障时,可以使用uboot的nfs文件系统、tftp下载等功能修复。 


 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kashine

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值