把C文件变成bin文件

huajianhun 2012-01-09 05:49:10
各位大神啊,怎么把C文件变成bin文件?

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

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

以上问题能用工具实现,或者是指出编程思想,我都给分,能附上源代码的90%的分。
...全文
1804 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞旭 2012-01-11
  • 打赏
  • 举报
回复
UNIX环境
cc
LINUX环境
gcc
xzjlcyz 2012-01-11
  • 打赏
  • 举报
回复
没那么繁琐,用gcc编译
不过得有Linux 内核环境。
赵4老师 2012-01-10
  • 打赏
  • 举报
回复
为什么要有数据结构这个东东?
因为要将现实世界或者抽象理论中的各种数据保存在计算机外存(光盘、硬盘、U盘……)或内存(ROM、RAM、SRAM……)里面的一维二进制字节数组中。
然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据。

推荐使用WinHex软件查看文件或内存中的原始字节内容。
狂且 2012-01-10
  • 打赏
  • 举报
回复
你编写好 C 程序, 编译不出错, 连接后的产物就是 *.bin/*.hex 都是二进制文件(.bin只是显式的说

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

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

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

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

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

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

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

[Quote=引用 10 楼 huajianhun 的回复:]

我的意思是,我写了一个C程序,要把C程序打包成*.bin文件或者是*.hex文件,然后烧写到单片机中。除了现有的工具外,还有什么什么方法把C程序变成bin或hex文件?然后用什么工具烧写?烧写工具的设计思路是什么?
[/Quote]
薛定谔之死猫 2012-01-10
  • 打赏
  • 举报
回复
要经过编译和连接

记得大学时候咱们班有大婶直接改文件名,把.c扩展名改成.obj,再改成.exe,发现还是不能执行
xmxqiyan 2012-01-10
  • 打赏
  • 举报
回复
单片机的开发工具也就那么几个主流的,KEIL IAR GCC
这些开发工具都能将C程序编译成BIN或者HEX文件,然后下载到单片机中运行。直接在开发环境中配置就行。
luciferisnotsatan 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 huajianhun 的回复:]

我的意思是,我写了一个C程序,要把C程序打包成*.bin文件或者是*.hex文件,然后烧写到单片机中。除了现有的工具外,还有什么什么方法把C程序变成bin或hex文件?然后用什么工具烧写?烧写工具的设计思路是什么?
[/Quote]
单片机的厂商没提供相应工具么?
jacknes009 2012-01-10
  • 打赏
  • 举报
回复
好像有特定的工作编译的把
huajianhun 2012-01-10
  • 打赏
  • 举报
回复
我的意思是,我写了一个C程序,要把C程序打包成*.bin文件或者是*.hex文件,然后烧写到单片机中。除了现有的工具外,还有什么什么方法把C程序变成bin或hex文件?然后用什么工具烧写?烧写工具的设计思路是什么?
AnYidan 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 bokutake 的回复:]

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

lz 是想写一个 ide
辰岡墨竹 2012-01-09
  • 打赏
  • 举报
回复
gcc直接编译的是elf文件,含有很多信息,比如调试符号什么的,而且是分成很多个段的。
嵌入式一般用的不需要这么复杂的文件,而是简单的不分段的二进制程序,类似于DOS下的.COM文件。
一般来说具体的开发环境会提供这方面的工具,没有统一的解决方案。有些平台的bin文件有自己的特殊格式。
你得仔细研究一下配套的文档。一般来说GNU工具链提供了*-objcopy这样的工具。比如arm-none-eabi-objcopy这样的。
Binzo 2012-01-09
  • 打赏
  • 举报
回复
GCC 编译链接后生成的不是 bin 文件吗?
狂且 2012-01-09
  • 打赏
  • 举报
回复
我是来学习的!
Saleayas 2012-01-09
  • 打赏
  • 举报
回复
我倒想看看,那位是大神?
//呵呵
hongwenjun 2012-01-09
  • 打赏
  • 举报
回复
下面中九卫星接收机,国芯CPU的 BIN 文件包的数据结构

[Main]
Ver=1.00
SegNumber=9
Seg0=All
Seg1=Bootload
Seg2=Main Code
Seg3=Logo
Seg4=Common Data
Seg5=Default UsrDB
Seg6=UsrDB
Seg7=SysDB
Seg8=Key
[All]
StartAddr=0x00000000
SegSize =0x00200000
[Bootload] // 引导区
StartAddr=0x00000000
SegSize =0x00010000
[Main Code] // 主程序区
StartAddr=0x00010000
SegSize =0x00120000
[Logo] // 图片logo
StartAddr=0x00130000
SegSize =0x00008000
[Common Data] //共享数据
StartAddr=0x00138000
SegSize =0x00000800
[Default UsrDB] // 默认用户数据
StartAddr=0x00138800
SegSize =0x00007800
[UsrDB] // 用户数据
StartAddr=0x00140000
SegSize =0x00080000
[SysDB] // 系统数据
StartAddr=0x001C0000
SegSize =0x00020000
[Key] // key
StartAddr=0x001E0000
SegSize =0x00020000

hongwenjun 2012-01-09
  • 打赏
  • 举报
回复
楼主 做个嵌入式 还问这样的问题.
所谓 bin 就是 二进制文件,一般是 数据文件,或者 程序的打包。
C 程序要下年编译成 二进制,然后链接成 可以执行文件
然后几个 程序 打包成 bin,刷到 机器里
IVERS0N 2012-01-09
  • 打赏
  • 举报
回复
把hex变bin 指的是16进制 转 2进制把

你的bin文件时 *.bin的意思吗
huajianhun 2012-01-09
  • 打赏
  • 举报
回复
先自己顶一下。
cms-Cloud后台管理系统 cms-Cloud 基于Spring Boot、Spring Cloud & Alibaba、OAuth2的前后端分离的后台管理系统,内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源。核心技术前端技术栈 ES6、vue、vuex、vue-router、vue-cli、axios、element-ui后端技术栈 Spring Boot、Spring Cloud & Alibaba、OAuth2系统需求JDK >= 1.8MySQL >= 5.5Maven >= 3.0主要特性1. 完全响应式布局(支持电脑、平板、手机等所有主流设备)2. 强大的一键生成功能(包括控制器、模型、视图、菜单等)3. 支持多数据源,简单配置即可实现切换。4. 支持按钮及数据权限,可自定义部门数据权限。5. 对常用js插件进行二次封装,使js代码变得简洁,更加易维护6. 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击7. Maven多项目依赖,模块及插件分项目,尽量松耦合,方便模块升级、增减模块。8. 国际化支持,服务端及客户端支持9. 完善的日志记录体系简单注解即可实现技术选型1、系统环境Java EE 8Servlet 3.0Apache Maven 32、主框架Spring Boot 2.2Spring Cloud Hoxton.SR3Spring Framework 5.1Spring Security 5.13、持久层Apache MyBatis 3.4Alibaba Druid 1.14、视图层Vue 2.6Axios 0.18Element UI 2.11内置功能(1) 用户管理:用户是系统操作者,该功能主要完成系统用户配置。(2) 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。(3) 岗位管理:配置系统用户所属担任职务。(4) 菜单管理:配置系统菜单,操作权限,按钮权限标识等。(5) 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。(6) 字典管理:对系统中经常使用的一些较为固定的数据进行维护。(7) 参数管理:对系统动态配置常用参数。(8) 通知公告:系统通知公告信息发布维护。(9) 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。(10) 登录日志:系统登录日志记录查询包含登录异常。(11) 在线用户:当前系统中活跃用户状态监控。(12) 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。(13) 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。(14) 系统接口:根据业务代码自动生成相关的api接口文档。(15) 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。(16) 在线构建器:拖动表单元素生成相应的HTML代码。(17) 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 环境部署准备工作JDK >= 1.8 (推荐1.8版本)Mysql >= 5.5.0 (推荐5.7版本)Redis >= 3.0Maven >= 3.0Node >= 10nacos >= 1.1.0sentinel >= 1.6.0运行系统因为本项目是前后端分离的,所以需要前后端都启动好,才能进行访问。后端运行1、导入cms到Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择工作目录,然后点击 Finish 按钮,即可成功导入Eclipse会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定)2、创建数据库cms-cloud并导入数据脚本cms.sql(必须),quartz.sql(可选)3、创建数据库cms-config并导入数据脚本cms_config.sql(必须)4、配置nacos持久化,修改conf/application.properties文件,增加支持mysql数据源配置。# db mysqlspring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://localhost:3306/cms-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user=rootdb.password=password5、打开运行基础模块(启动没有先后顺序)CmsGatewayApplication (网关模块 必须)CmsAuthApplication (认证模块 必须)CmsSystemApplication (系统模块 必须)CmsMonitorApplication (监控中心 可选)CmsGenApplication (代码生成 可选)CmsJobApplication (定时任务 可选)CmsFileApplication (文件服务 可选)前端运行# 进入项目目录cd cms-ui# 安装依赖npm install# 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。npm install --registry=https://registry.npm.taobao.org 本地开发 启动项目npm run dev打开浏览器,输入:http://localhost:80 (默认账户 admin/admin123)若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功提示前端安装完node后,最好设置下淘宝的镜像源,不建议使用cnpm(可能会出现奇怪的问题)部署系统因为本项目是前后端分离的,所以需要前后端都部署好,才能进行访问后端部署bin/package.bat 在项目的目录下执行然后会在项目下生成 target文件夹包含 war 或jar1、jar部署方式使用命令行执行:java –jar xxxx.jar 或者执行脚本:bin/run.bat2、war部署方式pom.xml packaging修改为war 放入tomcat服务器webapps提示SpringBoot去除内嵌tomcat前端部署当项目开发完毕,只需要运行一行命令就可以打包你的应用# 打包正式环境npm run build:prod# 打包预发布环境npm run build:stage构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 ***.js 、***.css、index.html 等静态文件。通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。环境变量所有测试环境或者正式环境变量的配置都在 .env.development (opens new window)等 .env.xxxx文件中。它们都会通过 webpack.DefinePlugin 插件注入到全局。常见问题如果使用Mac 需要修改application.yml文件路径profile如果使用Linux 提示表不存在,设置大小写敏感配置在/etc/my.cnf 添加lower_case_table_names=1,重启MYSQL服务如果提示当前权限不足,无法写入文件请检查profile是否可读可写,或者无法访问此目录

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧