事半功倍之学习Linux系统框架(二)
软件系统:Linux
从裸机到OS
做过单片机开发的人都知道裸机程序,裸机程序是在硬件之上直接运行自己写的程序,这种方式简单易懂,
如果使用Linux来开发产品
硬件平台:迅为i.MX6ULL终结者 软件系统:Linux 从裸机到OS 做过单片机开发的人都知道裸机程序,裸机程序是在硬件之上直接运行自己写的程序,这种方式简单易懂, 如果使用Linux来开发产品,Linux操作系统上面可以运行应用程序,操作系统和硬件的接口是驱动程序,在框架上更复杂了,总体框架如图: 为什么要用Linux系统呢,是要让产品开发变得更容易,如果只是一个简单的控制,用单片机就够了。但是一些高新的产品,如:网络协议站,复杂的图形界面,多任务的开发,这些复杂的应用就需要用到Linux了, Linux可看成是一个大软件或者说是一个大程序 它是用C语言来开发的。也有少量的汇编,汇编代码主要在系统的启动部分,在Linux这个大程序的基础上做项目。 Linux提供了大量的资源,如:网络协议站,内存管理,设备管理等等,最终的目地是为了让产品开发更加的简单,但是学习起来还是有一定难度的。Linux架构越来越复杂,但使用越来越方便。也就是说使用的方便性是以复杂的架构为代价的。 有了Linux系统,使得软件开发人员化分成两种类型,应用程序和驱动程序,应用开发人员可以不懂底层驱动,应用开发只关注业务逻辑linux系统框图,而驱动开发关注硬件特性。 应用程序通过“系统调用”来使用内核资源, 驱动是Linux内核的一部分,驱动的架构越来越复杂,目的是为了我们做的事情越来越少。 Linux的内核态和用户态 Linux的内核运行在内核态;应用程序运行在用户态,内核态的权限更高,用户态的程序不能直接访问硬件资源,必须通过操作系统内核来对硬件访问。 内核态和用户态不仅是软件上的抽象,ARM处理器本身在硬件上就支持这两种状态。 ARM处理器的工作模式:用户模式,系统模块,中断模块。应用直接访问硬件会触发异常中断,从而阻止应用程序直接访问硬件,所以用户态和内核态的划分使系统更加安全。内核级有更高的特权。 刚才我们提到了“系统调用”,这是用户态调用内核态函数的方法,一般通过软中断的方式。软中断是软件指令触发。ARM有对应指令,不同于按键等外部中断。 文件系统 文件系统可直观的理解为Windows上的文件资源管理器,我们上面提到的应该程序就放在文件系统中。 Linux启动后一定要挂载一个文件系统,这样应应程序才能被执行,但VxWorks,ucos等并不需要挂载。 文件系统可大可小,通过构造文件系统可衍生QT,ubuntu,android等系统。 Linux还有一个重要思想:一切皆文件,像串口,led,按键等这些硬件设备,都可以归结为像文件一样的操作,如read,write,open,close,大家在后期编程过程中会深刻的体会到这一点。 Linux初学者需要了解的三个知识点: 引导程序(bootloader);(是开发板上电首先运行的程序) Linux内核镜像:zimage;(bootloader启动后会把内核引导起来) 文件系统镜像:system.img/rootfs.tar.ba2(内核启动最后会挂载文件系统) 并且要了解三个文件之间的关系。初期很多工作都是围绕这三个知识点展开的(开发环境搭建,编译系统,烧写系统),不同的系统文件名会有差异。设备树文件可看成Linux内核的一部分) (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |