解决gcc编译链接含weak函数的库文件出现的一些BUG_2019/03/13

本文详细记录了在使用arm_none_eabi_gcc交叉编译STM32项目时遇到的中断处理异常问题,包括IAP程序与APP程序的编译、库文件生成和中断向量表的错误。通过分析和调试,最终发现是由于弱引用中断处理函数未被正确覆盖以及SysTick中断未关闭导致的问题。解决问题的关键在于理解中断处理机制并正确使用gcc编译选项。
摘要由CSDN通过智能技术生成

项目介绍

本项目包含IAP程序与APP程序。APP程序有部分共用代码(包括main\stm32标准库\RTOS\BSP)都编译进库中。另外部分特殊代码由其它程序生成后,连接共用代码库生成目标bin文件,通过IAP下载至FLASH中。

问题描述

1 使用keil编译生成的IAP程序
相同的APP代码,在keil工程中编译下载后可以正常执行(没有生成库,直接编译链接所有代码)。但是使用arm_none_eabi_gcc交叉编译工具链编译链接(先编译一部分代码生成库,再编译其它代码并与库链接生成目标bin文件。)则不能正常执行。
2 不使用IAP模式,直接编译APP程序
keil下仍一切正常,使用arm_none_eabi_gcc仍不正常。

开发环境

arm_none_eabi_gcc交叉编译工具链
自已开发的IAP下载工具
自己开发的图形化编译工具
自己开发的库文件生成工具

目标硬件

国霖电子生产的GPL-14MT工控板,板载stm32f103rbt6。

使用到的软件

STM32 ST-LINK Utility
keil rvmdk

使用到的调试工具

ST-Link V2

查阅的文档

《Cortex-M3权威指南》
《stm32用户手册》
《stm32f103RBT6芯片手册》

解决过程

1 确认一遍IAP工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值