问题标签 [codesourcery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - 为什么使用 CodeSourcery gcc 编译时 TI 启动件示例无法正确清除 BSS 段
我在运行 TI AM3359arm 的 beaglebone 时遇到了严重的问题。我正在使用代码源来编译代码。我尝试编译其中一个名为 enet_lwip 的示例,它使用轻量级 IP (lwip) 来提供 http 服务器。
应用程序在某个时间点崩溃。通过调试我发现,正是这段代码负责它:
发生了一件非常有趣的事情:人们会期望,lwipInitFlag被初始化为0,因此函数调用 lwip_init();
好吧,即使是第一次调用 lwIPInit 函数时也不会发生这种情况。原因是变量lwipInitFlag 未设置为 0。
我想知道这是为什么。如果这样的初始化出现在代码中,编译器应该生成序列以使其为空。但可能是因为它前面有静态修饰符,所以它保持“原样”。为什么?
lwipInitFlag 位于 .bss 链接器部分,它指向 DDR 内存。我如何保证这样的静态分配会被初始化?
目前,我将破解 lwIP 的代码以查看它是否有效,但这只是对我的警告,库中的某处可能还有另一个静态声明的变量,这些变量没有被初始化。
任何提示如何解决这个问题?
对此添加更多信息:在您富有成效的提示之后,我认为我在它应该如何工作方面更加混乱。所以:确实,我不调用/链接 crt*.o。另一方面,TI starterware 平台包含初始化 asm 源,它会清除 BSS。它在地址 _bss_start 和 _bss_end 之间进行。
在查看链接器脚本时,一切看起来都很普通:
所以 _bss_start 是BSS 块之前的地址,而 _bss_end 是块的末尾。问题在于 Codesourcery 生成的地图。
在生成的地图文件中查看 BSS 的结尾时,我可以看到:
显然有“东西”。在 _bss_end 之后还有另一个 BSS 部分,其中包含很多预计会被清零的东西,但它没有被清零,因为清零在 _bss_end 给出的地址处完成。
这样做的可能原因是,pageTable是静态声明的,并且需要具有 16kiB 的边界地址:
因此,由于最后一个链接器声明的 BSS 段和 pageTable 之间存在间隙,它会将 _bss_end 放在 bss 段的中间。
现在的问题是,如何告诉链接器(我正在使用这个 arm-none-eabi-ld)_bss_end 应该真的在 BSS 的末尾而不是在中间的某个地方?
非常感谢
arm - Eclipse CDT - 错误:“未定义对 n 的引用”?
我不完全确定这是属于这里还是属于electronics.stackexchange.com,但由于这与IDE 设置和编译有关,我相信这是问我问题的最佳场所。
我在 Eclipse CDT 中有一个 C 项目设置。它使用 Mentor Graphics 的 Sourcery CodeBench Lite ARM 工具链。我已经安装了 Eclipse CDT 以及 GNU ARM Eclipse 插件,并尝试设置 ST.com STM32F4 Discovery 示例以在 Eclipse CDT 中编译。
编译时,编译器输出超过 200 个错误(为简洁起见缩短):
几乎所有这些项目都在stm32f4_discovery.h中定义,但由于某种原因,它们在编译期间没有得到解决。
我检查并仔细检查了该文件是否可用 C/C++ General > Paths and Symbols, Includes 选项卡,但不确定为什么事情没有解决。
该项目可在GitHub上找到,任何想要自己检查和尝试编译的人都可以使用。
我还在Github 上创建了一张票,因为我不想在这里充斥着输出信息。
只需克隆https://github.com/josefvanniekerk/stm32f4-discovery.git,将stm32f4-discovery/projects/demonstration导入 Eclipse CDT,然后尝试编译。
Sourcery CodeBench Lite 工具链是在 Mac OS X 上从arm-cs-tools-build.sh编译的,并且需要Eclipse GNU ARM 插件,并且可以使用他们的更新站点安装到 Eclipse 中
cygwin - Win7/cygwin下的codesourcery工具链找不到一些文件
我已经对此进行了搜索,但我发现的问题是关于让工具链工作的问题,我的问题是它适用于除少数几个目录之外的所有目录。我也不是在构建 Linux。
我正在尝试将项目从 Linux 机器转移到 Windows 以使人们开心。相同的项目在 Linux (Ubuntu 12.04) 下使用相同工具链的 Linux 二进制文件构建良好(我最近从 Mentor 的同一目录重新加载了两个工具链,以确保,请参阅下面的详细信息)。
我安装了 Cygwin,获取了包,设置了路径等。一般来说,该构建适用于 90% 的项目,但由于 make 遍历目录,它会找到除两个文件之外的所有文件(澄清一下,这两个是他们的第一个文件相应的目录,所以我认为问题将适用于整个目录)。下面的日志显示了第一次失败:
- 如果我将 lwip 从构建中取出,那么它会在下一个构建中爆炸
- 如果我从构建中取出下一个,那么其他所有内容(相当多)都会编译;然后链接器按预期在两个丢失的项目上失败。
更准确地说,例如
它找到 /home/Nadi/project/version-2.9/external/freertos/Source/portable/GCC/ARM_CM3_MPU/port.c
但不是 /home/Nadi/project/version-2.9/external/lwip/src/api/api_lib.c
从我正在运行 make 的目录中,“ls”找到编译器无法找到的文件。
日志:
细节:
- GCC 链:arm-none-eabi-gcc;gcc 版本 4.7.2 (Sourcery CodeBench Lite 2012.09-63)
- 赛格温:CYGWIN_NT-6.1-WOW64
eclipse - 使用 OpenOCD 调试 STM32F1xx 探索板(ST-Link)
我在让 OpenOCD 与我的 STM32F100RB 探索板(它使用 ST-Link)进行通信时遇到了一些问题。
我不习惯使用开源工具,因此我从来没有遇到过编程和调试嵌入式平台的问题。在过去的一周里,我遇到的问题比我想象的要多,只是试图让 IDE + FreeRTOS + Debugging 启动并运行。
我现在决定为我的嵌入式应用程序使用 Eclipse + Sourcery G++ Lite + OpenOCD。我编译了一个小应用程序(好的开始......),现在正在尝试使用 OpenOCD 进行编程和调试。当我这样做时,我收到以下错误:
我不知道从哪里开始,请帮助。另外:如果有人有更好的 STM32 开源/免费 IDE,它“支持”FreeRTOS(即有可用的演示/模板),我会很高兴听到它 :)
编辑:
好的,我认为我在第一次尝试时使用了错误的配置文件。现在我得到了这个:
floating-point - 使用 -mfloat-abi=hard 和 -mfpu=vfp/neon Codesourcery Lite 2013.05-24
为了使用 vfp 或 neon,我在交叉编译中添加了 -mfpu=vfp 和 -mfloat-abi=hard。该程序是一个非常简单的 hellofloat.cpp,然后不再使用 Sourcery CodeBench Lite 2013.05-24 进行编译。
编译指令:
我很困惑,因为 Codesorcery 应该支持 armhf 编译?
错误:
编译器
linker - Arm sourcery 工具链链接错误
我想在我的一个函数中使用标准 c 函数
错误来了
我的makefile是这个
在目标中,所有链接都失败了。我已经尝试了带有 arm-elf 工具链的示例,但我也遇到了一些错误。我已经用谷歌搜索了很多,但没有找到任何解决方案。
arm - 比较从不同版本的工具链生成的 ELF/二进制文件
我有两个通过'objcopy -O binary'从各自的ELF文件生成的二进制文件。ELF 文件是用 arm-none-linux-gnueabi 工具链构建的;一个来自 linaro gcc 4.6.2,另一个来自 codesourcery gcc 4.6.3。
我通过 Uboot 将二进制文件加载到内存中。虽然使用 Linaro 构建的程序按预期执行,但使用 codesourcery 构建的程序崩溃(很可能是这样),Uboot 提示符上没有错误,但程序似乎挂起。
从各个工具链的 binutils 中使用“arm-none-linux-gnueabi-readelf -S”并没有显示文件之间的太大差异,除了地址偏移。在我尝试在目标上进行运行时调试之前,是否有任何工具/技术可以帮助解决这种情况。
谢谢!
powerpc - Windows 上 Codesourcery 工具链中对 Power arch 的 Pthread 支持
IA32 Windows 上用于 powerpc 的 Codesourcery 工具链曾经有 libc 文件夹并支持 pthreads 等。现在来自 Mentor graphics 的 Codesourcery 使用 newlibc,因此省略了 libc 目录(具有 librt.a 和 libpthread.a)。要在 Windows 上为 powerpc e500v2 内核构建我的应用程序,我需要将它链接到 -lrt 和 -lpthread。我通过使用 Mentor graphics Codesourcery 中的工具链并从
1> 为 e500 mc 和其他 powerpc 内核提供 pthread 支持的 Applied Micro Circuits (AMCC) 工具链,但为 e500mc 构建的代码目前不能用于 e500v2。因此,在 e500v2 的工具链中添加他们的 libpthread.a 会出错
../../..\libpthread.a(pthread_create.o) 中的 TLS 引用与 powerpc-eabi/lib\libc.a(lib_a-reent.o) 中的非 TLS 引用不匹配
2> 来自 Codesourcery、ELDK 等的 linux 的 e500v2 工具链对 linux 有 pthread 支持,使用那些 libpthread.a 和 librt.a 也会产生上述错误。提到可以在下面的链接中删除非 TLS 参考错误,但是在遵循这些之后我找不到任何成功
用于 Windows 的所有 codesourcery 工具链中使用的 Red Hat newlib C 库不支持 powerpc-eabi 平台的 pthread(但对于 linux,ELDK 工具链支持 e500V2 的 pthread)。
我正在尝试为飞思卡尔 P1010-RDB 评估板构建。
如何使用托管在 IA32 Windows 上的 Codesourcery EABI 来获得对 powerpc e500v2 内核的 pthread 支持?
gcc - 使用 gcc 为 Powerpc 编译
使用 GCC 为 PowerPC (MPC5643L) 编译时,它无法识别 powerISA 2.03 指令。我该如何克服呢?更具体地说,这些大多是 e_ 格式的汇编指令。然而,ghs 和 windriver 并没有显示出这样的问题。
我知道 GCC 不支持 mpc56xx 系列,但在其他支持的目标中支持 powerISA 2.03。
c++ - Unable to build static library for arm6/arm7 using sourcery lite edition toolchain, C++, Eclipse on Mac OS?
I have been trying to develop static library (.a) for arm6/arm7 using C++, Eclipse and Sourcery Lite edition ARM tool-chain on Mac OS. I have successfully setup (compile/build/configured) sourcery lite toolchain for Eclipse and able to build static library for arm9 without any error. Somehow, it does not compile/build for arm6/arm7. I don't know why ? I get following compile time error: "selected processor does not support ARM mode `bx lr'" the same code works for arm9.
But when I check built static library using "lip -info" it says "lipo: archive with no architecture specification: libHelloCppLib.a (can't determine architecture for it)". Also I am unable to use that lib into my iPhone app. Can somebody help ? what could be the wrong into this ? Thank You.