凯尔uVision项目移植到GNU工具链

13个新帖子/ 0
最后发表
mohit3112
离线
最后看到:1年9个月前
专家
加入:2014-08-04一点
凯尔uVision项目移植到GNU工具链

我使用应用程序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

JE_Dialog
离线
最后看到:6个月2周前
工作人员
加入:2013-12-05 14:02
你好,Mohit,

你好,Mohit,

本周我们的GNU专家已坏,诚然我自己没有太多经验的GNU。我在网上做了一个快速搜索:在GNU .obj文件可以链接吗?这个线程belwo暗示。

BR JE_Dialog

http://www.delorie.com/djgpp/v2faq/faq17_5.html

mohit3112
离线
最后看到:1年9个月前
专家
加入:2014-08-04一点
谢谢relpy,我得到了新的

感谢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/ +下载你能点我的资源,我可以编译器兼容

cverdier
离线
最后看到:6年7个月前
加入:2014-09-25 14:54
你好,

你好,

我已经得到了相同的结果,不能做广告时我编译工具链gcc -手臂没有eabi - 4 _8 - 2014第三季度。但是我可以运行代码(即。led闪烁)和它的工作。
我也可以确认uart司机不是使用工具链。我使用了转换脚本生成Makefile。我也做一些测试与da14580_beacon_3.40 - 2.6示例代码没有运气。

无论我示例代码使用当我设置cmd - > channel_map除了零我似乎崩溃模块……

任何想法?

cverdier
离线
最后看到:6年7个月前
加入:2014-09-25 14:54
我可以确认-fplugin

我可以确认-fplugin = tree_switch_shortcut_elf不兼容windows和mac版本的gcc -手臂没有eabi - 4 - _8 - 2014 q3,但只有在linux上。我没有试着linux机器上选择(我编译mac。)

cverdier
离线
最后看到:6年7个月前
加入:2014-09-25 14:54
这是我的Makefile

这是我的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美元$ @

mohit3112
离线
最后看到:1年9个月前
专家
加入:2014-08-04一点
嗨cverdier,

嗨cverdier,

我在mac还编译文件,甚至我认为ubuntu版本的工具链没有这个-fplugin = tree_switch_shortcut_elf选项(至少在我的版本)。我相信编译代码没有“tree_switch_elf”选项将不会工作,因为选择是用于优化里维埃拉的FSM实现波。我们疯狂的选择是构建一个版本的arm-none-gcc tree_switch_elf插件启用(试过arm-linux-gnueabi而回,但需要至少一个星期调试和编译gcc)。很快将更新相同吗

Mohit Maheshwari

cverdier
离线
最后看到:6年7个月前
加入:2014-09-25 14:54
我设法编译的

我设法“tree_switch_elf”选项编译使用GCC 4.9 mac,https://launchpad.net/gcc-arm-embedded/4.9。我把这个Makefile的变化:

#优化旗帜
CFLAGS + =操作系统-ftree-switch-shortcut

没有运气,同样在模块只要我使用cmd - > channel_map选择一个频道播放. .

ankitdaf
离线
最后看到:3年9个月前
加入:2015-09-03 20:14
tree-switch-shortcut没有

tree-switch-shortcut不再是一个插件如果我理解正确的话,它发生在默认情况下,现在是gcc的特性。海湾合作委员会的文件是一个部分源在gcc / gcc文件夹,你可以看看

cverdier
离线
最后看到:6年7个月前
加入:2014-09-25 14:54
有机会吗

有机会有一个更新在这个项目上像一个完整的配置使用收音机工作项目(包括Makefile &更新链接器脚本)使用GNU GCC吗?

在这个问题上的任何帮助将感谢!

谢谢:)

CoreyWilliamson
离线
最后看到:5年11个月前
加入:2014-10-10 06:29
你好,

你好,

有任何更新吗?

阅读应用注b - 024似乎暗示项目构建和作品,有人得到收音机使用gcc工具链吗?

谢谢

paul.deboer
离线
最后看到:2年2个月前
加入:2014-06-03 10:57
这个解决方案是使用

解决方案是使用这个工具链:
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 \”)”

mohit3112
离线
最后看到:1年9个月前
专家
加入:2014-08-04一点
你能确认hexfile吗

你能确认你hexfile生成的工作吗?