首页 > 系统相关 >中科大嵌入式linux课程笔记01

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

时间:2022-11-22 18:23:19浏览次数:74  
标签:01 中科大 文件系统 嵌入式 编译 开发 内核 linux

lesson1 嵌入式系统主要概念

课程简介

课程目录

z18kF0.png

z1tL26.png

参考书

z1tkB4.png

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

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

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

嵌入式的是“专用的”

概念&特点

z1ae4s.png

z1aY59.png

​ 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

标签:01,中科大,文件系统,嵌入式,编译,开发,内核,linux
From: https://www.cnblogs.com/shuaikai/p/16916040.html

相关文章

  • NOIP2015Day1T1-神奇的幻方
    1.神奇的幻方(magic.cpp/c/pas)【问题描述】幻方是一种很神奇的N∗N矩阵:它由数字1,2,3,……,N∗N构成,且每行、每列及两条对角线上的数字之和都相同。当N为奇数时......
  • Linux 安装Docker 一键脚本执行
    sudoyumremovedocker*sudoyuminstall-yyum-utils#配置docker的yum地址sudoyum-config-manager\--add-repo\http://mirrors.aliyun.com/docker-ce/linux/c......
  • 洛谷P4956 [COCI2017-2018#6] Davor
    [COCI2017-2018#6]Davor题面翻译在征服南极之后,Davor开始了一项新的挑战。下一步是在西伯利亚、格林兰、挪威的北极圈远征。他将在2018年12月31日开始出发,在这之......
  • VM501振弦读数模块开发测试套件
    开发板(demoboard)是用来进行嵌入式系统开发的电路板,包括中央处理器、存储器、输入设备、输出设备、数据通路/总线和外部资源接口等一系列硬件组件。开发板一般由嵌入式系统......
  • linux上部署皕杰报表小结
    最近需要在一个服务器上部署皕杰报表,连接的是mysql的库。步骤如下:1.首先先下载jdk,配置相应的Java环境。2.下载mysql,上官网下载相应的rpm包。3.安装好mysql后,使用dbeaver工具......
  • linux中已启动tomcat,网页无法访问
    使用./catalina.shrun提示以下错误:  在/home目录下并没有找到jre的相关目录解决:在/etc/profile中将jre_home=$JAVA_HOME然后source/etc/profile,就可以了......
  • [ NPM 01 ] js包管理工具 基础
    NodePackageManagernpm-v:showtheversion,ornpm--versionInthenodejsorjavaScriptworld,package.jsonisthemostimportantfile,itmanifestfil......
  • Linux程序编译过程详解
    大家肯定都知道计算机程序设计语言通常分为机器语言、汇编语言和高级语言三类。高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因......
  • Linux基础命令
    用户、组useraddrbcuserdel-rrbcusermod-grbc-Ghadoop,hiverbc用户附加组可以多个idrbcgroupaddsharegroupdelsharechown......
  • TXW8301入围 “中国芯” 芯火新锐产品评选
    11月17日​集成电路领域首个部省主办的国际化大会​具有风向标意义的专业化大会​2022世界集成电路大会在合肥拉开帷幕​近200多位领军人物、顶级专家,300余家行业企业齐聚合......