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文件的格式和内容而异。
如果您不确定如何进行转换,可以尝试搜索相关的转换工具或在线资源,以找到适合您特定情况的解决方案。
1、使用Matlab产生二进制文件.bin
1、使用Matlab产生二进制文件.bin•Matlab中如何实现二进制文件的读写说明:matlab产生的是.bin二进制文件。
.bit 是FPGA的比特流文件1、文件的打开与关闭1)打开文件在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。
fopen 函数的调用格式为:fid=fopen(文件名,‘打开方式’)说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。
文件名用字符串形式,表示待打开的数据文件。
常见的打开方式如下:‘r’:只读方式打开文件(默认的方式),该文件必须已存在。
‘r+’:读写方式打开文件,打开后先读后写。
该文件必须已存在。
‘w’:打开后写入数据。
该文件已存在则更新;不存在则创建。
‘w+’:读写方式打开文件。
先读后写。
该文件已存在则更新;不存在则创建。
‘a’:在打开的文件末端添加数据。
文件不存在则创建。
‘a+’:打开文件后,先读入数据再添加数据。
文件不存在则创建。
另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen 函数默认的打开方式。
2)关闭文件文件在进行完读、写等操作后,应及时关闭,以免数据丢失。
关闭文件用fclose函数,调用格式为:sta=fclose(fid)说明:该函数关闭fid所表示的文件。
sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。
如果要关闭所有已打开的文件用fclose(‘all’)。
2、二进制文件的读写操作1)写二进制文件fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。
其调用格式为:COUNT=fwrite(fid,A,'precision')说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double 等。
如何生成库文件(MDK和IAR)
*/
GPIOD->MODER &= ~((3UL << 2*12) |
(3UL << 2*13) |
(3UL << 2*14) |
(3UL << 2*15) ); /* PD.12..15 is output
*/
GPIOD->MODER |= ((1UL << 2*12) |
(1UL << 2*13) |
*----------------------------------------------------------------------------*/ void LED_Init (void) {
RCC->AHB1ENR |= ((1UL << 3) );
/* Enable GPIOD clock
} }
/*---------------------------------------------------------------------------Function that outputs value to LEDs
*----------------------------------------------------------------------------*/ void LED_Out(unsigned int value) {
int i;
for (i = 0; i < LED_NUM; i++) {
if (value & (1<<i)) { LED_On (i);
} else { LED_Of:
/*---------------------------------------------------------------------------* Name: LED.h * Purpose: low level LED definitions * Note(s): *---------------------------------------------------------------------------* This file is part of the uVision/ARM development tools. * This software may only be used under the terms of a valid, current, * end user licence from KEIL for a compatible version of KEIL software * development tools. Nothing else gives you the right to use this software. * * This software is supplied "AS IS" without warranties of any kind. * * Copyright (c) 2011 Keil - An ARM Company. All rights reserved. *----------------------------------------------------------------------------*/
bin文件生成的方法
bin文件生成的方法
bin文件是二进制文件,它包含用于应用程序或操作系统的机器码,用于二进制文件的生成可以使用如下方法:
1.编码。
使用包括:C/C++,Fortran,Java等编程语言编写应
用程序。
编译器将源代码编译成可执行的机器码,并生成bin文件。
2.汇编。
使用汇编语言编程,汇编程序将源代码编译成可执行的机器码,从而生成bin文件。
3.使用指令编码。
使用指令编码,可以直接将指令编码为机器码,并将其写入bin文件中。
4.使用库调用。
库调用是指将可执行文件的一部分(作为一个单独的文件)放在一个特殊的库中,然后在程序中调用这些代码,从而生成bin文件。
5.使用解释器。
解释器可以将源代码解释为可执行的机器码,可以将这些代码写入bin文件中。
6.使用虚拟机。
使用虚拟机可以将源代码编译为可执行的机器码,该机器码可以写入bin文件中。
- 1 -。
MDk如何生成bin文件
在MDK中如何生成*.bin格式的文件在Realview MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件。
虽然这两个格式的文件非常有利于ULINK2仿真器的下载和调试,但是ADS 的用户更习惯于使用*.bin格式的文件,甚至有些嵌入式软件开发者已经拥有了*.bin格式文件的调试或烧写工具。
为了充分地利用现有的工具,同时发挥Realview MDK集成开发环境的优势,将*.axf格式文件或*.hex格式文件转换成*.bin格式的文件是十分自然的想法。
本文将详细的探讨这种转换方法。
在详细的介绍这种方法之前,先了解一下ARM公司的RVCT开发套件中的fromelf.exe转换工具是十分必要的,因为在RealviewMDK中生成*.bin格式文件的工具正是它。
fromelf.exe转换工具的语法格式如下:fromelf [options] input_file其中[options]包括的选项及详细描述见表一。
表一fromelf工具的选项及描述表格在掌握了fromelf转换工具的语法格式以后,下面将介绍它在Realview MDK中的使用方法:1:要先能生产可执行文件(即配置Output)aa为生成的可执行文件明,(即编译后会生成一个aa.axf的文件)生成的bin文件就是从这个文件生成的2:从可执行文件生成.bin文件(即配置User)C:\Keil\ARM\BIN40\fromelf.exe --bin -o :命令表示从可执行文件生成bin文件D:\1\out\33.bin :生产的bin文件的路径和文件名D:\1\out\aa.axf :可执行文件的路径和文件名编译后即可生产33.bin文件(注意路径是可变的)。
Keil不能正确生成.bin文件的解决办法
Keil 不能正确生成.bin 文件的解决办法
前段时间我写过如何利用CW、IAR 和Keil 生成image 文件,效果还不错,有些用户反馈挺有帮助的,毕竟待项目开发到最后是需要生成image 文件用来量产烧写,我们总不至于到最后使用调试下载吧(不过还别说,用量比较小的用户还真有可能用调试的方法来下载,当然这个只能说是小批量烧写,如果真是大批量烧写,这效率估计得把老板愁死,呵呵)。
不过最近同事遇到了用keil 生成bin 文件时不能正确生成.bin 文件而是生成.bin 文件夹的问题,这个问题最开始感觉比较怪异,后来问题解决了还是豁然开朗了,Keil 还是蛮有意思的,呵呵。
其实这个问题顺藤摸瓜还是比较容易找到根结的(还是那句话,授之以鱼不如授之以渔才是俺的风格,问题解决只是结果,但是我更希望跟大家说明白解决问题的方法,结果是给老板看的,但对自己来说方法和过程很重要,学会了方法会让你在处理问题上游刃有余),既然问题出在生成文件上,那我们就只能找fromelf 这个文件转换工具的麻烦了(啥?不知道啥叫fromelf,咳咳,先去面壁2 小时然后百度一下吧,呵呵),打开keil IDE,然后打开help->uVison Help,搜索fromelf 关键字如下图1:
然后再进入到右下角的索引找到fromelf 命令行的语法和选项,找到—bin 的说明如下,如红色标注所说,正是症结所在,即如果链接文件中定义了多个加载段的话,fromelf 会以目标文件名来创建一个文件夹并将每个加载段都。
KEILMDK生成BIN文件的两种方式
KEILMDK⽣成BIN⽂件的两种⽅式KEIL / MDK⽣成BIN⽂件的两种⽅式1 KEIL⼯程配置⼊⼝点击“魔术棒”图标(Option for Target)在After Build/Rebuild选项卡中,勾选 "Run # 1",在后⾯输⼊框写⼊bin⽂件⽣成⽅式,见2.1、2.22 输出Bin⽂件配置KEIL⽣成bin⽂件,根据输⼊命令的相对\绝对路径来分,有两种⽅式,都是通过⾃带的fromelf.exe来⽣成2.1 绝对路径⽅式绝对路径⽅式,如果更换电脑等,需要⼿动修改MDK⼯具链(formelf.exe)所在路径与项⽬⽂件名(例如test_app)"D:\Program Files\MDK516\ARM\ARMCC\bin\fromelf.exe" --bin -o ./obj/test_app.bin ./obj/test_app.axf"2.2 相对路径⽅式使⽤相对路径⽣成,则不需要任何修改$K\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin !L编译后,Build Out框可以看到:After Build - User command #1: D:\Program Files\MDK516\ARM\ARMCC\bin\fromelf.exe --bin --output=test1.bin .\obj\test1.axf上述操作后,在xxx.uvprojx当前⽬录下,可看到⼀个test1.bin如果希望⽣成.bin⽂件输出在当前⼯程下的指定⽬录,⽐如Bin⽂件夹,可如下操作:$K\ARM\ARMCC\bin\fromelf.exe --bin --output=Bin\@L.bin !L编译后,Build Out框可以看到:After Build - User command #1: D:\Program Files\MDK516\ARM\ARMCC\bin\fromelf.exe --bin --output=Bin\test1.bin .\obj\test1.axf 上述操作后,在xxx.uvprojx当前⽬录下,可看到⼀个新⽣成的Bin⽂件夹,⾥⾯是test1.bin符号代号(Key Code)$ 扩展为指定⽂件的路径名@ 表⽰ Output -> Name of Exectable:定义的⼯程名,⽐如test1build⼯程后,最终⽣成的bin⽂件名称将是test1.bin! 当前⽬录下的扩展路径!L 编译(Build)后,就是 .\obj\xx.axf⽂件⽂件代号(File Code)K keil develop chaintool ⼯具链(fromelf.exe)L Linker output fileL.bin 编译后,⽣成的就是最终的xx.bin⽂件。
KeilMDK5生成.bin文件的简单教程(图文)
KeilMDK5生成.bin文件的简单教程(图文)
转: https:///u014563989/article/details/5112 7519
1.按如图步骤做,主要是要找到fromelf.exe的路径;(keil4则是在BIN40而不是在ARMCC里,这一点要注意)
2.重点
接下来要做的要视情况而定:选完fromelf.exe后在输入框中加个空格然后加一串字 :
--bin -o ./Obj/@L.bin ./Obj/@L.axf
解释:
这串字符得依情况而定,不能直接照搬。
如下下图所示,博主把.hex和.axf等文件输出到Obj文件夹里了,故为:
--bin -o ./Obj/@L.bin ./Obj/@L.axf
若你把.hex和.axf等文件输出到Output文件夹里,则应该为:--bin -o ./Output/@L.bin ./Output/@L.axf
以上两种情况都是输出文件夹和工程文件同一个目录的情况。
若你把hex和axf等文件输出到Output文件夹里,而且这个文件夹在工程文件的上层,则为:
--bin -o ../Output/@L.bin ../Output/@L.axf
为什么呢?因为"./"是当前目录的意思,而“../”是上一层目录的
意思。
其实说白了就是找出.axf输出的路径而已.
3.编译一下,如果没有error message的话,bin文件十有八九就已经在输出文件夹中了,
出现了error message的话,多半都是因为路径没写对,此时就检查一下吧。
如何用MDK(keil)生成.bin文件
使用MDK4(Keil)生成.bin文件kangerEmail:baokang506@在网上看到很多人问能不能用Keil生成.bin文件,大多数是说不能,我刚开也觉得不能,因为在配置菜单中根本就没有输出.Bin这个菜单选项,不过有人提议说找个HEX2BIN转换器,我没找到;还有人说直接把.hex后缀直接改为.bin,我试了还是不行。
不过,在搞其他东西时,看到可以生成就顺便来用用,我是用在mini2440开发板的(不知道这是什么没关系可以看看(看你需要的东西))。
1,打开MDK42,新建工程,Project->NewμVion project...3,我建了个“生成BIN”文件,并将工程也保存能此名。
4,选择CPU,S3c2440a5,选择“是(Y)”6,新建空白文档8,保存文档成.c文档9,添加到工程去选中“(生成.BIN).c”,然后点击“Add”,再然后“Close”;10,写入代码(这是我用的代码,你可以不用,这个没有影响)//定义PORTB的控制寄存器地址#define GPBCON(*(volatile unsigned*)0x56000010)#define GPBDAT(*(volatile unsigned*)0x56000014)#define GPBUP(*(volatile unsigned*)0x56000018)void delay(){int i,j;for(i=0;i<10000;i++)for(j=0;j<50;j++);}int main(){GPBCON=0x155555;//配置protB的所有引脚为输出while(1){//点亮第一个小灯GPBDAT|=0x1E0;GPBDAT&=0x1C0;delay();//点亮第二个小灯GPBDAT|=0x1E0;GPBDAT&=0x1A0;delay();//点亮第三个小灯GPBDAT|=0x1E0;GPBDAT&=0x160;delay();//点亮第四个小灯GPBDAT|=0x1E0;GPBDAT&=0x0E0;delay();}//return0;}下边该配置了,这是重点,不过很简单。
editbin使用方法
editbin使用方法摘要:editbin使用方法概述1.编辑bin文件的意义2.Editbin工具的安装与使用3.编辑bin文件的实际案例4.编辑bin文件的注意事项5.总结正文:editbin是一款在计算机编程中广泛使用的工具,主要用于编辑二进制文件(bin文件)。
本文将详细介绍editbin的使用方法,包括安装、实际案例以及注意事项。
一、编辑bin文件的意义在计算机编程过程中,bin文件是一种重要的数据存储格式。
编辑bin文件可以实现对程序的调试、修改和优化,从而提高程序的性能和可靠性。
此外,编辑bin文件还可以帮助我们更好地理解程序的内部结构,为后续的开发工作提供有力支持。
二、Editbin工具的安装与使用1.安装:Editbin适用于多种操作系统,如Windows、Linux和Mac OS 等。
您可以根据您的操作系统在相应应用商店或编程社区下载安装包。
2.使用:安装完成后,您可以打开命令行或终端,输入“editbin”命令来启动Editbin。
Editbin界面简洁,主要包括菜单栏、工具栏和编辑区域。
以下是常用功能的使用方法:- 打开bin文件:点击“文件”>“打开”,选择需要编辑的bin文件。
- 保存文件:点击“文件”>“保存”,保存编辑后的bin文件。
- 搜索和替换:点击“编辑”>“查找”,输入关键词进行搜索。
找到匹配项后,点击“替换”或“全部替换”按钮。
- 插入/删除文本:在编辑区域直接输入或剪切粘贴文本。
如需删除文本,选中要删除的文本,按下Delete键即可。
- 修改字节:选中要修改的字节,按下F2键,输入新字节后按Enter 键确认。
三、编辑bin文件的实际案例1.案例一:修改程序启动参数将修改后的启动参数写入bin文件,实现特定功能的定制。
例如,修改Windows系统的启动项,实现快速启动某个程序。
2.案例二:修复损坏的bin文件当bin文件受损或部分数据丢失时,可以通过编辑bin文件修复损坏的部分,从而恢复文件的正常功能。
MDK4选项说明
MDK4选项说明Keil µVision 4 ⽬标⼯具选项详解⼀、⽬标⼯具选项(Target Options …)µVision可以设置⽬标硬件的选项。
通过下图1中的⼯具栏2区域按钮或1区域菜单项P roject -> Options for Target打开Options for Target对话框。
图1⼆、设备选项卡(device )在 Target页中设置⽬标硬件及所选CPU⽚上组件的参数。
如图2所⽰。
图2在图2中,各区域说明如下:1:显⽰当前选定的CPU的⼚商名,CPU的型号,和编译⼯具。
2:是该cpu 的⼀些描述。
3:更改所使⽤的CPU,三、硬件⽬标设置选项卡(Target),见图3 所⽰。
图3在图3中,各区或详细说明如下:1:指定⽤晶振频率,可以⽤于模拟调试,仅反映外部振荡频率。
2:可以选择KEIL集成的实时操作系统RTX Kernel。
针对复杂的嵌⼊式应⽤,MDK内部集成了由ARM开发的实时操作系统(RTOS)内核RTX,它可以帮助⽤户解决多时序安排、任务调度、定时等⼯作。
值得⼀提的是,RTX可以⽆缝集成到MDK⼯具中,是⼀款需要授权的、⽆版税的RTOS。
RTX程序采⽤标准C语⾔编写,由RVCT编译器进⾏编译。
4:⽚外ROM设置,最多⽀持3块ROM(Flash),在Start栏输⼊起始地址,在Size栏输⼊⼤⼩。
若是有多⽚⽚外ROM,需要在7区域设置⼀个作为启动存储块,程序从该块启动;有⼏块ROM需要选中对应的3区域。
6:⽚内ROM设置。
设置⽅法同⽚外ROM,只是程序的存储区在芯⽚内集成。
9:使⽤ Cross-Module优化。
10:使⽤MicroLib库。
它旨在与需要装⼊到极少量内存中的深层嵌⼊式应⽤程序配合使⽤.这些应⽤程序不在操作系统中运⾏. MicroLib进⾏了⾼度优化以使代码变得很⼩. 它的功能⽐缺省 C 库少,并且根本不具备某些ISO C 特性. 某些库函数的运⾏速度也⽐较慢,例如,memcpy(). 与缺省 C 库之间的差异MicroLib与缺省 C 库之间的主要差异是: MicroLib不符合 ISO C 库标准. 不⽀持某些 ISO 特性, 并且其他特性具有的功能也较少. MicroLib不符合 IEEE 754 ⼆进制浮点算法标准. MicroLib进⾏了⾼度优化以使代码变得很⼩. ⽆法对区域设置进⾏配置. 缺省 C 区域设置是唯⼀可⽤的区域设置. 不能将main() 声明为使⽤参数,并且不能返回内容. 不⽀持stdio,但未缓冲的stdin,stdout 和 stderr 除外. MicroLib对 C99 函数提供有限的⽀持. MicroLib不⽀持操作系统函数. MicroLib不⽀持与位置⽆关的代码. MicroLib不提供互斥锁来防⽌⾮线程安全的代码. MicroLib不⽀持宽字符或多字节字符串. 与 stdlib 不同, MicroLib 不⽀持可选择的单或双区内存模型. MicroLib只提供双区内存模型,即单独的堆栈和堆区. 可以合理地将MicroLib与 --fpmode=std 或 --fpmode=fast 配合使⽤. MicroLib 中的函数负责: 创建⼀个可在其中执⾏ C 程序的环境. 这包括: 创建⼀个堆栈创建⼀个堆(如果需要) 初始化程序所⽤的库的部分组成内容.11:指令集中也分为⾼字节结尾,⼤端模式。
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的情况。
0x02表示对应的存储地址超过了64K,由于我的编程器只针对64K以下的单片机,因此在次不处理,0x04也是如此。