Tag: codesourcery

编译ARM NEON时出现未知的GCC错误(严重)

我有一个基于ARM NEON Cortex-A8的处理器目标。 我通过使用NEON来优化我的代码。 但是当我编译我的代码时,我得到了这个奇怪的错误。 不知道如何解决这个问题。 我正在尝试使用主机上的Code Sourcery(PART2)编译以下代码(第1部分)。 我得到了这个奇怪的错误(PART3)。 我在这里做错了吗? 任何人都可以编译它,看看他们是否也得到相同的编译错误? 奇怪的是,在代码中,如果我注释掉else if(step_size == 4)代码的一部分,那么错误就会消失。 但是,遗憾的是我的优化并不完整,所以我必须拥有它。 起初我认为它是CodeSourcey编译器(在我的主机上)的问题,所以我直接在我的目标上编译程序(我的目标在Ubuntu上运行)。 我在那里使用了gcc,再一次,我得到了同样的错误,当我注释掉else if(step_size == 4)部分时,错误就消失了。 救命! 第1部分 #include #include”arm_neon.h” #define IMAGE_HEIGHT 480 #define IMAGE_WIDTH 640 float32_t integral_image[IMAGE_HEIGHT][IMAGE_WIDTH]; float32x4_t box_area_compute3(int, int , int , int , unsigned int , float); inline int min(int, int); int main() { box_area_compute3(1, 1, 4, […]

GCC别名在翻译单元-AKA-之外运行,这甚至是适合这项工作的工具吗?

我正在使用STR32(Cortex-M3)上的FreeRTOS,并使用ST的CMSIS库来引导所有内容。 CMSIS库在启动“.s”文件中定义弱符号SVC_Handler 。 必须在某处重写它才能将ISR置于中断向量表中。 FreeRTOS定义了vPortSVCHandler ,这是我想要处理SVC中断的ISR。 我想使用我的应用程序代码(即没有修改FreeRTOS或CMSIS源代码)将两者“粘合”在一起。 我认为别名是工作的正确工具,所以我尝试了这个(在一个单独的源文件main.c中): void SVC_Handler(void) __attribute__ ((alias (“vPortSVCHandler”))); 这导致: error: ‘SVC_Handler’ aliased to undefined symbol ‘vPortSVCHandler’ 事实certificate,根据GCC文档http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html ,为了使用alias属性,您不能在翻译单元之外别名。 所以我想我会尝试将符号extern到main.c中,如下所示: extern void vPortSVCHandler( void ) __attribute__ (( naked )); void SVC_Handler(void) __attribute__ ((alias (“vPortSVCHandler”))); 这会产生相同的错误。 有什么建议??? 我真的想避免修改任何一个库。 我知道我可以编写一个简单调用vPortSVCHandler的函数SVC_Handler ,但这可能vPortSVCHandler ISR增加不必要的开销(可能取决于优化设置)。 注意:FreeRTOS示例通过自定义启动文件实现此目的。 我正在寻找一种方法来从C 或我的链接器脚本执行此操作。 编译器版本:gcc版本4.5.2(Sourcery G ++ Lite 2011.03-42) 目标:arm-none-eabi

使用动态库交叉编译C代码时出错

我有两个文件: lib.c #include void hi() { printf(“Hi i’m a library function in lib.so\n”); } 和main.c #include #include /* based on Jeff Scudder’s code */ int main() { void *SharedObjectFile; void (*hi)(); // Load the shared libary; SharedObjectFile = dlopen(“./lib.so”, RTLD_LAZY); // Obtain the address of a function in the shared library. ciao = dlsym(SharedObjectFile, “hi”); […]