我使用应用程序b,一些编辑后我明白了工作到链接阶段,但在那之后我得到这个错误
CC . . / . . / . . / src /模块/ app / src / app_project / template_fh / app_template_proj.o
CC startup_ARMCM0.o
链接/ full_emb_sysram.axf
. . / . . / . . / patch_code / obj / ch_map。obj文件未确认:文件格式不能被识别
collect2:错误:ld返回1退出状态
:* * * (/ full_emb_sysram。axf]错误1
所以基本上不承认天主教gcc-arm-none-eabi补丁代码
任何评论我可能做错了什么吗?
谢谢你!
Mohit Maheshwari
你好,Mohit,
本周我们的GNU专家已坏,诚然我自己没有太多经验的GNU。我在网上做了一个快速搜索:在GNU .obj文件可以链接吗?这个线程belwo暗示。
BR JE_Dialog
http://www.delorie.com/djgpp/v2faq/faq17_5.html
感谢relpy,我有新的sdk 3.0.6,在这个精灵.obj文件格式和我能够编译项目并生成十六进制文件,但有一个优化选项-fplugin = tree_switch_shortcut_elf我arm-none-eabi编译器不支持,是为优化以R.W. FSM implemeted的代码。我删除的选项编译生成十六进制文件和我使用JLinkGDBServer gdb上传广告但设备不是我使用十六进制文件编译二进制文件从发射台项目”https://launchpad.net/gcc-arm-embedded/ +下载你能点我的资源,我可以编译器兼容
你好,
我已经得到了相同的结果,不能做广告时我编译工具链gcc -手臂没有eabi - 4 _8 - 2014第三季度。但是我可以运行代码(即。led闪烁)和它的工作。
我也可以确认uart司机不是使用工具链。我使用了转换脚本生成Makefile。我也做一些测试与da14580_beacon_3.40 - 2.6示例代码没有运气。
无论我示例代码使用当我设置cmd - > channel_map除了零我似乎崩溃模块……
任何想法?
我可以确认-fplugin = tree_switch_shortcut_elf不兼容windows和mac版本的gcc -手臂没有eabi - 4 - _8 - 2014 q3,但只有在linux上。我没有试着linux机器上选择(我编译mac。)
这是我的Makefile进行进一步的信息:
#
# Makefile必须定义以下变量,由common.mk使用:
# O:输出目录
# STACK_SIZE:堆栈保留的字节数
# HEAP_SIZE:准备堆的字节数
# CORTEX_M: Cortex-M模型的目标
# STARTUP_DEFS:定义的配置启动代码
# CFLAGS:国旗用于编译和链接
# LDFLAGS:国旗用于连接
# ROM_MAP_FILE:只读存储器映射文件
# OBJ:编译和链接的对象文件列表
# TARGET_ELF:目标名称(用于生成的图像)
#
#输出目录
O ? =
#栈大小
STACK_SIZE = 0 x0600
#堆大小
HEAP_SIZE = 0 x0100
#启动代码
CORTEX_M: = 0
启动= startup_ARMCM $ (CORTEX_M)。s
#启动配置
STARTUP_DEFS + = -D__STACK_SIZE = (STACK_SIZE) -D__HEAP_SIZE = (HEAP_SIZE)美元
# STARTUP_DEFS + = -D__START =主要
# STARTUP_DEFS + = -D__STARTUP_COPY_MULTIPLE
STARTUP_DEFS + = -D__STARTUP_CLEAR_BSS_MULTIPLE
# os -flto -ffunction-sections -fdata-sections编译代码的大小
# CFLAGS + = -flto
CFLAGS + = -ffunction-sections -fdata-sections -Wno-implicit-function-declaration
#链接代码大小
GC: = - wl - gc-sections
SRC = SRC /
构建:构建/
最高? = $ (shell pwd)
APP_SRC: =。/ app / b4。c \
/应用程序/系统/ periph_setup。c \
/应用程序/系统/ b4s_uart。c \
美元(SRC)模块/ app / SRC /应用程序。c \
美元(SRC)模块/ app / SRC / app_sec。c \
美元(SRC)模块/ app / SRC / app_sec_task。c \
美元(SRC)模块/ app / SRC / app_task.c
BOOT_SRC: = plf / refip / src / arch / boot /测量/ system_ARMCM0。c \
plf / refip / src / arch /主/祝福/ hardfault_handler.c
# BOOT_SRC_S: = plf / refip / src / arch / boot /测量/ boot_vectors.s
BOOT_SRC_S: =
ARCH_SRC: = plf / refip / src / arch /主/祝福/ arch_main。c \
plf / refip / src / arch /主/祝福/ jump_table。c \
plf / refip / src / arch /主/祝福/ arch_sleep。c \
plf / refip / src / arch /主/祝福/ nmi_handler。c \
plf / refip / src / arch /主/祝福/ arch_system.c
NVDS_SRC: =模块/ nvd / src / nvds.c
RWBLE_SRC: =模块/ rwip / src / rwip。c \
ip /祝福/会/ src / rwble / rwble.c
HOST_SRC: = ip /幸福/霍奇金淋巴瘤/ src /主机/ / gapm / gapm.c缺口
DRIVER_SRC: =模块/射频/ src / rf_580。c \
plf / / gpio / gpio.c refip / src /驱动程序
PROFILE_SRC: =
SRCS_C: = (APP_SRC)美元(addprefix (SRC),美元(BOOT_SRC)) \
(addprefix (SRC)美元,美元(ARCH_SRC)) \
(addprefix (SRC)美元,美元(NVDS_SRC)) \
(addprefix (SRC)美元,美元(RWBLE_SRC)) \
(addprefix (SRC)美元,美元(DRIVER_SRC)) \
(addprefix (SRC)美元,美元(PROFILE_SRC))
SRCS_S: = $ ((SRC),美元addprefix (BOOT_SRC_S))
HEADERS_DIR: =对话框/包括\
ip /祝福/霍奇金淋巴瘤/ src / hcih \
ip /祝福/霍奇金淋巴瘤/ src /主机/丙氨酸\
ip /祝福/霍奇金淋巴瘤/ src /主机/丙氨酸/ attc \
ip /祝福/霍奇金淋巴瘤/ src /主机/丙氨酸/ attm \
ip /祝福/霍奇金淋巴瘤/ src /主机/丙氨酸/丙氨酸\
ip /祝福/ hl \ / src /主机/差距
ip /祝福/霍奇金淋巴瘤/ src /主机/差距/ gapc \
ip /祝福/霍奇金淋巴瘤/ src /主机/差距/ gapm \
ip /祝福/霍奇金淋巴瘤/ src /主机/关贸总协定\
ip /祝福/霍奇金淋巴瘤/ src /主机/关贸总协定/ gattc \
ip /祝福/霍奇金淋巴瘤/ src /主机/关贸总协定/ gattm \
ip /祝福/霍奇金淋巴瘤/ src /主机/ i2c \
ip /祝福/霍奇金淋巴瘤/ src /主机/ i2c / i2cc \
ip /祝福/霍奇金淋巴瘤/ src /主机/ i2c / i2cm \
ip /祝福/霍奇金淋巴瘤/ src /主机/ l2c / l2cc \
ip /祝福/霍奇金淋巴瘤/ src /主机/ smp \
ip /祝福/霍奇金淋巴瘤/ src /主机/ smp / smpc \
ip /祝福/霍奇金淋巴瘤/ src /主机/ smp / smpm \
ip /祝福/霍奇金淋巴瘤/ src / rwble_hl \
ip /幸福/ / src /控制器/ em \
ip /幸福/ / src /控制器/ llc \
ip /祝福/会/ src /控制器/ lld \
ip /幸福/ / src /控制器/ llm \
ip /幸福/ / src / hcic \
ip /幸福/ / src / rwble \
模块/ app / api \
模块/ app / src \
模块/ app / src / app_utils / app_console \
模块/ app / src / app_utils / app_multi_bond \
模块/ app / src / app_utils / app_stream_queue \
模块/ app / src / app_profiles /﹐\
模块/ app / src / app_profiles /过时\
模块/ app / src / app_profiles /低音\
模块/ app / src / app_profiles /阀瓣\
模块/ app / src / app_profiles /贬低\
模块/ app / src / app_profiles /蹄\
模块/ app / src / app_profiles / ht \
模块/ app / src / app_profiles /内外加厚\
模块/ app / src / app_profiles /微处理器\
模块/ app / src / app_profiles /内\
模块/ app / src / app_profiles / prox_reporter \
模块/ app / src / app_profiles /保诚\
模块/ app / src / app_profiles / scppc \
模块/ app / src / app_profiles / spotar \
模块/ app / src / app_profiles \ /流
模块/ app / src / app_profiles / streamdatad \
模块/ app / src / app_profiles / streamdatah \
模块/共同/ api \
模块/ dbg / api \
模块/ gtl / api \
模块/ gtl / src \
模块/克/ api \
模块/克/ src \
模块/ nvd / api \
模块/射频/ api \
模块/ rwip / api \
plf / refip / src /拱\
plf refip / src / arch / boot /测量\
plf / refip / src / arch /编译器/测量\
plf / refip / src / arch /会/测量\
plf / refip / src / arch /主/祝福\
plf / accel \ / refip / src /驱动程序
plf / adc \ / refip / src /驱动程序
plf /电池\ / refip / src /驱动程序
plf / bme280 \ / refip / src /驱动程序
plf / coex \ / refip / src /驱动程序
plf / emi \ / refip / src /驱动程序
plf / gpio \ / refip / src /驱动程序
plf / i2c_core \ / refip / src /驱动程序
plf / i2c_eeprom \ / refip / src /驱动程序
plf / intel \ / refip / src /驱动程序
plf /发票\ / refip / src /驱动程序
plf /领导\ / refip / src /驱动程序
plf / pwm \ / refip / src /驱动程序
plf / rc5 \ / refip / src /驱动程序
plf /注册\ / refip / src /驱动程序
plf / spi \ / refip / src /驱动程序
plf / spi_flash \ / refip / src /驱动程序
plf / spi_hci \ / refip / src /驱动程序
plf / syscntl \ / refip / src /驱动程序
plf /计时器\ / refip / src /驱动程序
/ wkupct_quadec plf / refip / src /驱动程序
BUILD_DIR: = $((构建),美元addprefix(模块))
OBJ: = $ (patsubst src / % . c,构建/ % . o,美元(SRCS_C)) $ (patsubst src / % s,构建/ % . o,美元(SRCS_S))
包括:= $ (addprefix - $ ((SRC),美元addprefix (HEADERS_DIR)))我。应用程序i /应用程序/系统
#优化旗帜
# CFLAGS + =操作系统-fplugin = tree_switch_shortcut_elf
CFLAGS + =操作系统
CFLAGS + = $(包括)
CFLAGS + = - include da14580_config.h
打印- %:;@echo $ * = $(美元*)
#全局配置
/ misc / rom_symdef.txt ROM_MAP_FILE: =
LDFLAGS + = $ (USE_NANO) (USE_NOHOST) (LDSCRIPTS)美元(GC) (MAP)美元
#不要抱怨未知属性(即zero_init)
CFLAGS + = -Wno-attributes -Wno-unused
#检查:这个标志阻止了警告
#“用2字节wchar_t输出是使用4字节wchar_t;
#使用wchar_t值的对象可能会失败”
#重新如果事情与wchar_t字符串并不能像预期的那样运行。
LDFLAGS + = - wl - no-wchar-size-warning
src_cfiles: = $ (SRCS_C)
src_Sfiles: = $ (SRCS_S)
obj_cfiles: = $ (src_cfiles: c = . o)
obj_Sfiles: = $ (src_Sfiles: s = . o)
#补丁对象
patch_objs: =。/ patch_code / obj / gapm_util。obj \
。/ patch_code / obj / smpc_task。obj \
。/ patch_code / obj / smpc。obj \
。/ patch_code / obj / atts_task。obj \
。/ patch_code / obj / ch_map。obj \
。/ patch_code / obj / ke_task.obj
startup_obj: = $(启动:s = . o)
OBJ: = $ (obj_cfiles) (obj_Sfiles) (startup_obj)美元
#目标
TARGET_ELF: = full_emb_sysram
包括common.mk
- - - - - - - - - - - - - - - - - - - - - - - -
和我common.mk
#
#常用变量和recipies makefile。
#定义以下变量:
# CC: C编译器
# CPP: cross-preprocessor
# OBJCOPY: cross-objcopy
# USE_NANO:链接选择newlib-nano旗帜
# USE_SEMIHOST:链接启用semihosting旗帜
# USE_NOHOST:链接禁用semihosting旗帜
#地图:链接标记创建一个映射文件
# LDSCRIPTS:链接标志使用自定义链接脚本,生成的(LINK_SCRIPT)美元。s
#
CROSS_COMPILE = . . / toolschain / gcc -手臂没有eabi - 4 - _8 - 2014第三季度/ bin / arm-none-eabi -
CC = $ (CROSS_COMPILE) gcc
CPP = $ (CROSS_COMPILE) CPP
OBJCOPY = $ (CROSS_COMPILE) OBJCOPY
#冗长开关
V ? = 0
ifeq ($ (V), 0)
V_CC = @echo“CC”$ @;
V_CPP = @echo“CPP”$ @;
$ @ V_LINK = @echo“链接”;
V_OBJCOPY = @echo“OBJCPY”$ @;
V_CLEAN = @echo“干净”;
V_SED = @echo“战略经济对话”$ @;
V_GAWK = @echo“呆呆”$ @;
其他的
V_OPT = ' v '
endif
# newlib-nano使用。指定USE_NANO =禁用它
USE_NANO: = = nano.specs——规格
#使用semihosting
USE_SEMIHOST: = = rdimon.specs——规格
USE_NOHOST: = = nosys.specs——规格
#创建映射文件
= - wl地图,地图= (O) / lst /美元(TARGET_ELF) . MAP
ARCH_FLAGS = -mthumb改cortex-m $ (CORTEX_M)
#通用编译标志
CFLAGS + = (ARCH_FLAGS) (STARTUP_DEFS)化=美元gnu99
ifeq ($ (V), 2)
CFLAGS + =——冗长
LDFLAGS + = - wl,冗长
endif
ROM_SYMDEF: = rom.symdef
ROM_SYMBOLS: = rom.symbols
LINK_SCRIPT: = 580.摩门教
LDSCRIPTS: = - l。- t $ (LINK_SCRIPT)
:$ (O) / $ (TARGET_ELF)。十六进制(O) / (TARGET_ELF)美元。斌
清洁:
(V_CLEAN)文件美元(OBJ);rm - f $ (V_OPT)“$ $文件”;完成
@rm射频(V_OPT) (O)美元
@rm - f (V_OPT) (ROM_SYMDEF)美元(ROM_SYMBOLS) (LINK_SCRIPT)美元
@rm - f (V_OPT)美元(OBJ . o = .d)
运行:$ (O) /美元(TARGET_ELF)。斌
@ (cd $ (O) & & JLinkExe . . / loadbin.txt)
(O) /美元:
@mkdir - p (V_OPT) (O) /美元lst
#如何创建主精灵的目标
(O) /美元(TARGET_ELF)。axf: $ (O) / (ROM_SYMBOLS) (LINK_SCRIPT)美元美元(OBJ)
(V_LINK) (CC)美元(CFLAGS) (LDFLAGS)美元(OBJ)美元(patch_objs) - o $ @
#如何创建最终的十六进制文件
(O) /美元(TARGET_ELF)。十六进制:$ (O) / (TARGET_ELF) .axf美元
(V_OBJCOPY)美元(OBJCOPY) - o ihex < @美元
#如何创建最终的二进制文件
(O) /美元(TARGET_ELF)。本:$ (O) / (TARGET_ELF) .axf美元
(V_OBJCOPY)美元(OBJCOPY) - o二进制< @美元
#如何创建链接器脚本
(LINK_SCRIPT):美元(LINK_SCRIPT)。s
(V_CPP) (CPP)美元美元(CFLAGS)我。美元/ app - p < o $ @
#如何创建一个干净,已知符号列表排序,由ROM代码使用
(ROM_SYMDEF):美元(ROM_MAP_FILE)
$ (V_SED) sed - n - e ' s / * / / g p <美元| sed - e ' / ^ [,] / d ' | \
排序| dos2unix > $ @
#如何创建一个文件与已知的符号,用于链接器脚本
(ROM_SYMBOLS):美元(ROM_SYMDEF)
$ (V_GAWK)呆呆的{printf“% s = % s; \ n”, $ $ 3 $ $ 1}的< > @美元
包括美元(OBJ . o = .d):
#如何编译C文件
%。o: % . c
(V_CC) (CC)美元(CFLAGS) - c < o美元$ @
@rm - f * .d美元。*
@ $ (CC)毫米(CFLAGS) *美元。c > * .d美元
@mv - f $ *。d $ * .d.tmp
@sed - e ' s * |: | $ *。o: | < $ * .d。tmp > * .d美元
@sed - e ' s /。*://' -e 's/\\$$//' < $*.d.tmp | fmt -1 | \
sed - e ' s / ^ * / / ' e ' s / $ $ /: / > > * .d美元
@rm - f * .d.tmp美元
#如何编译汇编文件
%。o: % s
(V_CC) (CC)美元(CFLAGS) - c < o美元$ @
嗨cverdier,
我在mac还编译文件,甚至我认为ubuntu版本的工具链没有这个-fplugin = tree_switch_shortcut_elf选项(至少在我的版本)。我相信编译代码没有“tree_switch_elf”选项将不会工作,因为选择是用于优化里维埃拉的FSM实现波。我们疯狂的选择是构建一个版本的arm-none-gcc tree_switch_elf插件启用(试过arm-linux-gnueabi而回,但需要至少一个星期调试和编译gcc)。很快将更新相同吗
Mohit Maheshwari
我设法“tree_switch_elf”选项编译使用GCC 4.9 mac,https://launchpad.net/gcc-arm-embedded/4.9。我把这个Makefile的变化:
#优化旗帜
CFLAGS + =操作系统-ftree-switch-shortcut
没有运气,同样在模块只要我使用cmd - > channel_map选择一个频道播放. .
tree-switch-shortcut不再是一个插件如果我理解正确的话,它发生在默认情况下,现在是gcc的特性。海湾合作委员会的文件是一个部分源在gcc / gcc文件夹,你可以看看
有机会有一个更新在这个项目上像一个完整的配置使用收音机工作项目(包括Makefile &更新链接器脚本)使用GNU GCC吗?
在这个问题上的任何帮助将感谢!
谢谢:)
你好,
有任何更新吗?
阅读应用注b - 024似乎暗示项目构建和作品,有人得到收音机使用gcc工具链吗?
谢谢
解决方案是使用这个工具链:
https://launchpad.net/gcc -手臂embedded/4.9/4.9 - 2015第三季度更新
和改变-fplugin = tree_switch_shortcut_elf -ftree-switch-shortcut
可能你会得到下一个错误关于__weak,解决,通过添加-D__weak =“__attribute__((弱))”CFLAGS common.mk
和一个错误关于__nop(),通过添加- d解决这个“__nop ()”=“asm (\“NOP \”)”
你能确认你hexfile生成的工作吗?