eclipse 同样代码 编译二进制文件不一样_单片机爬坑记-05-编译环境(完)

在搞定了 VSCode + Makefile 玩弄 TivaWare C 库的环境之后,我们很容易想到,是否能以同样的方式玩弄其他单片机库。基本套路是,确保系统环境能够直接通过命令行调用arm-none-eabi-gcc进行编译,然后通过Makefile来组织并完成编译。

目标对象:STM32全系列(ST)、NuTiny-SDK-M051(Nuvoton)、STC89C51(STC)。

1、STM32全系列(ST)

ST官方出了一款极为方便且跨平台的工具叫做STM32CubeMX,这很好,不需要再去下载各种BSP包慢慢裁剪、分割、修改,利用STM32CubeMX可以直接生成基于Makefile的工程,算是上手难度最低的官方库玩弄方式。

目前STM32CubeMX最新版本5.1.0。

首先,当然是用STM32CubeMX生成一个STM32工程代码,在STM32CubeMX中将硬件、时钟等等配置好之后,在Project Manager选项卡中,有“Toolchain / IDE”可以选择,看到可选项中有Makefile,就选它(此时“Toolchain Folder Location”不可更改,暂时不管),然后生成项目代码。

然后,打开项目文件夹,可以看到一个大大的Makefile,发现目标是让人激动的,按照一般操作,先打开Makefile文件检查一下编译链工具设置是否有问题,STM32CubeMX生成的Makefile依然是直接调用arm-none-eabi-gcc,环境同样没问题,很好,更激动了一点……但是这时候如果直接在命令行下make,结果可能是残酷的,在Windows 7 x64系统下,make会得到一个关于hex文件地址的错误,据称这是因为GNU工具链有个小bug,而通过检查Makefile文件的内容发现其中有

all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/%.hex $(BUILD_DIR)/$(TARGET).bin

$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
$(HEX) $< $@

这时候我们需要知道hex文件是否必须的,打开STC32的烧写软件可以看到能够接受的文件包括hex和bin,所以bin文件完全可以替代hex文件进行烧写,那接下来就好办,删除“all”所在行的$(BUILD_DIR)/%.hex,再将其余两行用#注释掉,保存,再make一下,OK!

针对开发过程中自行添加的库,头文件目录可在C_INCLUDES下方添加,C语言或汇编语言的代码文件可放在Src目录(main.c所在目录)下。

2、NuTiny-SDK-M051(Nuvoton)

Nuvoton官网下载的BSP包里是没有Makefile的,但是好在Nuvoton新出了一个魔改Eclipse的IDE,叫做NuEclipse,而Eclipse在编译时是可以生成Makefile的,所以我们就需要用NuEclipse生成Makefile。

喜剧的是,在Nuvoton推出的所有官方工具中,这魔改Eclipse版的NuEclipse,反倒是兼容性最好的,安装过程一路顺畅。

用NuEclipse新建一个工程(选择了芯片还得自己填容量,差评!),进到工程目录下可以发现工程目录没有包含官方库“StdDriver”中所有文件(虽然官方库文件出奇的少),而其他文件除了路径稍有不同之外基本和BSP中没什么区别,所以将BSP包中“LibraryStdDriversrc”目录下的文件全部放到工程的“Library”目录下,在NuEclipse中对Library目录右键执行以下刷新“Refresh”操作,然后Build All(快捷键Ctrl + B),此时就可以看到在工程目录下的“Debug”文件夹中有了makefile,通过对该makefile分析可以看到实质上这里是引入了相对目录,但这个makefile文件却又不在工程根目录下,所以我们需要再新增一个Makefile来调用执行这个“Debug”文件夹中的makefile。

“Debug”文件夹中的makefile文件复制到工程根目录下,用文本编辑器打开,先将内容清空,然后增加如下内容:

DIRS 

保存后就可以在工程根目录下直接make完成编译。

当需要更改(新增)工程的头文件和代码文件(一般都是需要的,将代码全部写入至main.c文件是很恶心人的做法)时,最简单的办法是直接将头文件全部放入“LibraryStdDriverinc”文件夹下,将代码文件全部放入“Library”文件夹下,亦即和工程中的标准库文件放在一起……

3、STC89C51(STC)

参考项目:https://github.com/haozewu/C51

并不推荐用VSCode对51单片机进行开发,也未实际测试。

--------------------------------------------------

后续有空再看MSP430G2和FRDM-KL02Z的库函数玩弄方法,此部分待续……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Eclipse二进制文件是指由Eclipse集成开发环境生成的可执行文件。在Linux下,Eclipse生成二进制文件通常是没有扩展名的,如上述引用所示。在使用Eclipse编译和运行项目,如果项目名包含扩展名(例如.hdu.c),则Eclipse可能无法正确识别该文件二进制可执行文件。 这可能导致在运行出现找不到二进制文件的错误。解决办法有两种:一是避免使用带有扩展名的项目名,另一种是手动创建一个运行配置,将命令写死以确保正确识别为二进制文件。 需要注意的是,上述讨论中的EclipseParser库是一个用于验证和读取Eclipse二进制文件内容的DLL库,它是通过按照二进制格式编写的。这个库可以验证和读取Eclipse二进制文件中的EGRID、INIT、UNRST等内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [linux下eclipse c++运行不了提示找不到二进制文件的解决方法](https://blog.csdn.net/bjrxyz/article/details/8974483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Eclipse油藏数值模拟软件的二进制文件格式解析](https://blog.csdn.net/slofslb/article/details/119176891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值