单片机hex读取工具_单片机读取hex后全为ff - CSDN
  • C8051读取hex文件

    2018-08-10 16:46:02
    如何从单片机中读出hex文件  注意:本教程只在单片机程序未加密的情况下验证有效,其他未知! 网址:https://wenku.baidu.com/view/00320a5b8bd63186bdebbc90.html  以C8051F020为例:  1.下载C8051F编程器...

                                        如何从单片机中读出hex文件 

    注意:本教程只在单片机程序未加密的情况下验证有效,其他未知!

    网址:https://wenku.baidu.com/view/00320a5b8bd63186bdebbc90.html


     以C8051F020为例: 
    1.下载C8051F编程器(可百度自行搜索)。通过搜索网络上有几个版本,比如新华龙电子的V6.00版本,以及鸿翼电子的V1.1版本与V2.1版本,我用的时候用的“鸿翼电子C8051F编程器V1.1”,因为新华龙电子的V6.00版本总是出现找不到设备的错误,鸿翼电子V2.1版本读出操作失败,各编程器界面如下图所示。

    C8051F单片机hex文件读取:

    具体的操作步骤如下:
    1. 将仿真器与目标板以及计算机进行连接。打开下载的软件,选择编程接口形式,我用的JTAG口,所以选择JTAG,然后点击“连接目标芯片”

    2. 连接成功后,会出现目标单片机的型号,如图所示

    3. 连接成功后点击“读出”,等待片刻会跳出窗口,选择保存位置以及名字后,就完成了Hex文件的读取。

    (1)出现正在读出…界面

    (2)出现保存窗口

    (4)保存成功后,出现“读出程序已保存至myhex.hex”。

    4. 至此完成hex文件的读取

    5. 若想直接将hex文件烧写到单片机内,连接成功后,选择“打开编辑文件”,选择你要烧写的文件,然后选择“写入”即可。

    6. 为了验证读出程序的有效性,将单片机程序擦除后,将读出的hex文件烧写入其中,经验证有效。

    展开全文
  • hex文件解析

    2016-11-13 15:37:36
    Keil开发环境编程时对源程序进行编译链接后都可以成一个可执行文件即hex文件...1、 当hex文件的大小大于单片机的flash时烧录工具还是可以把hex文件烧写到flash中呢; 2、 单片机运行的是二进制指令和数据,那么hex

    Keil开发环境编程时对源程序进行编译链接后都可以成一个可执行文件即hex文件,但是有不完全是一个可执行文件。然后可以通过烧录工具烧写到对应的单片机的flash,当然也还有其他方法可以进行烧录。大家在编程时是否对生成的hex文件有这样的疑问:

    1、 hex文件的大小大于单片机的flash时烧录工具还是可以把hex文件烧写到flash中呢;

    2、 单片机运行的是二进制指令和数据,那么hex文件的内容是否都是二进制数呢;

    3、 烧录工具是根据什么把程序指令和数据烧写到flash固定的位置呢。

    我们就带着这三个疑问深入学习hex文件,想深入理解hex文件必须从内容入手。查看hex文件的很简单,用文本随便打开一个文件都可以看到hex文件的内容。例如:

    :020000040800F2

    :1000000080040020690100087101000873010008E4

    :1000100000000000000000000000000000000000E0

    :100020000000000000000000000000007501000852

    :1000300000000000000000007701000879010008BE

    ``````````

    ``````````

    ``````````

    :1005E0002001000800000000006CDC020000000098

    :1005F00000000000010203040607080900000000D3

    :04000005080000C12E

    :00000001FF

    上面就是一个hex文件内容首尾的一部分数据,从内容中很明显可以看出这不是二进制数据。Hex文件是用ASCII来表示二进制的数值十六进制数组成的指令或者数据,每一行就是一个hex记录。由于单片机执行的只能是二进制指令和数据,而hex文件是十六进制数,所以烧录器的工作必然有一个进制转换机制。具体机制怎么实现暂时可以不管,知道是烧录器处理的就行了。从这里可以找出第二问题的答案。

     

    hex文件的每一行数据记录都是以行为单位,每行从“:”(0x3a)开始,这从文件内容可以看出。以回车键结束(0x0d0x0a),每行以换行结束。每行的数据都是由两个字符表示一个16进制字节,例如第一行,:020000040800F2中的“02”表示数为0x02,“F2”就表示为0xF2。如果数据位地址时,地址高位在前低位在后。

    以上面内容的第二行数据为例,进行详细解析:

    :1000000080040020690100087101000873010008E4

    1、“:”表示一行的开始;

    2、12个字符10,即“0x10”表示本行包含的数据长度为16个;

    3、3456个字符,固定这4位表示地址,即“0000”表示数据存储的起始地址,表示在0x0000地址开始存放本行包含的16个数据。

    4、78个字符,固定这2位表示本行包含数据数据的类型,即“00”表示本行包含的数据为实际烧写的数据。而数据的类型有如下几种:

    00”表示实际数据记录

    01”表示文件结束记录

    02”表示扩展段地址记录

    04”表示扩展线性地址记录

    5、由前两个字符“10”可知本行的数据长度位16个字节,所有往后的32个字符就是本行包含的数据,每两个字符表示一个字节数据,总共有16个字节数据。跟最前两个字符决定的长度一致。但是这个数据的长度不是固定的,例如最后一行00000001FF,这行包含的数据长度0,没有数据。

    6、最后两个字符为本行的校验码。

    通过上面的几点分析可以总结出hex文件的每一行的格式:

    <0x3a>[数据长度1Byte][数据地址2Byte][数据类型1Byte][数据nByte]

    [验证码1Byte]<0x0d><0x0a>


    校验的算法

    计算从(0x3a)以后的所有各字节的和模256的余。即各字节二进制算术和,不计超过256的溢出值,然后用0x100减去这个算数累加和,得出的值就是此行校验码。举一个简单的例子,如第一行020000040800F2

    0x02+0x00+0x00+0x00+0x04+0x08+0x00 = 0x0E

    0x100 – 0x0E = 0xF2.


    展开全文
  • 初学STM32时,是通过串口1把Hex文件下载进STM32的,需要一个串口模块,而且还要设置BOOT0和BOOT1电平,然后通过FlyMcu软件进行下载,这也是一种不错的方法,这里我要介绍的是使用JLink调试器和Keil MDK-ARM来下载Hex...

    前言

    初学STM32时,是通过串口1把Hex文件下载进STM32的,需要一个串口模块,而且还要设置BOOT0和BOOT1电平,然后通过FlyMcu软件进行下载,这也是一种不错的方法,这里我要介绍的是使用JLink调试器和Keil MDK-ARM来下载Hex文件,无需源代码,只需要一个调试器。

    所需要的工具和软件

    • Hex文件,如Demo_STM32.hex
    • Keil软件,v4或v5版本,如Keil v5.16a
    • ARM调试器,Jlink或ST-Link,如Jlink v9
    • STM32开发板,如STM32F103RET6

    1.准备一个完整的工程

    准备一个完整的工程,注意,这个工程的芯片型号、开发板的芯片型号、Hex文件对应的芯片型号,这三者的芯片型号要保持一致,否则会出现不能正确运行的问题。如都是STM32F103RET6。

    2.确定Jlink已经检测到芯片

    如图,先选择调试器类型,然后点击 Setting,如果连接上芯片,会在右侧显示芯片的ID号。

    img_d4bc2bf620e881773ca39bf3b8cdd4b4.jpe

    3.确定这个工程的Hex文件的输出路径

    打开工程配置界面中的,Output选项,可以看出我这个工程输出文件存放的路径是在OBJ目录下,名称是NiceDay

    Keil-Download-hex1.jpg

    打开OBJ目录可以看到这个工程生成的hex文件名称为NiceDay.hex

    img_0d3c9a4ddf18621b20d0658307b8a117.jpe

    4.把要下载的Hex文件放到OBJ目录下

    img_9de4baa4de931da6687d336ddecd6108.jpe

    5.把Output界面的NiceDay改为Demo_STM32.hex

    注意末尾的扩展名.hex不要少。

    img_607e67d7bc89641dca535751c7ce64e3.jpe

    6.不要编译工程,直接点击下载按钮。

    在输出窗口可以看到下载完成

    img_241ee8d1e629db48804c06953c89fa6a.jpe

    如果程序没有运行,可以在下载界面查看是否勾选了下载完成后复位运行。

    img_b44eeac58925a585afba7c51a5f5a9f3.jpe


    历史精选文章:


    欢迎大家关注我的个人博客

    或微信扫码关注我的公众号

    img_954cd7422a2def047d3f713ee25a28c1.jpe

    展开全文
  • 1 // verilog只支持readmemh,这个程序可以解析单片机的16bit Intel—HEX格式的文件 2 // 并将数据直接写入ROM中,实现软件自动烧写MCU软核内部ram和rom。 3 // modelsim版本要大于5.5 4 5 module Hex2Rom; 6 ...

    根据网上程序,进行了一些改善。

     1 // verilog只支持readmemh,这个程序可以解析单片机的16bit Intel—HEX格式的文件
    2 // 并将数据直接写入ROM中,实现软件自动烧写MCU软核内部ram和rom。
    3 // modelsim版本要大于5.5
    4
    5 module Hex2Rom;
    6
    7 parameter filename="test.hex";
    8
    9 reg[ 7:0] Row_1st_char;
    10 reg[15:0] row_data_basic_addr;
    11 reg[ 7:0] row_data_len;
    12 reg[ 7:0] row_data;
    13 reg[ 7:0] row_check_sum;
    14
    15 reg[500*8:1] noused;
    16 reg[ 640:1] errstr;
    17 //
    18 reg[7:0] ram[0:2047];
    19
    20 integer i,fd,code;
    21
    22 initial begin
    23 fd=$fopen(filename,"r");
    24 if(fd==0)
    25 begin
    26 $display("ERROR: File Cann't Be Opened!");
    27 $fclose(fd);
    28 $stop; // stop when no such file
    29 end
    30 forever begin : continue
    31
    32 if($ferror(fd,errstr))
    33 begin
    34 $display("%s",errstr);
    35 $stop;
    36 end
    37
    38 Row_1st_char=$fgetc(fd);
    39 if(Row_1st_char=="\n") //遇到换行符,读取下一行首字符
    40 Row_1st_char=$fgetc(fd);
    41 if(Row_1st_char!=":") // every line begin with ":" int the IntelHex form
    42 begin
    43 code=$fgets(noused,fd);
    44 $display("ERROR: Row 1st char isn't [:]");
    45 disable continue; //若第1个字符不为":",Hex文件结束
    46 end
    47
    48 code=$fscanf(fd,"%2x",row_data_len); // 第2,3个hex数代表数据长度
    49 if(row_data_len==0)
    50 begin
    51 $display("Current Row Data Length ==0, Rom initial finish!");
    52 $stop; // stop when no data
    53 end
    54
    55 row_check_sum=row_data_len;
    56
    57 code=$fscanf(fd,"%4x",row_data_basic_addr); // 第4,5,6,7个hex数代表数据的存放首地址
    58
    59 row_check_sum=row_check_sum+row_data_basic_addr;
    60 row_check_sum=row_check_sum+(row_data_basic_addr>>8); // unsigned row_check_sum
    61
    62 code=$fscanf(fd,"%2x",row_data); // data type // 第8,9个hex数代表数据类型
    63
    64 row_check_sum=row_check_sum+row_data;
    65
    66 for(i=0;i<row_data_len;i=i+1)
    67 begin
    68 code=$fscanf(fd,"%2x",row_data);
    69 row_check_sum=row_check_sum+row_data;
    70 ram[row_data_basic_addr]=row_data; // ram read data from file
    71 row_data_basic_addr=row_data_basic_addr+1;
    72 end
    73
    74 code=$fscanf(fd,"%2x\n",row_data); // check data // 由于MODELSIM版本问题,程序在6.1版时有些问题,改动如下,可兼容:code=$fscanf(fd,"%2x\n",row_data);
    75 row_check_sum=row_check_sum+row_data;
    76 if(row_check_sum!=0)
    77 begin
    78 $display("error:checksum is not zero!");
    79 $stop;
    80 end
    81 end
    82 end
    83
    84 initial
    85 begin
    86 $monitor($time,"ram[%d] = %h",row_data_basic_addr,row_data);
    87 end
    88
    89 endmodule


    下面是带Debug信息的

      1 // verilog只支持readmemh,在设计mcu时,这个程序可以将编译后Intel HEX格式的*.hex文件直接读入ROM中,
    2 // modelsim版本要大于5.5
    3
    4
    5 module Hex2Rom;
    6
    7 parameter filename="test.hex";
    8
    9 reg[ 7:0] char_1st;
    10 reg[15:0] address; // Rom绝对地址
    11 reg[ 7:0] len; // 数据长度
    12 reg[ 7:0] dat;
    13 reg[ 7:0] sum; // intel hex file 检校和
    14
    15 reg[500*8:1] noused;
    16 reg[ 640:1] errstr;
    17 //
    18 reg[7:0] ram[0:2047];
    19
    20 integer i,fp,code;
    21
    22 initial
    23 begin
    24 char_1st=0;
    25 address =0;
    26 len =0;
    27 dat =0;
    28 sum =0;
    29
    30 fp=$fopen(filename,"r");
    31
    32 if(fp==0)
    33 begin
    34 $display($time,"ERROR: Hex File %s cann't be open!",filename);
    35 $stop; // stop when no such file
    36 end
    37 else
    38 begin
    39 $display($time,"Message: Hex File %s open succese!",filename);
    40 end
    41
    42 forever
    43 begin : Hex_Rom
    44 //------------- 测试文件好坏 ------------------
    45 if($ferror(fp,errstr))
    46 begin
    47 $display("%s",errstr);
    48 $display($time,"ERROR: Hex File %s error",filename);
    49 $stop;
    50 end
    51 //------------- 检测每行第1个字符:起始位 -------------------
    52 char_1st=$fgetc(fp);
    53 if(char_1st=="\n") //若当前字符是行尾换行符
    54 char_1st=$fgetc(fp); //读取下一个字符
    55 else
    56 if(char_1st!=":") // every line begin with ":" int the IntelHex form
    57 begin //起始位不为“:”,停止循环
    58 code=$fgets(noused,fp);
    59 $display($time,"A-ERROR: The 1st char isn't [:]Hex File convert end! ");
    60 $display($time,"A-Noting: Jump out of [Reading Hex/Initial Rom]");
    61 $stop;
    62 disable Hex_Rom;
    63 end
    64 else
    65 begin
    66 //-------------检测第2,3个字符:数据长度 -------------------
    67 code=$fscanf(fp,"%2x",len);
    68 if(len==0) //长度为0,停止
    69 begin
    70 $display($time,"B-Message: The data length is Zero(0)!");
    71 $display($time,"B-Noting: Initial Rom Finish^_^!");
    72 $stop; // stop when no data
    73 //disable Hex_Rom;
    74
    75 end
    76 else
    77 begin
    78 //-------------------检校和计算-------------------------------
    79 sum=len;
    80 //-------------检测第4,5,6,7个数据:起始基址 -------------------
    81 code=$fscanf(fp,"%4x",address);
    82 //-------------------检校和计算-------------------------------
    83 sum=sum+address;
    84 sum=sum+(address>>8); // unsigned sum
    85 //---------------- 检测数据(16bit) -------------------------
    86 code=$fscanf(fp,"%2x",dat); // data type
    87 sum=sum+dat;
    88 for(i=0;i<len;i=i+1)
    89 begin
    90 code=$fscanf(fp,"%2x",dat);
    91 sum=sum+dat;
    92 ram[address]=dat; // ram read data from file
    93 $display($time,"Noting Ram[%d]=%h",address,dat);
    94 address=address+1;
    95 end
    96 //---------------- 检测检校和 -----------------------------
    97 code=$fscanf(fp,"%2x\n",dat); // check data // 若每行数据行尾有换行符,则必须如下更改 由于MODELSIM版本问题,程序在6.1版时有些问题,改动如下,可兼容:code=$fscanf(fp,"%2x\n",dat);
    98 sum=sum+dat;
    99
    100 if(sum!=0)
    101 begin
    102 $display("error:checksum is not zero!");
    103 $stop;
    104 end
    105
    106 end
    107 end
    108 end
    109
    110
    111 end
    112
    113
    114 endmodule

     

    转载于:https://www.cnblogs.com/fishplj2000/archive/2012/03/07/2383041.html

    展开全文
  • STlink工具烧录读取hex&bin 转载https://shaynerain.com/jlinkstlink工具烧录读取hexbin/ shaynerain Posted on2018-11-27 Jlink和STlink等工具非常好用,对调试程序程序来说简直就是爽到爆,而有些...
  • HEX文件查看工具minihex

    2020-07-29 14:20:40
    HEX文件查看工具软件 minihex
  • 本人想要将手头开发板中原有的带调参的程序考下来备份,故顺便写此纪录
  • 读取Hex文件并求和

    2019-04-09 10:17:33
    1.读取Hex文件 void CTestProjectDlg::OnBnClickedButtonReadHex() { CString filename = _T(""); CFileDialog Open(TRUE, _T("*.hex"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Hex Files (*.hex)|...
  • 建立了第一个单片机C语言项目,但为了让编译好的程序能通过编程器写入51芯 片中,要先用编译器生成HEX文件,下面来看看如何用KEIL uVISION2来编译生成用于烧写 芯片的HEX文件。HEX文件格式是Intel公司提出的按地址...
  • Hex文件格式解析

    2012-07-10 08:53:38
    Hex文件是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式由很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。  Hex文件如果用特殊的程序来查看(一般记事本就可以实现)。...
  • 通过串口烧入hex到pic单片机(pic已经运行boot程序) down_hex.py 源码 #coding:utf-8 import serial import pic_hex_pars import time from threading import Timer #串口定时接收 class PicSerial(): def __init...
  • 上一篇文章介绍了使用Keil下载单独的Hex文件到单片机内,本篇文章介绍,如何使用SEGGER官方软件JFlash来进行程序的下载,支持Hex和Bin文件。 JFlash的下载和安装 首先,安装JFlash软件,安装完成后,会默认安装JLink...
  • @stm32程序升级SD卡读取hex文件写入flash 日期:2019,1,14 芯片:STM32F1ZET6 参考文献: 1、了解hex文件:https://wenku.baidu.com/view/930d6583ec3a87c24028c403.html 2、stm32SD卡hex文件升级:看这位博客的...
  • 关于Arduino串口读写HEX

    2019-08-08 01:35:33
    由于单片机级别的处理器只能以字节形式接收,因此无法使用缓存和字符串的形式进行读取判断。网上找来找去,终于找到一个类似的,加以修改,就成了满足我们测试需求了。以下是源码。 byte variable[80]; byte...
  • 单片机c8051f320烧录hex和bin的方法烧录hex的方法烧录bin的方法 烧录hex的方法 烧录工具和默认安装路径 下载链接: 烧录工具下载链接 默认安装路径在 C:\SiLabs\MCU\Utilities\FLASH Programming\Static Programmers...
  • 上一篇Jlink系列文章介绍了如何使用J-Flash来下载Hex或Bin文件到单片机,具体可参考Jlink使用技巧之单独下载HEX文件到单片机,本篇文章介绍,如何使用JFlash来读取单片机的程序,学习单片机程序文件的读取,不是为了...
  • 1 准备工作 硬件设备:JY61模块、STC89C52开发板一个。 ...提取码:zryo。下载并进行安装。 2 硬件连接 1、使用数据线将STC89C52与电脑连接通信 2、JY61与STC89C52使用杜邦线连接。...3、将JY61模块连接在STC89C52开发板...
1 2 3 4 5 ... 20
收藏数 1,406
精华内容 562
关键字:

单片机hex读取工具