MDK 4.72生成bin文件方法
hex格式介绍及转bin格式的源程序

hex格式介绍及转bin格式的源程序源: Intel HEX⽂件是记录⽂本⾏的ASCII⽂本⽂件,在Intel HEX⽂件中,每⼀⾏是⼀个HEX记录,由⼗六进制数组成的机器码或者数据常量。
Intel HEX⽂件经常被⽤于将程序或数据传输存储到ROM、EPROM,⼤多数编程器和模拟器使⽤Intel HEX⽂件。
很多编译器的⽀持⽣成HEX格式的烧录⽂件,尤其是Keil c。
但是编程器能够下载的往往是BIN格式,因此HEX转BIN是每个编程器都必须⽀持的功能。
HEX格式⽂件以⾏为单位,每⾏由“:”(0x3a)开始,以回车键结束(0x0d,0x0a)。
⾏内的数据都是由两个字符表⽰⼀个16进制字节,⽐如”01”就表⽰数0x01;”0a”,就表⽰0x0a。
对于16位的地址,则⾼位在前低位在后,⽐如地址0x010a,在HEX格式⽂件中就表⽰为字符串”010a”。
下⾯为HEX⽂件中的⼀⾏::10000000FF0462FF051EFF0A93FF0572FF0A93FFBC “:”表⽰⼀⾏的开始。
“:”后的第1,2个字符“10”表⽰本⾏包含的数据的长度,这⾥就是0x10即16个。
第3,4,5,6个字符“0000”表⽰数据存储的起始地址,这⾥表⽰从0x0000地址开始存储16个数据,其中⾼位地址在前,低位地址在后。
第7,8个字符“00”表⽰数据的类型。
该类型总共有以下⼏种:00 ----数据记录 01 ----⽂件结束记录 02 ----扩展段地址记录 04 ----扩展线性地址记录这⾥就是0x00即为普通数据记录。
⾃后的32个字符就是本⾏包含的数据,每两个字符表⽰⼀个字节数据,总共有16个字节数据跟⾏⾸的记录的长度相⼀致。
最后两个字符表⽰校验码。
每个HEX格式的最后⼀⾏都是固定为::00000001FF 以上的信息其实就⾜够进⾏HEX转BIN格式的程序的编写。
⾸先我们只处理数据类型为0x00及0x01的情况。
bin是什么文件

bin是什么文件当我们在计算机中打开一个文件夹时,经常会看到许多以.bin为后缀名的文件。
那么,bin是什么文件呢?在本文中,我们将深入探讨bin文件的含义、用途以及如何打开和处理这种文件。
首先,bin是二进制文件的简称。
二进制文件是一种由机器语言编写的文件,其中包含的是计算机直接可执行的指令。
与之相对的是文本文件,文本文件是由字符、数字和符号组成的,可以由文本编辑器打开和编辑。
随着计算机技术的发展,二进制文件的应用范围也越来越广泛。
例如,当我们在计算机上安装软件时,往往需要下载一个以.bin为后缀名的安装程序。
这个安装程序实际上是一个二进制文件,其中包含了软件的安装指令。
我们只需双击该文件,计算机便会执行其中的指令,完成软件的安装过程。
除了软件安装程序,bin文件还可以用于存储固件。
固件是一种嵌入式系统中的软件,通常用于控制硬件设备的运行。
例如,我们常见的路由器、手机和电子设备等都需要固件来确保其功能正常。
这些固件文件通常以.bin为后缀名,可以通过特定的工具进行升级或替换。
此外,二进制文件还可以包含其他类型的文件。
例如,在计算机安全领域中,常常使用二进制文件来存储恶意软件、病毒和木马程序等。
这些文件经常被厂商和安全专家用于分析、检测和处理各种威胁。
同时,研究人员也可以利用二进制文件来逆向工程软件,分析其内部结构和实现原理。
在打开和处理bin文件时,我们可以使用不同的工具和方法。
首先,对于可执行的二进制文件,我们可以直接双击打开,或者使用特定的命令行工具来执行。
然而,对于非可执行的二进制文件,我们可能需要借助特定的软件来处理。
例如,对于固件文件,我们可以使用厂商提供的升级工具来更新设备的固件。
对于恶意软件的分析,我们可以使用一些安全工具,如反病毒软件或专门的样本分析器。
此外,在逆向工程方面,我们可以使用反编译器和调试器来分析和理解二进制文件的结构和运行机制。
在处理bin文件时,我们需要格外小心,因为它们可能包含有害的指令或代码。
MDK使用心得1—建立工程文件小结

MDK是目前最常见的ARM的开发工具. 在此本人首先就建立工程文件中的几个步骤中的相应参数如何设定做一小结。
1.创建文件夹在创建新工程文件之前,首先建立一个工程文件夹,工程文件夹中建立两个子文件夹,便于阅读,调试和查找。
双击µVision 3图标,进入开发工具的标准窗口,单击Project ->New µVision Project菜单项,µVision 3将打开一个标准对话框,输入希望新建工程的名字即可创建一个新的工程,输入新建工程的名字Project1,µVision将会创建一个以Project1.UV2为名字的新工程文件,它包含了一个缺省的目标(target)和文件组名。
这些内容在Project Workspace->Files中可以看到,然后选择NewProject文件夹作为新建工程的目录.2.选择设备在创建一个新的工程时,µVision要求为这个工程选择一款CPU。
选择设备对话框显示了µVision的设备数据库,只需要选择用户所需的微控制器即可。
例如,选择 Philips LPC2292微控制器,这个选择设置了LPC2292设备的必要工具选项、简化了工具的配置。
3.选择工具集在开发ARM工程时,对于µVision工程来说,必须在Project - Components, Environment, and Books对话框中选择工具集。
4.创建新的源文件通过File ->New...菜单项可创建一个新的源文件。
这时将打开一个空文件编辑窗口,在这里可以输入源文件代码。
当通过File->Save As 对话框以扩展名.C的形式保存了这个源文件,推荐将工程的源文件保存在工程文件夹中的一个子文件夹,如我们前面建立的SrcFiles子文件夹中。
创建源文件以后,就可以将这个文件添加到工程中。
µVision提供了几种方法将源文件添加到工程中。
新唐M0单片机入门--KEIL工程的建立(基于MDK4.72a)

首先,感谢21IC论坛,提供了网友交流学习的场所;其次,感谢缥缈九哥的无私帮助!-----------------------------------------------------分割线--------------------------------------------------------工程建立本人以前有51开发的经验,对于keil开发环境还算是比较熟悉.在使用新唐单片机建立工程之前,在21IC论坛的新唐版块和M0助学园地版块看了很多资料.其中提供了新唐工程模板,还有一些建立工程的PDF教程.发现其中的资料有些老,并且很多内容没有详细的介绍,使人不明其所以然,遂有了新写一篇的想法!介绍一下我的开发环境:1.系统:XP SP32.keil版本:MDK4.72A,下载自ARM官方网站,和谐文件来自网络.3.NU-LINK驱动.6059内部测试版本.(缥缈九哥提供).说一下介绍开发环境的原因.之前电脑上装的是NDK4.71a的版本,结果NU-LINK下载过程中会出现MDK崩溃的情况,试过了N次重装,MDK依然崩溃.在本人接近崩溃的情况下,上论坛求助,得到了缥缈九哥的帮助.知道了问题是系统,软件和驱动三者驱动的原因.XP系统下,MDK版本高于454,不能使用5905,6040等较新版本的驱动! 为了解决系统崩溃的问题,特地下载了MDK4.72a版本,崩溃问题依然没有解决.但发现了新的特性,就是新唐的单片机已经集成在了MDK的这个版本中.所以开发环境果断使用了MDK4.72a.该版本下,建立工程简化了很多,下边着重介绍工程建立的配置.下图为新建的工程文件管理窗口,为方便文件管理,项目文件设置了文件夹目录.右键Target 1位置选择菜单第一项,可以进入如下配置界面(也可以使用快捷键ALT + F7),这个配置界面叫做”Options for Target”.下边对这个配置界面着重介绍一下.第一项”Device”,是器件选择项.在MDK4.72a版本中,新唐的单片机已经像你曾经使用的51单片机一样存在于器件选项当中,选择新唐单片机也变得十分简单.(如图)第二项”Target”,在下图中可以看到两个打着”√”的选项,在以前的版本中,这两个设置选项需要自己配置,现在新建项目,器件选择后,这两个选项会出现默认值,不需要修改.左边的”IROM1”后边填写的数字是FLASH的起始地址和大小,右边”IRAM1”后边填写的数字是RAM的起始地址和大小.第三项”Output”,产生目标文件的设置选项.该选项中可以设置目标文件的输出目录,目标文件的名称,勾选可选项的第二项,可以生成HEX文件,用来烧写芯片.第四项”Listing”,产生列表文件的配置选项.同样可以配置目录,和配置列表文件中输出的信息.该项设置不影响编译和调试.第五项”User”,用于用户配置一些命令,完成特定的功能.可以看到这个选项中一共分为三个部分.1编译C文件前的用于命令,2构建目标前的用户命令,3构建目标后的用户命令.下图中有两条用户命令,分别用于产生bin文件和TXT文件,使用的是fromelf命令.不使用该两项命令不会影响编译.bin 文件应该是烧写目标芯片用的,TXT文件用于输出相关编译信息,应该是高手研究代码效率用的.(两个文件的用处都是猜想,没有依据).fromelf.exe使用说明(更详细的请看相关的ARM文档)命令的格式为:fromelf [options] input_file命令选项如下:--help 显示帮助信息--vsn 显示版本信息--output file 输出文件(默认的输出为文本格式)--nodebug 在生成的映象中不包含调试信息--nolinkview 在生成的映象中不包含段的信息二进制输出格式:--bin 生成Plain Binary格式的文件--m32 生成Motorola 32位十六进制格式的文件--i32 生成Intel 32位十六进制格式的文件--vhx 面向字节的位十六进制格式的文件t--base addr 设置m32,i32格式文件的基地址--text 显示文本信息文本信息的标志-v 打印详细信息-a 打印数据地址(针对带调试信息的映象)-d 打印数据段的内容-e 打印表达式表print exception tables-f 打印消除虚函数的信息-g 打印调试表print debug tables-r 打印重定位信息-s 打印字符表-t 打印字符串表-y 打印动态段的内容-z 打印代码和数据大小的信-c 打印汇编代码.第六项” C/C++”,用于配置C编译时的代码优化.由于一直没有进行代码优化,对相关的功能也没有深入研究过,不多写了.说两点, 1. “√”的勾选项对代码大小影响极大,选择了编译结果5K多,不选择17K多;2.对于头文件不在项目目录及编译器目录下的头文件,需要进行头文件包含.第七项”ASM”,汇编选项.M0是Thumb指令集,应该勾选该选项!不过不选择也可以编译,编译后并可以运行,不知道选不选择有何区别,希望高手指点下!第九项”Debug”,选择调试工具,及相关配置.第十项,选择目标板Flash编程的工具.--------------------------------------------------------分割线-----------------------------------------------------半主机调试模式设置1.工程需要加入的文件,<retarget.c>,并且在该文件定义如下宏:#define DEBUG_ENABLE_SEMIHOST2.在启动文件<startup_NUC1xx.s>中修改第十行为:SEMIHOSTED SETL {TRUE}3.调试时,在工程中使用printf()函数就会输出信息到KEIL的调试串口窗口.效果如图,说明:我使用半主机调试模式,没有帖子里边写的那么复杂,可能因为新版本的原因!梦回唐朝(dwh000)2013-9-10。
MDK(keil)4.7中文注释乱码解决

MDK(keil)4.7中⽂注释乱码解决
由于编码使⽤不统⼀导致别的开发环境下的⽂件在MDK(keil)下打开中⽂显⽰乱码,解决这⼀问题需要进⾏码制转换,
可以先将欲打开的⽂件转换成UTF-8格式(如在notepad中进⾏转换),也可以在打开⽂件前将MDK的编码设置为
chinese2312(Edit>Configuration>Editor>Encoding),
这样就能够正确显⽰中⽂了,然后再把编码格式改为Encode in ANSI,这样就完成了编码格式的转换。
keil MDK中默认编码为Encode in ANSI,中⽂占两个字符,在注释中输⼊汉字时光标需要移动两次才能后移⼀个汉字,
在插⼊汉字时很容易出现乱码,解决办法是把编码设置为chinese2312,这样每个汉字就能像英⽂字符⼀样被看做⼀个整体,不过仍占两个字符。
试图搞懂MDK程序下载到Flash(四)--生成bin文件下载到Nor Flash

试图搞懂MDK程序下载到Flash(四)--生成bin文件下载到Nor Flash喜讯啊!!下载到flash中的一种实现了啊!!!鸡冻了!终于可以脱机运行了,尽管是下载到了Nor Flash中运行,还没有下载到Nand Flash中运行,但是这也是一个进步了吧,下面详细介绍一下MDK编译的程序下载到Nor Flash运行的步骤。
1、编写程序我的主程序功能是实现UART的输出功能,工程文档结构图如下:需要自己编写的文件有三个main.c uart.c uart.h,下面贴出这三个文件的实验代码:main.c文件#include<s3c2440.h>#include"uart.h"int main(){unsigned int a=10; //系统时钟初始化,FCLK=400MHz,HCLK=100MHz,PCLK=50MHzUart0_Init(115200); //初始化并设置波特率为115 200while(1){Uart0_Printf("Uart0_Printf test output is:%d\n",a);}}uart.c文件#include<s3c2440.h>#include<stdarg.h>#include"uart.h"#define PCLK 50000000#define UART_BRD (int)((PCLK/(baudrate*16))-1)/************************************************函数名称:void Uart0_Init(unsigned int baudrate)*参数说明:baudrate:波特率*返回值:无*全局变量: 无*功能:对UART0进行初始化************************************************/void Uart0_Init(unsigned int baudrate){GPHCON&=~((3<<4)|(3<<6)); //GPH2--TXD0;GPH3--RXD0GPHCON|=((2<<4)|(2<<6)); //设置GPH2、GPH3为TXD0、RXD0功能GPHUP=0x00; //上拉电阻使能ULCON0|=0x03; //设置数据发送格式:8个数据位,1个停止位,无校验位UCON0=0x05; //发送模式和接收模式都使用查询模式UBRDIV0=UART_BRD; //设置波特率,其中波特率作为一个参数传递到该初始化函数URXH0=0; //将URXH0清零}/************************************************函数名称:void putc(unsigned char c)*参数说明:c:通过串口接收到的字符,注意这里是8位数据*返回值:无*全局变量: 无*功能:将通过串口接收到的字符发送给PC机并显示在* 串口调试工具。
MDK生成BIN和HEX

3.0.Keil MDK-ARM uVision V4.53下生成BIN
3.1.Keil MDK-ARM缺省安装后,目标软件编译结果只有axf
3.2.鼠标右键点选MDK-ARM的Project栏里"Target 1"
A."–"不对,是"-"
B.是两个,不是一个
--------------------------------------------------
4.0.参考资料
4.1.如何用MDK(keil)生成.bin文件
作者:kanger/baokang506@
2.2.鼠标右键点选MDK-ARM的Project栏里"Target 1"
2.3.点选"Target 1"的"Options for Target..."
2.4.设置_Options for Target... 设置界面 Output栏
2.5.选择_Create Exectable:.\XXXXX
FromELF: creating hex file...
User command #1: fromelf.exe --bin --output
XXXXX.bin XXXXX.axf
"XXXXX.axf" - 0 Error(s), 0 Waring(s)
**************************************************
==================================================
dat文件转换为bin文件的方法

dat文件转换为bin文件的方法
将DAT文件转换为BIN文件的具体方法取决于DAT文件的格式和内容。
但是,通常可以使用以下步骤将DAT文件转换为BIN文件:
1. 打开DAT文件:使用文本编辑器(如Notepad++、Sublime Text等)打开DAT文件。
2. 检查DAT文件内容:查看DAT文件的内容,确定其格式和结构。
这有助于您确定如何将其转换为BIN文件。
3. 创建新的BIN文件:在您想要保存转换后的BIN文件的位置创建一个新的空白文件。
4. 将DAT文件内容复制到新的BIN文件中:将DAT文件的内容复制到新的BIN文件中。
确保按照正确的格式和结构进行复制。
5. 保存新的BIN文件:保存新的BIN文件。
确保选择正确的文件类型和编码格式,以便正确地保存文件。
请注意,具体的转换方法可能因DAT文件的格式和内容而异。
如果您不确定如何进行转换,可以尝试搜索相关的转换工具或在线资源,以找到适合您特定情况的解决方案。