您的位置 首页 FPGA

嵌入式开发的相关问题解答

嵌入式开发的相关问题解答-嵌入式开发范围较广,根据系统处理器的处理能力以及资源分配情况,又有许多不同处理器。常说的有MCU、MPU等,两者有着不同的处理计算能力。以下内容主要来谈谈关于MCU的相关内容。

Q1:    嵌入式开发中程序下载后存储在什么地方?

嵌入式开发规模较广,依据体系处理器的处理才能以及资源分配情况,又有许多不同处理器。常说的有MCU、MPU等,两者有着不同的处理核算才能。以下内容主要来谈谈关于MCU的相关内容。

一般MCU 包括的存储空间有:片内Flash 与片内RAM,比较个人电脑(PC)来说,RAM 相当于内存,Flash 相当于硬盘。编译器会将一个程序分类为好几个部分,别离存储在MCU 不同的存储区,这些都是编译器的劳绩。编译器相当于 一个中心翻译者,将核算机编程言语翻译成机器内码,然后操控核算体系。

嵌入式开发的相关问题解答

阐明:

Program Size包括有:

·Code:代码段,寄存程序的代码部分

·RO-data:只读数据段,寄存程序中界说的常量

·RW-data:读写数据段,寄存初始化为非0值的全局变量

·ZI-data: 0数据段,寄存未初始化的全局变量及初始化为0的变量

注:在keil中编译完后,工程会生成一个.map的文件,该文件阐明晰各个函数占用的尺度和地址,在文件的最终几行阐明晰存储联系,查看此文件能够得到许多关于程序代码的重要信息。如下所示(该文件的最终几行信息):

嵌入式开发的相关问题解答

1)RO Size 包括了Code 及RO-data,表明程序占用Flash 空间的巨细;

2)RW Size 包括了RW-data 及ZI-data,表明运转时占用的RAM 的巨细;

3)ROM Size 包括了Code、RO Data 以及RW Data,表明程序烧写所占用的Flash 空间的巨细;

Q2:    程序在MCU中的运转进程?

程序烧写到了MCU后,程序是怎样运转呢?这儿以STM32为例来讨论一下。

(1)程序运转之前,需求有文件实体被烧录到STM32 的Flash 中,一般是bin 或许hex 文件,该被烧录文件又被称为可履行映像文件。如下图所示,可履行映像文件烧录到STM32 后的内存散布,它包括RO 段和RW 段两个部分:其间RO 段中保存了Code、RO-data 的数据,RW 段保存了RW-data 的数据,因为ZI-data 都是0,所以未包括在映像文件中。如下图所示:

嵌入式开发的相关问题解答

(2)STM32 在上电发动之后默许从Flash 发动,发动之后会将RW 段中的RW-data(初始化的全局变量)转移到RAM 中,但不会转移RO 段,即CPU 的履行代码从Flash 中读取,别的依据编译器给出的ZI 地址和巨细分配出ZI 段,并将这块RAM 区域清零。

阐明:其间动态内存堆为未运用的RAM 空间,运用程序在申请和开释的内存块都来自该空间。

一些全局变量则是寄存于RW 段和ZI 段中,RW 段寄存的是具有初始值的全局变量(而常量方法的全局变量则放置在RO 段中,是只读特点的),ZI 段寄存的体系未初始化的全局变量。

Q3:    嵌入式开发中是怎么完结程序下载(烧写)的?

(1)首要谈谈两个概念:烧写和固件。嵌入式体系需求预先将程序写入ROM/FLASH中,在发动时载入才能够运转这些程序,将现已生成的程序写入ROM/FLASH的进程叫做烧写。这样固化在存储介质上的文件叫固件(firmware)。烧写便是更新固件的进程。

(2)三种程序编烧写方法——ISP/ICP/IAP

ISP:In System Programing,在体系编程

只需上电,处理器无需作业,更新整个存储内容的方法,不需求处理器中心操作,不需求存在引导程序,归于硬件独自处理行为。

ICP:In Circuit Programing,在电路编程

能够编程写入最终用户代码,不需求从电路板上取下器材,现已编程的器材也能够用ISP方法擦除或许进行再次编程,需求一些必要的硬件逻辑或引导代码,例如运用JTAG下载。

IAP:In Applicating Programing,在运用编程

IAP从结构大将Flash存储器映射为多个存储体区域(引导区、运转区、下载存储区等等),第一个项目程序寄存在运用引导区,不履行正常的功用操作,而仅仅经过某种通讯管道接纳程序或数据,履行对其他部分代码的更新;其他代码才是真实的功用代码,寄存在程序存储区。当芯片上电后,首要运转运用引导区程序,查看是否需求对第二部分代码进行更新,存在更新则进行更新后履行,不然直接履行。所以引导区程序应该不能够IAP方法更新。总而言之,便是将存储体分区来进行嵌入体系运转调度和办理。

Q4:     常运用的程序烧写方法有哪些?

1、把体系作为一个存储区域进行烧写,相当于把单片机当成一个ROM芯片。

2、选用专门接口及专用的下载线将程序烧写到固件中。这时CPU除了履行单片机自身的指令之外,还能履行对存储器进行操作的特别指令,擦除、烧写和校验指令。先经过传输相应的指令给CPU履行(擦除、读入、烧写、校验等),这样完结烧写。现在遍及运用的JTAG仿真器也是这样,CPU能履行JTAG的特别指令,完结对固件的烧写操作。

3、 引导程序,即单片机中现已存在了一个烧写程序。发动单片机时首要运转该段程序,程序判别端口状况,辨认烧写的特别状况,就从某个端口读取数据,然后写入到存储单元中。如果是正常的状况,就转到用户的程序开端履行。需求触发硬件挑选用户程序形式仍是烧写形式。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/98237.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部