新手请教:AN2557中关于 STM32 IAP的编译

[复制链接]
10961|12
 楼主| blackhill 发表于 2010-3-15 08:40 | 显示全部楼层 |阅读模式
新手学习中。。。。。
现将AN2557下载下来,直接运行工程an2557\STM32F10x_AN2557_FW_V3.1.0\Project\IAP\RVMDK\IAP.uvproj,编译报错如下:

linking...
.\Obj\STM3210B-EVAL.axf: Error: L6218E: Undefined symbol __set_MSP (referred from common.o).
Target not created

我使用的是MDK4.0,请教什么原因,如何解决?
 楼主| blackhill 发表于 2010-3-15 13:48 | 显示全部楼层
本帖最后由 blackhill 于 2010-3-15 13:49 编辑

在可编译的工程中加入如下内容
#define ApplicationAddress    0x8002000
   __set_MSP(*(__IO uint32_t*) ApplicationAddress);
编译时就会就会出现
linking...
.\Obj\STM3210B-EVAL.axf: Error: L6218E: Undefined symbol __set_MSP (referred from main.o).

而__set_MSP()
在core_m3.c中已经定义了:
__ASM void __set_MSP(uint32_t mainStackPointer)
{
  msr msp, r0
  bx lr
}

请问问题出在哪里呢?
ShakaLeo 发表于 2010-3-15 14:12 | 显示全部楼层
是不是没声明void __set_MSP(uint32_t mainStackPointer)?
 楼主| blackhill 发表于 2010-3-15 14:52 | 显示全部楼层
声明了,AN2557未做任何修改,就是编译通不过,其它的工程都没问题,不知道什么地方的设置不对吗?
 楼主| blackhill 发表于 2010-3-15 15:01 | 显示全部楼层
在common.c 中包含文件core_m3.h,里边有 声明
void __set_MSP(uint32_t mainStackPointer)
 楼主| blackhill 发表于 2010-3-15 15:07 | 显示全部楼层
另找了一台机器,安装uVision4,重新载入工程,仍然不行
ShakaLeo 发表于 2010-3-15 15:26 | 显示全部楼层
楼主自己在common.c中加入了包含core_cm3.h的语句吗?
common.c中包含了stm32f10x.h, stm32f10x.h中包含了core_cm3.h,所以不用自己改头文件应该没问题。
没病不死人啊,应该是哪有错误,只是楼主还没发现,呵呵。实在不行,可以自己写一个功能与__SET_MSP()这个函数功能相同的函数,名字改一下,然后在程序里把__SET_MSP替换为自己写的函数,程序里好像只有两个地方调用了__SET_MSP,一个在在main.c 里一个在common.c里。
pkat 发表于 2010-3-15 20:56 | 显示全部楼层
直接在你的主函数里直接重新定义一次,再编译试试
 楼主| blackhill 发表于 2010-3-16 08:51 | 显示全部楼层
我没有修改文件头,只是将工程直接拿来编译哦
真是奇了怪了,又找了一台机器编译通过
但是在自己这台机器机器上将程序卸载再安装再卸载卸载再安装,现在安装最新的MDK4.10或MDK3.2还是都不行
现在提示改了
Build target 'STM3210B-EVAL'
compiling common.c...
compiling download.c...
compiling main.c...
compiling stm32f10x_it.c...
compiling ymodem.c...
compiling stm32f10x_usart.c...
compiling stm32f10x_flash.c...
compiling stm32f10x_gpio.c...
compiling stm32f10x_rcc.c...
compiling stm32f10x_wwdg.c...
compiling stm32f10x_exti.c...
compiling misc.c...
compiling system_stm32f10x.c...
compiling core_cm3.c...
compiling stm32_eval.c...
assembling startup_stm32f10x_md.s...
linking...
.\Obj\STM3210B-EVAL.axf: error: L6002U: Could not open file .\obj\core_cm3.o: No such file or directory
Target not created

依然通不过
 楼主| blackhill 发表于 2010-3-16 08:54 | 显示全部楼层
检查OBJ目录内确实只有core_cm3.crf core_cm3.crf.d文件,没有core_cm3.o文件,但其它的都有.o文件
为什么有的机器可以,我这台不行呢?
 楼主| blackhill 发表于 2010-3-16 09:37 | 显示全部楼层
发现只要有汇编的文件都不能生成.o文件,请问是不是版本的问题呀
 楼主| blackhill 发表于 2010-3-16 10:54 | 显示全部楼层
好像MDK在我机器里做了记号,在别的机器里可以**,但在我的机器里**不完全,不能编译内嵌汇编的文件
zcl_l 发表于 2013-12-24 08:48 | 显示全部楼层
我也遇到了,楼主怎么解决的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

46

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部