lesson1 嵌入式系统主要概念
课程简介
课程目录
参考书
嵌入式系统结构和开发流程
概念、特点、组成、硬件、软件、开发
嵌入式系统首先是一个计算机系统,后者有的技术它也有。只不过专用的,可靠性、体积、成本、功耗要求更严格。面向用户、面向产品、面向应用;一定要与具体的应用结合才有生命力,才更有优势。(因此其cpu不是通用的)
嵌入式的是“专用的”
概念&特点
CPU、RAM、Flash可以做成三个芯片,成一个主板。也可以直接把三个部分做成一块芯片,如51单片机,效率、可靠性更高。
系统结构
嵌入式系统不一定有ROM。Flash如果是并行的(naoFlash),则可以直接把bios等烧写到flash,直接让flash上运行。入口地址就指向0x0000
可以认为,ARM是MPU,单片机是MCU
开发流程
嵌入式系统开发第一件事是:确定处理器。处理器性能越强,功耗越大,温度越高,因此就越不稳定,同时寿命也会减少。由于要散热,体积也会变大。
简单嵌入式应用
复杂嵌入式系统
初始化引导代码即BootLoaer【相当于BIOS,但以后不这样叫了】。CPU上电之后,由初始化引导代码对硬件进行一定的初始化。
Bootloader是一上电就要运行的,因此一般放在ROM里面,操作系统的代码一般放在串行Flash上面(不能直接运行),由初始化引导程序负责拷贝到可以直接运行的地儿,如RAM上。而如果用的并行Flash(能直接运行),则操作系统和初始化引导程序都可以放在flash里面。
应用程序要放在文件系统里面,因为需要有路径。
设备驱动也需要有,否则无法运行硬件。驱动程序可以直接编译在OS里面,这样会使其内核体积较大。因此一般是把驱动程序编译成一个Module,放在文件系统里面。用的时候下载,不用的时候卸载,使得OS很轻便。
图形化界面GUI是可选的,可以归为应用程序一类。
嵌入式系统不能自举,因此还需要一个交叉开发环境,对其进行开发。代码编写、编译都要在交叉开发环境中进行。
嵌入式系统开发步骤
通过嵌入式程序组成,可以得出应该有如下任务:
- 交叉编译环境构建
- bootloader编写
- 内核编译加载
- 文件系统制作挂载
- 驱动模块编写编译、应用程序编写
嵌入式硬件最小系统(核心系统):即离了这些不能运行了。对于硬件,即硬件组成图,去除掉输入输出部分;对于软件来说,就是上述 6 个任务。
开发流程:
确定需求—选择硬件—选择系统—选择开发平台—编写代码—调试
嵌入式系统与PC对比
嵌入式开发技术流程
最下面是开发板上的内存,可以理解为是一个Flash。最少要有以下三个:初始化引导代码,内核,根文件系统(包括驱动、库、应用程序...)。然后可以在根文件系统上挂载一些别的文件系统。
那么bootloader是怎么弄到板子上去的呢?是通过一些专门的电路/设备/工具,如Jtag。一端连着板子,一端连着开发环境,比如笔记本电脑。当然也有别的手段,看说明书就好了。bootloader有两大功能,下载和加载。下载指将内核和根文件系统从环境中下载到开发板上,加载即启动内核和根文件系统。
交叉编译环境(Cross-complier)主要由三部分组成:GCC编译器、二进制工具集(汇编器、连接器...)、标准C库。因此可以下载配置这三部分,手动构建,当然要注意版本兼容问题;也可以用别人已经编译好的直接解压。
Bootloader怎么写呢?首先下载uboot源码,然后看是否支持你这块开发板2410。如果支持,就配置一下就好了。如果不支持,那就需要移植了,一般板子厂商会做这个工作。配置完后,用交叉编译环境编译这个源码,就形成了针对你板子的可执行文件,再用jtag等工具将其下载到开发板上。
接下来是内核。首先去网站上下载kernel的源码,然后根据硬件手册找好相应的补丁(patch)。如果找不到补丁,那就根据内核启动步骤,把需要的文件手动加进去。使得其适应你的板子。源码经过交叉编译环境生成kernel的镜像,这个即由bootloader通过一定的文件传输协议 负责下载。如通过网口,使用tftp协议等,从主机下载。
根文件系统也有两种方式做。现成的有两个,一个是编译内核时自动生成的,一个是厂家提供的。但是使用现成的,有可能其中会缺少你自己开发的应用程序所用到的一些库。那么就需要把现有的根挂载到rootfs下,把缺少的库拷贝进去,再重新生成根文件系统镜像。也可以自己做,即自己准备常用应用程序集(Busybox,如cd、ls...)和系统文件(etc、dev...)等,然后用与内核版本兼容的工具打包成一个根文件系统镜像。
嵌入式操作系统概述
操作系统功能
管理资源:进程管理、内存管理、文件管理、设备管理。操作系统承上启下,可以实现功能的复杂性和软件的可移植性。而嵌入式开发要实现多种多样的功能,就需要一个操作系统。嵌入式操作系统,就是指支持嵌入式系统工作的操作系统。
典型嵌入式操作系统介绍
uC/OS Ⅱ
开源,只有几百行代码,推荐一看。设置64个优先级,对应64个任务,其中8个为系统任务。可剥夺实时多任务内核,调度分为两步:找出最高优先级任务(通过一个8行8列就绪表,1表示就绪,下标表示优先级),进行切换
linux
不同语境下,"linux"有不同的含义,如linux内核、linux系统、linux开发套件、linux发行版等
标签:01,中科大,文件系统,嵌入式,编译,开发,内核,linux From: https://www.cnblogs.com/shuaikai/p/16916040.html