设计与开发

单片机 bin文件 单片机内部基本原理 bin文件如何跑起来 编译器做了什么?

小编 2024-10-09 设计与开发 23 0

单片机内部基本原理 bin文件如何跑起来 编译器做了什么?

无论是单片机还是cpu内部主要有三种部件 ALU 控制器 寄存器。

这个要从编译器开始讲起,编译器会给你编写的软件增加一个头部,无论是MDK还是IAR等等,这个头部是做了什么工作那?头部主要利用单片机寄存器上电后从FLASH将全局变量以及全局未初始化变量搬移倒RAM,增加堆栈 复位 中断向量表 才开始从flash读取你编写的程序,因为编译器已经把程序整个编码为机器码放在flash,有不太了解机器码的可以再去了解,机器码主要是运算加减搬移的那些操作,只不过单片机它就认识了。

单片机内部的控制器读取flash的机器码,通过内部R0-R15做数据中转和RAM交换数据,通过ALU做运算,ALU非常擅长做逻辑的运算,寄存器是存放需要暂存处理的数据,使得它跑了起来。

编译器----编译器的程序----bin文件----机器码----运行

玩了这么多年单片机,hex文件和bin文件的区别你知道吗?

单片机程序写好之后,我们都要把程序下载到单片机的内存中,单片机才会按照程序员的逻辑执行命令实现功能。之前也讲过下载单片机的几种方式,比如ISP下载,JTAG下载,下载文件的格式最常见的是hex文件,这个格式大家都是知道的,还有一种bin文件是单片机的下载文件。下面介绍这两种格式的区别。

HEX文件和BIN文件是我们经常碰到的2种文件格式。下面简单介绍一下这2种文件格式的区别:

1. hex文件包含地址信息。 在用ISP方式烧写程序时,我们都有这样的经验:1)选择单片机型号;2)选择串口号;3)设置波特率(或者默认);4)选择下载的文件;5)点击下载按钮下载。如下图所示。

经过这几步后,程序下载工作就完成了,在以上的步骤中我们并没有选择要把程序下载到单片机的哪块内存中,即不需要设置地址。因为HEX文件内部的信息已经包括了地址。而烧写BIN文件的时候,用户是一定需要指定地址信息的。单片机多下载hex文件。

2. BIN文件格式只包括了数据本身,没有包含地址

bin文件本身只是数据,没有包含地址信息,所以在下载bin文件时需要选择内存的起始地址和终止地址,即要把bin文件下载到指定的内存空间。通常需要指定程序内存地址的芯片为ARM芯片和DSP芯片。

3、HEX文件和BIN文件大小不一样

对于bin文件,通过右键属性查看到的文件的大小就是数据的实际大小。而对HEX文件而言,你看到的文件大小并不是实际的数据的大小。一是因为HEX文件是用ASCII来表示数据,二是因为HEX文件本身还包括别的附加信息。

hex文件的大小该怎么看呢?之前我推送过查看方法,忘记的朋友可以点下面的链接查看:

你写的单片机程序有多大,你知道吗? (点击查看 )

单片机的程序下载方式有哪些?(点击查看)

本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。

公众号:micropoint8。嵌入式学习网振兴网:www.picmcu.com

相关问答

如何能将 单片机 BIN文件 转化成可读的文本文件?

BIN文件是以二进制代码形式保存的文件。要转换成可读的文件只能转换成汇编程序。用反汇编软件,如伟福,就可以进行反汇编,变成汇编程序,就可读了。但不懂汇编...

51 单片机 编译后生成的可执行 文件 的后缀是?

51单片机使用的编译器是KeilC51,编译后生成的可执行文件的后缀名是.hex或.bin。.hex文件是IntelHEX格式,它包含了用于将程序烧录到51单片机非易失性存储器(...

8051 单片机 能直接识别的语言是?

8051单片机能够直接识别的语言是机器码,也就是二进制代码,文件是*.bin。51单片机最常用的编程语言是汇编语言和keilC语言,但软件对上述语言进程编译之后,生...

keil编译生成的机器代码 文件 后缀?

在使用Keil编译器进行编译后,生成的机器代码文件通常具有以下几种常见的后缀名:1.".hex":这是IntelHEX格式的机器代码文件,其中包含以十六进制表示的机器...

用keil5编写代码用连接 单片机 吗?

是的,KeiluVision5(通常简称为Keil)是一个流行的嵌入式开发环境,用于编写、编译和调试嵌入式系统的程序。它支持多种微控制器(MCU)和微处理器架构,包括但...

买的 单片机 如何能使用?

使用51单片机需要达到以下基本条件:1、至少要搭建一个最小系统;2、你需要编制一个51的控制程序;3、你需要将程序编译连接成HEX或BIN格式的代码并下载或烧录...

机器人编程用哪种编程语言?

比如Staubli机器人的编程语言叫VAL3,ABB的叫作RAPID。本质是用底层语言PCB过的一些功能模块,便利客户用于和调用。实际工作中,有的还是必要用单片...

51虚拟机怎么导入应用?

要在51单片机的虚拟机中导入应用程序,您需要按照以下步骤进行操作:1.首先,将您的应用程序编译成HEX文件。您可以使用KeilC51编译器等工具来编译您的程序。...

如何将avr程序放在bootloader区里?

把bootloader和Flash都转换为BIN文件格式,然后把Bootloader放在flash文件后面第120K开始的位置。然后把这合并的文件少写进单片机。把bootloader和Flash都转...

哪位看官,求解!!金山语言翻译费用,语言翻译费用贵不贵?

汇编语言需要解释器翻译成机器语言,java语言需要编译成class文件,所以说不上是脚本语言。windows自带的notepad是不能够运行命令的。只有带来宏或者...

猜你喜欢