Linux系统框架(从裸机到OS)

为什么要上系统呢?

如果简单的控制只需要裸板就够了,但是多任务/图形/网络等必须要上系统了就。

Linux是用C语言开发和少量的汇编,可以看成是别人写好的程序了,提供了大量的资源。

比如网络协议/多任务

内存管理/设备管理等等

 

目标是让产品开发更简单

学习是有难度的,架构也越来越复杂但是用起来方便

使用的方便性的代价是架构的复杂性。

 

 

内核态和用户态

 

用户态的程序不能直接访问硬件资源,内核态和用户态不仅是软件上的抽象,ARM处理器本身在硬件上就支持这两种状态。

ARM处理器的工作模式:

用户模式

系统模式

中断模式

应用直接访问硬件会触发异常中断

内核态和用户态的划分使得系统更加安全,内核级有更高的特权

进一步理解“系统调用”,它是用户态调用内核态函数的方法,一般通过软中断的方式。

软中断是软件指令触发,ARM有对应指令,不同于按键等外部中断

 

Linux的文件系统

文件系统可直观理解为Windows上的文件资源管理器,应用程序放在文件系统当中。

Linux启动后一定要挂接一个文件系统,但VxWorks、UCOS等不需要挂接

文件系统可大可小,通过构造文件系统可衍生QT、Ubuntu,Android等系统

Linux等等重要思想:一切皆文件

硬件的操作(串口/LED/按键)都可以归结为:read,write,open,close

Linux初学者首先要搞清三个文件

三个文件:

引导程序(bootloader):uboot.bin/uboot.imx

Linux内核镜像:zImage/uImage/fitImage

文件系统镜像:system.img/rootfs.tar.ba2

 

初期很多工作都是围绕这三个知识点展开的

开发环境搭建/编译系统/烧写系统

不同的系统文件名会有差异

设备树文件(可看成Linux内核的一部分)

Linux应用程序编程

应用编程即Linux系统编程

基于Linux内核之上,基于“系统调用”或者库函数的编程

Linux内核中设置了一组用于实现各种系统功能的子程序,成为系统调用

系统

系统调用由操作系统核心提供,运行与核心态;而普通的函数调用由函数库或用户自己提供,

运行于用户态。

“系统调用”在ARM系统中一般用“软中断”的方式来实现。

ARM处理器的工作模式:

用户模式

系统模式

中断模式

阻塞式IO:一直在那里等直到数据发过来,也可以马上返回能读多少算多少。

信号驱动的IO:告诉内核需求,干别的事情,数据来了发个信号

异步IO:告诉内核这个事,内核全部帮我把这个事情做完。

同时对多路串口操作:多路复用。

进程有三种,就绪,运行,阻塞;

函数等复制一份给子进程

进程之间通信:比如A负责数据收发,B负责图像解释。那么就需要进程之间的通信了。

线程是操作系统时间片调度的最小单位,每个线程可使用进程的全局变量

Socket是个接口,标准的;都是socket方式

 

Linux驱动学习,网络资料非常全

设备节点:上层应用和底层驱动之间的桥梁,通过open等操作底层

Linux把设备看成文件,对设备的操作可以看成对文件的读写。

设备节点可以通过mkmod命令来生成

包含了主设备和次设备号,可以等同于设备节点;

编写驱动程序:在内核编写open等函数,打包,组合到file_operations中,通过register_chrdev注册到内核当中,其中一个参数就是设备节点,也就是关联起来了设备节点和file_operations并和内核关联了起来,这样就可以通过设备节点来找到驱动了。用户间接的实现了对硬件的控制。

平台总线从Linux2.6开始的,外面加了一层platform实现,引入了设备模式的概念,对应的是sysfs文件系统,实现了BSP。让设备驱动和设备资源分开。

通过设备的名字来匹配结合。在过程中也会完成原始架构的操作,生成设备节点等等。平台架构使得做产品轻松了。诞生了BSP工程师。

平台总线架构在驱动部分进一步分割出了BSP,工作更简单了。我们多数在修改设备树。

换个板子那么修改个设备树文件就好了,设备树的引入需要在Bootload参与传递设备资源。

分离也是模块化设计思路。(平台架构的引入把驱动分成了平台驱动和平台设备)

 

分层:原始框架被新的架构做了封装。也就是在外面又加了一层。屏蔽底层细节,增加了软件的易用性。

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值