单片机内部基本原理 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
相关问答
单片机 中的HEX和 BIN 分别是什么 文件 ?-ZOL问答在单片机开发过程中,常用的文件格式包括HEX和BIN。HEX文件通常由KEIL等开发工具生成,而BIN文件则可以通过其他软件如图像转换工具生成。这些文件都可以用于烧...
怎么编辑 单片机 的 BIN文件 ,将其转化为可修改的汇编语言?-ZOL问答编辑单片机的BIN文件并转化为可修改的汇编语言,首先你需要一个反汇编工具,比如KeiluVision或者IAREmbeddedWorkbench。打开这些软件后,导入你的BIN文件,它会...
如何能将 单片机 的 BIN文件 转化成可读的文本文件?BIN文件是以二进制代码形式保存的文件。要转换成可读的文件只能转换成汇编程序。用反汇编软件,如伟福,就可以进行反汇编,变成汇编程序,就可读了。但不懂汇编...
HEX文件和 BIN文件 格式的区别?bin文件是二进制文件,所有数据就是写入到单片机中的实际数据。HEX文件是十六进制文件,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码...
8051 单片机 能直接识别的语言是?8051单片机能够直接识别的语言是机器码,也就是二进制代码,文件是*.bin。51单片机最常用的编程语言是汇编语言和keilC语言,但软件对上述语言进程编译之后,生...
iar如何把程序全部烧录 单片机 ?你好,要将程序全部烧录到单片机中,需要使用一个烧录器。以下是在IAR中使用烧录器进行程序烧录的步骤:1.确认单片机型号并选择正确的烧录器。在IAR中,可以通...
【新手学习 单片机 的疑问,关于dptr和keil的memoryC:0x0000与D...[最佳回答]那么dptr的内容是怎么来的呢,是固化在rom中的吗,用它查表,可以不连续随便查吗,比如ASCIIAB:DB'4123068796ABCDEF',具体是怎么操作的呢,能详细说....
单片机 系统中,串口下载程序,软件是如何下载进去的?STC单片机,装好USB转TTL或USB转串口的驱动,打开下载软件选择驱动安装后虚拟出来的串口(有的软件会自动扫描),选择正确的单片机型号,选择合适的波特率(默...
cpu执行程序是烧写过程吗?CPU执行程序不是烧写过程。烧写是将程序编译好形成HEX或BIN文件后,写进单片机芯片的过程就叫烧写CPU是通过指令协调控制总线,数据总线,地址总线工作的计算过...
单片机 编程语言?单片机编程用c语言开发,因为单片机需要非常底层开发语言,用c语言开发效率非常高,而且c语言可以非常灵活,对于控制硬件非常合适。c语言最大的好处是可以利用...