嵌入式基础:
三个基本要素:嵌入性、专用性、计算机系统。
嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”。
嵌入式系统的特点:
1、嵌入式系统低功耗、体积小,专用性强。
2、为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。
3、嵌入式系统的硬件和软件都必须高效率地设计,系统要精简。
4、对软件**质量要求很高。应该尽最大可能避免死机的情况发生。
5、嵌入式系统开发需要专门的开发工具和开发环境。
嵌入式系统组成:
嵌入式微处理器。
外围硬件设备。
嵌入式操作系统。
特定的应用程序。
linux优点:
1)开放源**,丰富的软件资源。
2)功能强大的内核,性能高效、稳定、多任务。
3)支持多种体系结构。
4)完善的网络通信、图形和文件管理机制。
5)支持大量的硬件设备,驱动丰富。
6)大小功能都可定制。
什么是嵌入式linux系统?
嵌入式linux定义:把linux内核移植到一个专用嵌入式设备的cpu和主板上。
嵌入式系统:
硬件一般有很大的局限性,或者处理器频率较低,或者存储空间很小,或者没有键盘、鼠标设备。这样的硬件平台无法胜任(或者不便于)庞大的linux 系统开发任务。因此,开发者提出了交叉开发环境模型。
处理器的工作模式:
进入thumb状态:当操作数寄存器的状态位(位[0])为1时,执行bx指令。
进入arm状态:当操作数寄存器的状态位(位[0])为0时,执行bx指令。
存储器系统设计:在该系统中,设计了3种存储器接口电路,nor flash接口、nand flash接口和sdram接口电路。引导程序既可存储在nor flash中,也可存储在nand flash中。
而sdram中存储的是执行中的程序和产生的数据。存储在nor flash中的程序可直接执行,与在sdram执行相比速度较慢。存储在nand flash中的程序,需要拷贝到ram中去执行。
linux命令:login logout进入和退出系统。
交叉编译:安装交叉编译工具链、设置环境变量、使用arm-linux-gcc代替gcc进行交叉编译、make cc=arm-linux-gcc
gcc程序编译四阶段:
预处理(pre-processing) 、编译(compiling) 、汇编(assembling) 、链接(linking)
预处理->编译->汇编->链接
预处理:将源**中指定的头文件包含进来等;
编译:将源**翻译成汇编**;
汇编:生成扩展名为。o的目标文件;
链接:将所有扩展名为。o的目标文件链接生在可执行文件;
嵌入式系统开发为什么要采用交叉编译的方式?
由于宿主机和目标机的体系结构不同,在宿主机x86平台上可以运行的程序在目标机arm平台上无法运行,因此嵌入式软件开发采用交叉编译方式在一个平台上生成可以在另一个平台上执行的**。编译的最主要的工作就是将程序转化成运行该程序的cpu所能识别的机器**。
进行交叉编译的主机称为宿主机,也就是普通的通用计算机,宿主机系统资源丰富,使用方便地集成开发环境和调试工具等。
程序实际运行的环境称为目标机,也就是嵌入式系统环境。
bootloader 的启动过程可分为单阶段(single stage)和多阶段(multi-stage)两种。
通常多阶段的 bootloader 能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的 bootloader 大多都是两阶段的启动过程,也即启动过程可以分为stage 1和 stage 2 两部分。
stage1通常用汇编语言实现,完成初始化硬件,为stage2准备内存空间,将stage2复制到内存中,设置堆栈,然后跳转到stage2的程序入口。
stage2通常用c语言完成,使得程序有更好的可读性与可移植性。主要任务包括:初始化本阶段要用到的硬件设备,检测内存,将操作系统的内核与根文件系统从flash读到ram中,设置内核启动参数,最后调用内核。
bootloader 都包含两种不同的操作模式:
启动加载”模式、 “**”模式。
内核:是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
linux内核由5个主要的子系统组成:
进程调度(sched) 、内存管理(mm) 、虚拟文件系统(vfs)
网络接口(net) 、进程间通信(ipc)
为什么重新编译内核:linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核增加了许多新的特性。
如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。
linux的文件系统。
文件系统是操作系统的一部分
文件系统是对一个存储设备上的数据和元数据进行组织的机制。
元数据:描述数据及其环境的数据,即数据的数据。
linux下的文件系统分为三部分:
上层的系统调用(open、read、write等);
虚拟文件系统(virtual filesystem switch,vfs);
挂载到vfs的各种实际的文件系统。
linux根文件系统。
根文件系统(root filesystem)是存放运行、维护系统所必须的各种工具软件、库文件、脚本、配置文件和其他特殊文件的地方。
linux的文件系统是一个整体(没有盘符概念),组织到一个树状目录结构之中,目录是树的枝干,顶端是一个单独的根目录(“/
嵌入式linux的根文件系统:实用程序(/bin目录)、设备文件(/dev目录)、库文件(/lib)、配置文件(/etc)
嵌入式操作系统:linux、uc/os、windows ce、vxworks、qnx
设备文件:linux设备驱动程序,抽象了对硬件的处理,将所有外部设备看成是一类特殊文件,称之为“设备文件”。
每个设备文件对应有两个设备号:主设备号和次设备号。
1 主设备号:标识该设备的种类,也标识了该设备所使用的驱动程序;
2 次设备号:标识使用同一设备驱动程序的不同硬件设备。
嵌入式作业
电力设备测控系统中的总线通讯协议实现。程俊 200910302013 一 程序实现的功能 嵌入式系统作为测控系统主机,依次每隔30秒获取设备数据,发送给各个传感器。1 程序实现是通个定义的一个数组,然后数组中分别放入 起始标记aa 设备类型 设备编号 数据发送请求55 校验位这里采用求和校验,而将第...
嵌入式作业
专业 电子信息工程班级 电信10 1 任课教师 姓名 学号成绩。题目 查阅相关资料,你认为选用哪一种硬件 芯片 和软件比较适合本专业的要求?为什么?答 个人觉得选用三星的6410芯片更适合本专业的要求,6410对比与2440不会更容易被淘汰,而且现在6410有很多开发板可以供我们自学,比如飞凌的ok...
嵌入式作业
include 基本系统数据类型。include 提供socket函数及数据结构。include 标准输入输出。include 标准库。include 提供错误号errno的定义,用于错误处理。include 字符串函数定义。include read函数 write函数和getpid函数等头文件。i...