驱动第一天(韦东山视频) 学习笔记

本次笔记是学习韦东山老师视频所做


首先介绍下整体思路: 嵌入式开发中一般是先移植U-BOOT,U-BOOT的主要任务是启动内核,U-BOOT的额外主要功能是烧写内核,根文件系统,通过USB,UART,网络等方式接受PC中传过来的内核映像,根文件系统。先将接收到的内容放到内存中去,然后写入到Nand Flash中去。   内核烧写成功后,将会进入内核,U-BOOT将不再运行。内核根据U-BOOT传入的参数(各种Targs,包括内存的大小,IP ,终端控制台,服务器IP,NAND分区情况)启动,最后挂接根文件系统,运行根文件系统中的应用程序。

本文主讲内容: 驱动程序的大致思路


上图来自韦东山老师;

linux将所有设备通过文件的方式来操作,操作设备时,一般是执行open ,read,write等接口。那么问题来了,这些接口由谁来提供,从图中可以看出APP中调用的这些函数由C Library提供。还有两层关系需要搞懂,内核如何与C Library挂钩,驱动如何与内核挂钩。先说第一个,APP中调用C库时,将会产生一条汇编指令SWI Val,由ARM汇编可知,这是一条软中断指令,一般裸机用不到,当移植操作系统时,这条指令用于执行系统调用。内核根据这条指令中的Val值,执行不同的系统调用,sys_open,sys_read,sys_write等系统函数。这样,C Library就与内核挂钩。   第二个挂钩:内核如何与设备挂钩,在linux内核中有这么一个概念VFS(vitrual file system),先说点别的,在我们的嵌入式设备中有各种设备,大概可以分为以下几大类,块设备(以SD卡为例,我们在C 库中执行open时,实际上是打开磁盘上 的某个文件),字符设备(这些设备包括LED,按键,各种传感器都可归于此类)。回归正题,VFS这个内核机制将不同的设备组织,根据open的参数,调用驱动中不同的open(这个是由驱动程序实现,我们的主要工作)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值