单片机,嵌入式未处理器,Makefile,C程序内存管理

一.           嵌入式微控制器和嵌入式微处理器

嵌入式系统的种类繁多,按照系统硬件的核心处理器来说可以分成嵌入式微控制器嵌入式微处理器

嵌入式微控制器:嵌入式微控制器也是传统意义上的单片机,它可以说是目前嵌入式系统的前身。单片机就是把一个计算机的主要功能集成到了一个芯片上,简单说即是一个芯片即是一个计算机。它的特点是体积小、机构简单、便于开发以及价格经济。

嵌入式微处理器:单片机的发展时间较早,处理能力很低,只能用在一些相对简单的控制领域。嵌入式微处理器是近几年随着大规模集成电路发展同步发展起来的。与单片机相比,嵌入式微处理器的处理能力更强。目前主流的嵌入式微处理器都是32位的,而单片机多是8位和16位。

二.           操作系统由什么组成

按照软件的结构划分,操作系统可以分成内核、驱动程序和程序库。内核是操作系统的核心,也是整个系统软件的核心。一般来说,内核从抽象的层面提供最基本的功能,通常代码短小精炼。驱动程序是计算机系统必不可少的一类系统软件,系统和驱动程序打交道而不会直接访问硬件,硬件的具体细节由驱动程序完成,是软硬件的接口。程序库是操作系统向用户提供的程序接口。

三.           ARM处理器

ARM既是一种嵌入式处理器体系结构的缩写,也是一家公司的名字。

ARM是英文Advanced RISC Machines 的缩写,中文译为高性能RISC机器。从名称可以看出,ARM是一种基于RISC架构的高性能处理器。实际上ARM也是它的设计公司的名字。与其他的嵌入式芯片不同,ARM是由ARM公司设计的一种体系结构,主要用于出售技术授权,并不生产芯片。

ARM开发有标准的开发环境ARM DevelopmentSuit简称ADS

四.            什么是Makefile(工程文件管理方法GNU Makefile

Makefile 是一个文本文件,是GNUmake 程序在执行的时候默认读取的配置文件。Makefile有强大的功能,它记录了文件之间的依赖关系,通过对比目标文件和依赖文件的时间戳,决定是否需要执行相应的命令;同时,Makefile还可以定义变量,接收用户传递的参数变量,通过这些元素的相互配合,省去了繁杂的编译命令,不仅节省时间,也减小了出错的概率。

五.           C程序内存管理

 一个计算机应用程序在内存中可以分成两个部分:存放代码的代码段和存放数据的数据段。代码段存放用户编写的代码;数据段可以分堆和栈

1.      栈

栈(stack)是一个由编译器分配释放的区域,用来存放函数的参数、局部变量等。操作方式类似于数据结构教材里的栈。当调用函数时,被调用函数的参数和返回值被存储到当前程序的栈区,之后被调用函数再为自身的自动变量和临时变量在栈区上分配空间。当函数调用返回时,在栈区内的参数返回值、自动变量和临时变量等会被释放。这就是为什么C语言函数参数如果不是指针的话,被修改的参数结果用户无法得到的原因。

函数的调用和栈的使用方式保证了不同函数内部定义相同名字的变量不会混淆。

 

2. 堆

堆(heap)一般位于bss段和栈之间,用来动态分配内存。这段区域由程序员管理,程序员利用操作系统提供的分配和释放函数使用堆区的内存。如果程序员在堆上分配了一段内存,却没有释放,在目前主流的操作系统上,退出时会被操作系统释放。但是这并不是一个好的习惯,因为堆区的空间不是无限的,过多地分配会导致堆内存溢出,程序异常甚至崩溃。

 

程序的内存分成若干区域基于以下考虑:

n  程序运行的时候多数是按照顺序运行的,虽然有跳转和循环,数据需要多次访问,开辟单独的数据空间方便数据访问和分类

n  临时数据放在栈区,生命周期短

n  全局数据和静态数据在整个程序执行过程中都可能需要访问,因此单独存储管理

n  用户需要自行分配的内存安排在堆区,便于用户管理内存以及操作系统监控

你可能感兴趣的:(Linux)