读书人

把C文件变成bin文件解决方案

发布时间: 2012-02-15 12:09:43 作者: rapoo

把C文件变成bin文件
各位大神啊,怎么把C文件变成bin文件?

再做嵌入式的时候,大多数都是C,最后都转换成bin或者hex文件。请问是怎么转的?

我在网上看到了一个C程序,把hex变bin,用java能不能把C变bin?如果能,怎么实现?

以上问题能用工具实现,或者是指出编程思想,我都给分,能附上源代码的90%的分。

[解决办法]
把hex变bin 指的是16进制 转 2进制把

你的bin文件时 *.bin的意思吗
[解决办法]
楼主 做个嵌入式 还问这样的问题.
所谓 bin 就是 二进制文件,一般是 数据文件,或者 程序的打包。
C 程序要下年编译成 二进制,然后链接成 可以执行文件
然后几个 程序 打包成 bin,刷到 机器里
[解决办法]
下面中九卫星接收机,国芯CPU的 BIN 文件包的数据结构

C/C++ code
[Main]Ver=1.00SegNumber=9Seg0=AllSeg1=BootloadSeg2=Main CodeSeg3=LogoSeg4=Common DataSeg5=Default UsrDBSeg6=UsrDBSeg7=SysDBSeg8=Key[All]StartAddr=0x00000000SegSize   =0x00200000[Bootload]   // 引导区StartAddr=0x00000000SegSize   =0x00010000[Main Code]  // 主程序区StartAddr=0x00010000SegSize   =0x00120000[Logo]      // 图片logoStartAddr=0x00130000SegSize   =0x00008000[Common Data]  //共享数据StartAddr=0x00138000SegSize   =0x00000800[Default UsrDB] // 默认用户数据StartAddr=0x00138800SegSize   =0x00007800[UsrDB]  // 用户数据StartAddr=0x00140000SegSize   =0x00080000[SysDB]  // 系统数据StartAddr=0x001C0000SegSize   =0x00020000[Key]    // keyStartAddr=0x001E0000SegSize   =0x00020000
[解决办法]
GCC 编译链接后生成的不是 bin 文件吗?
[解决办法]
gcc直接编译的是elf文件,含有很多信息,比如调试符号什么的,而且是分成很多个段的。
嵌入式一般用的不需要这么复杂的文件,而是简单的不分段的二进制程序,类似于DOS下的.COM文件。
一般来说具体的开发环境会提供这方面的工具,没有统一的解决方案。有些平台的bin文件有自己的特殊格式。
你得仔细研究一下配套的文档。一般来说GNU工具链提供了*-objcopy这样的工具。比如arm-none-eabi-objcopy这样的。
[解决办法]
探讨

gcc直接编译的是elf文件,含有很多信息,比如调试符号什么的,而且是分成很多个段的。
嵌入式一般用的不需要这么复杂的文件,而是简单的不分段的二进制程序,类似于DOS下的.COM文件。
一般来说具体的开发环境会提供这方面的工具,没有统一的解决方案。有些平台的bin文件有自己的特殊格式。
你得仔细研究一下配套的文档。一般来说GNU工具链提供了*-objcopy这样的工具。比如arm-none……

[解决办法]
好像有特定的工作编译的把
[解决办法]
你编写好 C 程序, 编译不出错, 连接后的产物就是 *.bin/*.hex 都是二进制文件(.bin只是显式的说

明他是二进制文件, 不同的系统会有不同的意义, 有的是专用软件才能识别的文件(在DAEMON tools里

碰到过), 有的就是和 .hex 差不多的意思)!

不管怎么样, 你的 C 文件都得经过编译器的编译!用什么工具烧写? 相应的单片机厂商都会

提供烧写器的, 有的可以兼容其他种类的单片机, 有的是专用的, 至于设计思路, 这个真不了解,

个人感觉哈, 应该就是把编译连接后的 二进制文件中数据 通过 串口 / 并口 / 以太网口 写入存

储器芯片(Flash, EEPROM, etc)!

学了一学期单片机, 我想应该不会理解错吧? 错了请可劲拍!

探讨

我的意思是,我写了一个C程序,要把C程序打包成*.bin文件或者是*.hex文件,然后烧写到单片机中。除了现有的工具外,还有什么什么方法把C程序变成bin或hex文件?然后用什么工具烧写?烧写工具的设计思路是什么?

[解决办法]
为什么要有数据结构这个东东?
因为要将现实世界或者抽象理论中的各种数据保存在计算机外存(光盘、硬盘、U盘……)或内存(ROM、RAM、SRAM……)里面的一维二进制字节数组中。
然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据。

推荐使用WinHex软件查看文件或内存中的原始字节内容。

[解决办法]
单片机的开发工具也就那么几个主流的,KEIL IAR GCC
这些开发工具都能将C程序编译成BIN或者HEX文件,然后下载到单片机中运行。直接在开发环境中配置就行。
[解决办法]
要经过编译和连接

记得大学时候咱们班有大婶直接改文件名,把.c扩展名改成.obj,再改成.exe,发现还是不能执行
[解决办法]
没那么繁琐,用gcc编译
不过得有Linux 内核环境。
[解决办法]
UNIX环境
cc


LINUX环境
gcc

读书人网 >C语言

热点推荐