学习韦东山视频心得(一)

学习韦东山视频心得(一)

任何计算机系统都是软件和硬件的结合体,如果只有硬件而没有软件,则硬件是没有灵魂的躯壳;如果只有软件没有硬件,则软件就是一堆无用的字符。在底层硬件的基础上,操作系统覆盖一层驱动,屏蔽底层硬件的操作,通过特定的软件接口去操作底层硬件,用户在用户空间可以很容易的把软件设计目标放在策略与需求上,可以很方便的屏蔽掉底层实现,从而很好的完成客户功能需求。计算机系统是软件和硬件的结合体。而软件又分为应用层软件和驱动层软件。驱动层软件是应用层软件和底层硬件的纽带。通过驱动层软件实现对底层硬件屏蔽。

在裸机时代,比如单片机系统,程序员往往是直接操作硬件寄存器,直接设置硬件。而在Linux操作系统中,硬件驱动程序中实现对硬件直接操作,而用户空间,通过通用的系统调用接口,实现对硬件操作,应用程序没有直接操作底层设备,通过posix标准,应用程序的系统调用往往是被规定和限值,用户只能通过规定的接口实现对底层硬件的操作,导致了应用程序在类UINIX操作系统具有非常好的可移植性。

图1.1  直接操作硬件程序

上图1.1 是裸机时代,应用程序和硬件操作糅合在一起,应用程序和硬件操作高度耦合的框图,上述代码一般很难有良好的代码互用和移植性。往往从一个平台移植到另一个平台,甚至是同一平台不同硬件配置都要求很大的代码改动,另外从应用层来说,应用与驱动高度耦合,应用程序也几乎难以移植,甚至说是没有应用程序概念,原因在于应用与驱动的纠缠不清。

图2.2  无操作系统应用程序和设备驱动程序关系

上图1.2所示,良好的裸机代码框架,设备驱动层和应用层之间有良好的分层思想,用户可以较好的实现策略和需求,例如:客户要求实现流水灯程序,程序员在底层机制实现(硬件操作)的基础下,可以充分在用户应用程序中把主要精力方法流水灯的实现,即策略。但是在良好的裸机程序设计,代码移植性可能从一个平台移植到另外一平台只需要修改少量的底层驱动,例如:LED_ON()的实现。但是在用户空间,没有系统调用概念,函数接口千差万别。应用程序移植性差。

图2.3  Linux系统调用框图

操作系统中,需求决定应用程序,通过系统调用,调用底层驱动,此外,在驱动程序中,把一部分公用的驱动接口抽象出来,如此,程序员只需修改很少量的驱动资源,形成特定的驱动框架。导致用户只需添加专用的硬件属性作为平台资源,在内核中获取资源,大大解放了设备驱动开发,提高了设备驱动的通用型。在用户空间,由于遵循posix标准,类UNIX操作系统中,所有操作接口基本一样,从而方便了应用程序的移植,应用程序几乎不要做修改。

时间: 2024-10-13 12:02:38

学习韦东山视频心得(一)的相关文章

学习韦东山视频心得(二)

学习韦东山视频心得(二) 1.字符设备驱动 图2.6 LCD驱动框架 图2.7 LCD硬件框架 字符设备是Linux设备中最基本的设备驱动是其他大型驱动的基石.字符设 备驱动模型,如下图2.8所示. Linux内核驱动模块一般由模块加载函数,模块卸载函数,模块许可申明等等组成.在字符设备驱动中在模块加载函数中注册主设备,注册操作方法,创建设备结点等操作.字符设备驱动移植步骤: (1)在模块加载函数中创建设备文件,注册主设备号,注册操作方法 (2)分别实现各自操作方法 Linux内核驱动模块一般由

学习韦东山视频心得(三)

学习韦东山视频心得(三) I2C总线广泛的用于各种传感器中,仅仅通过SDA,SCL线实现了主机与设备之间的通信.Linux系统中I2C驱动较为庞大.Linux系统中可以采用两种方式实现I2C设备驱动,我们既可以把I2C设备当做普通的字符设备去操作,同时可以利用内核中庞大而错综复杂的框架.如果当做普通的字符设备,程序员只要把管脚模拟时序或者I2C控制器自己实现不采用内核框架,使得程序员不需去研究I2C设备驱动庞大的框架,但是,如此写出来的驱动移植性跟单片机相差无几,移植性能很差,优点是比较直截了当

韦东山视频学习的一席记录

1.在Windows下,输入cmd可进入命令框 输入E:就进入E盘,再进入其他文件夹,就用cd指令 原文地址:https://www.cnblogs.com/QQ2962269558/p/11748200.html

韦东山视频第三节 I2C协议

如果接触硬件多了的话,就可以发现I2C协议是我们经常使用到的.只需要SDA(数据)和SCL(时钟)便能搭建好电路. 电路虽然简单,但是关键还得理解它规定好的协议.首先,看一下时序图. 从图中可以看出,传输一次数据分为四个主要环节:S(起始信号),start byte(要写入的字节),ACK(应答信号), SR(停止信号).作用不去描述,下面对它们如何产生作用描述一下我的看法. S(起始信号):当SCL为高,SDA由高电平拉低时,代表传输开始. start byte(要写入的字节):SCL周期高低

作为一个新人,怎样学习嵌入式Linux,(韦东山)

很早以前在网上看到的韦东山老师写的文章,复制到自己的博客,方便自己以后看. 在学习嵌入式Linux之前,肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会). C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能.比如写一个数组排序.输入数字求和什么的. 学C语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决:执行出错没关系,自己去分析.以前我是用 VC来练习C语言的,经常去尝试着写一些C语言竞赛的题目.它们是纯C.纯数学.纯逻辑的题目,不涉及界面这些

韦东山linux视频第一期前两节观看收获

刚刚看了韦东山的linux视频第一期,主要讲解的ARM的硬件基础,对于我这样一个从单片机转过来的人来说,的确震撼! 我看过很多书和视频关于单片机的,但是从来没有一个会做到这么精练的.对,精练,归纳总结的相当好. 第一节 原理图之GPIO和门电路 第一节里,简要介绍了一些模拟电路,内容简单,但是却话出了最实用的的部分. (1)以前在模电课上,三极管这一节课可是花费了相当章节,结果让人云里雾里,不知道怎么去用.但是在这里,韦东山老 师没有多余的部分,直接把最直接.最有效的部分给了我们.P即正,N即负

韦东山资料大全

QQ截图20150514154500.png (34.07 KB, 下载次数: 0) 下载附件  保存到相册 2 小时前 上传 网盘地址:http://yun.baidu.com/share/home?uk=2520074993&view=share#category/type=0 本人是一位大三的学生,在大二下学期的时候接触了51单片机,随后开始单片机的学习并逐渐对单片机产生了兴趣,并用单片机做了一些小设计,虽然这些设计没什么技术含量,但是为我迈向嵌入式的道路奠定了基础. 随后,同学说51单片

韦东山yy公开课笔记(1)--各种杂的问题

1,第四期的智能猫眼会有打电话和发短信的功能吗? 答:会有打电话功能,硬件上支持打电话就会支持发短信,只是软件上是否实现发短信现在未定.因为短信延迟太严重,不是可靠的. 2,请问关于makefile中的很多设置项,像段啊什么的?是什么意思呢?需要深入学习吗? 3 答:对于裸板才需要我们自己管理“段”,这并不是什么很高深的知识,看过涉及重定位的裸板视频就可以了解清楚了.至于其他设置项,基本上就是编译选项而已.Makefile本身并不复杂,也不应该成为学习的拦路虎:用于裸板的Makefile,它是非

韦东山yy公开课笔记(2)--各种杂的问题

1. 编译器的版本和glibc库有对应关系吗,如何查看glibc的版本(glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc),编译器是不是只带glibc被编译生成的 .so 文件,如果自制系统调用的话是不是还要下载glibc然后重新编译 答:一般来说制作编译器的时候就会选定glibc,所以你得到的编译器里面含有glibc的库,既有so文件,也有.a文件.编译器和Glibc都在更新的,新编译器一般不能使用过老的glibc.但是它们之间的版本关系,我也不了解. 自制系