我是靠谱客的博主 传统月亮,最近开发中收集的这篇文章主要介绍qt调用linux指令实例_事半功倍之学习Linux系统框架(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1f4c8c5561f10a17df4ac8fbba22719c.png

硬件平台:迅为i.MX6ULL终结者

软件系统:Linux

从裸机到OS

做过单片机开发的人都知道裸机程序,裸机程序是在硬件之上直接运行自己写的程序,这种方式简单易懂,

b979e50666a1f0000b57314e08957d42.png

如果使用Linux来开发产品,Linux操作系统上面可以运行应用程序,操作系统和硬件的接口是驱动程序,在框架上更复杂了,总体框架如图:

ca088a9511c378c9080c19511a4efdf7.png

为什么要用Linux系统呢,是要让产品开发变得更容易,如果只是一个简单的控制,用单片机就够了。但是一些高新的产品,如:网络协议站,复杂的图形界面,多任务的开发,这些复杂的应用就需要用到Linux了,

Linux可看成是一个大软件或者说是一个大程序

它是用C语言来开发的。也有少量的汇编,汇编代码主要在系统的启动部分,在Linux这个大程序的基础上做项目。

Linux提供了大量的资源,如:网络协议站,内存管理,设备管理等等,最终的目地是为了让产品开发更加的简单,但是学习起来还是有一定难度的。Linux架构越来越复杂,但使用越来越方便。也就是说使用的方便性是以复杂的架构为代价的。

有了Linux系统,使得软件开发人员化分成两种类型,应用程序和驱动程序,应用开发人员可以不懂底层驱动,应用开发只关注业务逻辑,而驱动开发关注硬件特性。

应用程序通过“系统调用”来使用内核资源,

驱动是Linux内核的一部分,驱动的架构越来越复杂,目的是为了我们做的事情越来越少。

Linux的内核态和用户态

Linux的内核运行在内核态;应用程序运行在用户态,内核态的权限更高,用户态的程序不能直接访问硬件资源,必须通过操作系统内核来对硬件访问。

内核态和用户态不仅是软件上的抽象,ARM处理器本身在硬件上就支持这两种状态。

ARM处理器的工作模式:用户模式,系统模块,中断模块。应用直接访问硬件会触发异常中断,从而阻止应用程序直接访问硬件,所以用户态和内核态的划分使系统更加安全。内核级有更高的特权。

1da84f1e7a549c8199fc6925fec6e2b6.png

刚才我们提到了“系统调用”,这是用户态调用内核态函数的方法,一般通过软中断的方式。软中断是软件指令触发。ARM有对应指令,不同于按键等外部中断。

文件系统

文件系统可直观的理解为Windows上的文件资源管理器,我们上面提到的应该程序就放在文件系统中。

Linux启动后一定要挂载一个文件系统,这样应应程序才能被执行,但VxWorks,ucos等并不需要挂载。

文件系统可大可小,通过构造文件系统可衍生QT,ubuntu,android等系统。

Linux还有一个重要思想:一切皆文件,像串口,led,按键等这些硬件设备,都可以归结为像文件一样的操作,如read,write,open,close,大家在后期编程过程中会深刻的体会到这一点。

5c5d53f175d29ce0ed3ce5141f7fc30a.png

5c5d53f175d29ce0ed3ce5141f7fc30a.png

Linux初学者需要了解的三个知识点:

引导程序(bootloader);(是开发板上电首先运行的程序)

Linux内核镜像:zimage;(bootloader启动后会把内核引导起来)

文件系统镜像:system.img/rootfs.tar.ba2(内核启动最后会挂载文件系统)

并且要了解三个文件之间的关系。初期很多工作都是围绕这三个知识点展开的(开发环境搭建,编译系统,烧写系统),不同的系统文件名会有差异。设备树文件可看成Linux内核的一部分)

2f78d7a694f455e33330dc997c4ecfba.png

最后

以上就是传统月亮为你收集整理的qt调用linux指令实例_事半功倍之学习Linux系统框架(二)的全部内容,希望文章能够帮你解决qt调用linux指令实例_事半功倍之学习Linux系统框架(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部