打印

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

[复制链接]
9634|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未做任何修改,就是编译通不过,其它的工程都没问题,不知道什么地方的设置不对吗?

使用特权

评论回复
5
blackhill|  楼主 | 2010-3-15 15:01 | 只看该作者
在common.c 中包含文件core_m3.h,里边有 声明
void __set_MSP(uint32_t mainStackPointer)

使用特权

评论回复
6
blackhill|  楼主 | 2010-3-15 15:07 | 只看该作者
另找了一台机器,安装uVision4,重新载入工程,仍然不行

使用特权

评论回复
7
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里。

使用特权

评论回复
8
pkat| | 2010-3-15 20:56 | 只看该作者
直接在你的主函数里直接重新定义一次,再编译试试

使用特权

评论回复
9
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

依然通不过

使用特权

评论回复
10
blackhill|  楼主 | 2010-3-16 08:54 | 只看该作者
检查OBJ目录内确实只有core_cm3.crf core_cm3.crf.d文件,没有core_cm3.o文件,但其它的都有.o文件
为什么有的机器可以,我这台不行呢?

使用特权

评论回复
11
blackhill|  楼主 | 2010-3-16 09:37 | 只看该作者
发现只要有汇编的文件都不能生成.o文件,请问是不是版本的问题呀

使用特权

评论回复
12
blackhill|  楼主 | 2010-3-16 10:54 | 只看该作者
好像MDK在我机器里做了记号,在别的机器里可以**,但在我的机器里**不完全,不能编译内嵌汇编的文件

使用特权

评论回复
13
zcl_l| | 2013-12-24 08:48 | 只看该作者
我也遇到了,楼主怎么解决的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

46

帖子

1

粉丝