搜索

中科大嵌入式linux课程笔记01


发布时间: 2022-11-24 20:49:00    浏览次数:35 次

lesson1 嵌入式操作系统概述

课程简介

课程目录

z18kF0.png

z1tL26.png

参考书

z1tkB4.png

嵌入式系统结构和开发流程

概念、特点、组成、硬件、软件、开发

​ 嵌入式系统首先是一个计算机系统,后者有的技术它也有。只不过专用的,可靠性、体积、成本、功耗要求更严格。面向用户、面向产品、面向应用;一定要与具体的应用结合才有生命力,才更有优势。(因此其cpu不是通用的)

嵌入式的是“专用的”

概念&特点

z1ae4s.png

z1aY59.png](https://imgse.com/i/z1aY59)

​ CPU、RAM、Flash可以做成三个芯片,成一个主板。也可以直接把三个部分做成一块芯片,如51单片机,效率、可靠性更高。

系统结构

z1wiTg.png

z1wm60.png

​ 嵌入式系统不一定有ROM。Flash如果是并行的(naoFlash),则可以直接把bios等烧写到flash,直接让flash上运行。入口地址就指向0x0000

z10sVU.png

z10hKx.png

可以认为,ARM是MPU,单片机是MCU

开发流程

z107Ie.png

​ 嵌入式系统开发第一件事是:确定处理器。处理器性能越强,功耗越大,温度越高,因此就越不稳定,同时寿命也会减少。由于要散热,体积也会变大。

z1B0Wd.png

z1Bgw8.png

简单嵌入式应用

z1BTO0.png

复杂嵌入式系统

z1BOkF.png

z1DCm6.png

初始化引导代码即BootLoaer【相当于BIOS,但以后不这样叫了】。CPU上电之后,由初始化引导代码对硬件进行一定的初始化。

​ Bootloader是一上电就要运行的,因此一般放在ROM里面,操作系统的代码一般放在串行Flash上面(不能直接运行),由初始化引导程序负责拷贝到可以直接运行的地儿,如RAM上。而如果用的并行Flash(能直接运行),则操作系统和初始化引导程序都可以放在flash里面。

​ 应用程序要放在文件系统里面,因为需要有路径。

​ 设备驱动也需要有,否则无法运行硬件。驱动程序可以直接编译在OS里面,这样会使其内核体积较大。因此一般是把驱动程序编译成一个Module,放在文件系统里面。用的时候下载,不用的时候卸载,使得OS很轻便。

​ 图形化界面GUI是可选的,可以归为应用程序一类。

​ 嵌入式系统不能自举,因此还需要一个交叉开发环境,对其进行开发。代码编写、编译都要在交叉开发环境中进行。

嵌入式系统开发步骤

​ 通过嵌入式程序组成,可以得出应该有如下任务:

  1. 交叉编译环境构建
  2. bootloader编写
  3. 内核编译加载
  4. 文件系统制作挂载
  5. 驱动模块编写编译、应用程序编写

​ 嵌入式硬件最小系统(核心系统):即离了这些不能运行了。对于硬件,即硬件组成图,去除掉输入输出部分;对于软件来说,就是上述 6 个任务。

z1sTOI.png

z1sjfg.png

​ 开发流程:

确定需求—选择硬件—选择系统—选择开发平台—编写代码—调试

嵌入式系统与PC对比

z1yanI.png

z1ybv9.png

嵌入式开发技术流程

z1cpd0.png

z167If.png

​ 最下面是开发板上的内存,可以理解为是一个Flash。最少要有以下三个:初始化引导代码,内核,根文件系统(包括驱动、库、应用程序...)。然后可以在根文件系统上挂载一些别的文件系统。

​ 那么bootloader是怎么弄到板子上去的呢?是通过一些专门的电路/设备/工具,如Jtag。一端连着板子,一端连着开发环境,比如笔记本电脑。当然也有别的手段,看说明书就好了。bootloader有两大功能,下载和加载。下载指将内核和根文件系统从环境中下载到开发板上,加载即启动内核和根文件系统。

​ 交叉编译环境(Cross-complier)主要由三部分组成:GCC编译器、二进制工具集(汇编器、连接器...)、标准C库。因此可以下载配置这三部分,手动构建,当然要注意版本兼容问题;也可以用别人已经编译好的直接解压。

​ Bootloader怎么写呢?首先下载uboot源码,然后看是否支持你这块开发板2410。如果支持,就配置一下就好了。如果不支持,那就需要移植了,一般板子厂商会做这个工作。配置完后,用交叉编译环境编译这个源码,就形成了针对你板子的可执行文件,再用jtag等工具将其下载到开发板上。

​ 接下来是内核。首先去网站上下载kernel的源码,然后根据硬件手册找好相应的补丁(patch)。如果找不到补丁,那就根据内核启动步骤,把需要的文件手动加进去。使得其适应你的板子。源码经过交叉编译环境生成kernel的镜像,这个即由bootloader通过一定的文件传输协议 负责下载。如通过网口,使用tftp协议等,从主机下载。

​ 根文件系统也有两种方式做。现成的有两个,一个是编译内核时自动生成的,一个是厂家提供的。但是使用现成的,有可能其中会缺少你自己开发的应用程序所用到的一些库。那么就需要把现有的根挂载到rootfs下,把缺少的库拷贝进去,再重新生成根文件系统镜像。也可以自己做,即自己准备常用应用程序集(Busybox,如cd、ls...)和系统文件(etc、dev...)等,然后用与内核版本兼容的工具打包成一个根文件系统镜像。

嵌入式操作系统概述

操作系统功能

​ 管理资源:进程管理、内存管理、文件管理、设备管理。操作系统承上启下,可以实现功能的复杂性和软件的可移植性。而嵌入式开发要实现多种多样的功能,就需要一个操作系统。嵌入式操作系统,就是指支持嵌入式系统工作的操作系统。

z1qx9H.png

z1LpjI.png

典型嵌入式操作系统介绍

uC/OS Ⅱ

​ 开源,只有几百行代码,推荐一看。设置64个优先级,对应64个任务,其中8个为系统任务。可剥夺实时多任务内核,调度分为两步:找出最高优先级任务(通过一个8行8列就绪表,1表示就绪,下标表示优先级),进行切换

linux

​ 不同语境下,"linux"有不同的含义,如linux内核、linux系统、linux开发套件、linux发行版等

z1XfN8.png

免责声明 中科大嵌入式linux课程笔记01,资源类别:文本, 浏览次数:35 次, 文件大小:-- , 由本站蜘蛛搜索收录2022-11-24 08:49:00。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://www.cnblogs.com/shuaikai/p/16916040.html