查看: 3709|回复: 10

[已解决] 关于PE生成Keil项目的奇怪问题(已解决)

[复制链接]

该用户从未签到

23

主题

122

帖子

0

注册会员

Rank: 2

积分
177
最后登录
1970-1-1
发表于 2015-1-26 16:19:52 | 显示全部楼层 |阅读模式
本帖最后由 ltm 于 2015-1-28 15:35 编辑

我原有一个项目,想要改动。为方便起见,将该项目文件整体复制到另一目录下,然后用PE在这个复制目录中作改动。改完以后自动生成Keil项目,编译没问题,但连接时却提示新生成的组件函数未定义,如提示:
.\UVBuild\BlueTooth-FigOxi.axf: Error: L6218E: Undefined symbol GPIO1_OnPortEvent (referred from gpio1.o).
.\UVBuild\BlueTooth-FigOxi.axf: Error: L6218E: Undefined symbol SM1_OnBlockReceived (referred from sm1.o).
.\UVBuild\BlueTooth-FigOxi.axf: Error: L6218E: Undefined symbol SM1_OnBlockSent (referred from sm1.o).
.\UVBuild\BlueTooth-FigOxi.axf: Error: L6218E: Undefined symbol SM1_RxDMA_Deinit (referred from sm1.o).
上述几个symbol都是新增加的,不知何故。
我知道答案 目前已有10人回答
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-1-27 09:28:51 | 显示全部楼层
估计是你没有将PE工程与KEIL项目设置成联动,这个联动设置可以将PE工程中新增加代码自动添加到KEIL中,这个联动设置好像是在生成KEIL项目弹出的界面,你仔细看一下各个选项的说明。
回复 支持 反对

使用道具 举报

该用户从未签到

23

主题

122

帖子

0

注册会员

Rank: 2

积分
177
最后登录
1970-1-1
 楼主| 发表于 2015-1-27 16:13:33 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-1-27 09:28
估计是你没有将PE工程与KEIL项目设置成联动,这个联动设置可以将PE工程中新增加代码自动添加到KEIL中,这个 ...

设成联动了。
这个问题的前三项已经解决了,是因为Events.c文件中extern C{ }的前后两括号符不匹配。因为该文件中原来有代码,新生成的函数与原有函数重名,但愿有的还保留着,所以上述编译器指令的结束位置不正确了。
但最后一个问题,即:
Undefined symbol SM1_RxDMA_Deinit (referred from sm1.o).
这个确实是问题了,还没解决。这个 SM1_RxDMA_Deinit函数我反复查看过了,确实没定义,但不知怎的就引用了。在PE中的SM1_RxDMAMAChannel_LDD项目下的Methods选项页里有Deinit一栏,但却是失效的,无法改变,真不知该如何解决了。请给予帮助。
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-1-27 17:05:22 | 显示全部楼层
PE不能使能1. 可能你在PE参数时没有使能,2. Component可能需要更新,你可以通过更新整个PE试试。
回复 支持 反对

使用道具 举报

该用户从未签到

23

主题

122

帖子

0

注册会员

Rank: 2

积分
177
最后登录
1970-1-1
 楼主| 发表于 2015-1-27 17:32:28 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-1-27 17:05
PE不能使能1. 可能你在PE参数时没有使能,2. Component可能需要更新,你可以通过更新整个PE试试。 ...

我的PE是最新版的,刚升过级。
请问应该在PE的哪里设置参数使能?
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-1-28 09:28:39 | 显示全部楼层
ltm 发表于 2015-1-27 17:32
我的PE是最新版的,刚升过级。
请问应该在PE的哪里设置参数使能?

我说的参数设置就是在Component Inspector窗口中设置的。
回复 支持 反对

使用道具 举报

该用户从未签到

23

主题

122

帖子

0

注册会员

Rank: 2

积分
177
最后登录
1970-1-1
 楼主| 发表于 2015-1-28 09:50:02 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-1-28 09:28
我说的参数设置就是在Component Inspector窗口中设置的。

真是没辙了。我在PE中把SPI组件删掉,再把与之相关的.c文件、.h也删掉,重新再添加SPI Master组件,重新生成项目,结果还是照样,问题依旧。是不是PE在这有Bug啊?
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-1-28 10:55:21 | 显示全部楼层
ok,你把最新的问题情况详细的列一下。
然后把PE工程上传一下。
回复 支持 反对

使用道具 举报

该用户从未签到

23

主题

122

帖子

0

注册会员

Rank: 2

积分
177
最后登录
1970-1-1
 楼主| 发表于 2015-1-28 11:04:59 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-1-28 10:55
ok,你把最新的问题情况详细的列一下。
然后把PE工程上传一下。

我是想用DMA的方式访问SPI。刚才又试了一下,把SPI和DMA组件全都移除,把相关程序文件全都删掉,再重新生成,问题依旧。
ps:怎么上传PE工程?是否把整个工程目录都上传?
回复 支持 反对

使用道具 举报

该用户从未签到

23

主题

122

帖子

0

注册会员

Rank: 2

积分
177
最后登录
1970-1-1
 楼主| 发表于 2015-1-28 13:46:52 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-1-28 10:55
ok,你把最新的问题情况详细的列一下。
然后把PE工程上传一下。

其实问题也很简单,就是添加一个SPI Master组件,然后把其Tx、Rx都用DMA方式,你可以照此试试看会不会出问题。我这出问题的是Rx部分,总是在SM1.c文件中调用一个SM1_RxDMA_Deinit函数,而该函数总是不予定义。你可以照我说的在PE中操作一下看看。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-22 10:24 , Processed in 0.112039 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表