搜索
bottom↓
回复: 10

快抓狂了的库调用问题

[复制链接]

出0入0汤圆

发表于 2009-4-4 23:45:07 | 显示全部楼层 |阅读模式
弄了一下午,弄不清出一个问题

用iar和liminary的开发板,都是用一个库文件,居然在一个工程文件里面能编译连接通过的函数,在另一个工程文件里面连接报错。

错误信息如下:
Error[Lp002]: relocation failed: Unknown relocation [54] encountered
     Kind    : R_ARM_THM_PC12[0x36]
     Location: mem:0x23c
               "SysCtlClockGet" + 0x17
               Module:  sysctl.o(driverlib.a)
               Section: 14 (.text)
               Offset:  0x14c
     Target  : mem:0x35c
               "??DataTable26"
               Module:  sysctl.o(driverlib.a)
               Section: 14 (.text)
               Offset:  0x26c
Error while running Linker

这个可能是什么问题呢,郁闷一下午了。呵呵

aaa1982

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2009-4-5 00:04:33 | 显示全部楼层
而且经常无缘无故的就进入Fault_Isr()了

调用了一个void
GPIOPinWrite(unsigned long ulPort, unsigned char ucPins, unsigned char ucVal)

GPIOPinWrite:
  000005FC  F8402021  STR          R2,[R0, R1,LSL #2]
  00000600  4770      BX           LR

R2是 ucVal, R0是ulPort, R1是ucPins

通过单步执行看R2,R0,R1的值,什么问题都没有,LR也指向了该返回的下一条地址。但是每次一执行到Bx LR,下一步就进入Fault_Isr()了,不知道什么原因


调用很多库函数都是这个问题,最后Bx LR直接进入Fault_Isr()了。

关键是在另外一个工程文件里面,什么问题都没有,都是一个库函数,着实让我很郁闷

aaa1982

出0入0汤圆

发表于 2009-4-5 00:35:44 | 显示全部楼层
那是经常的事

出0入0汤圆

 楼主| 发表于 2009-4-5 10:03:49 | 显示全部楼层
Alexkey:

能说得稍微清楚一点么,主要都是什么原因,怎么解决一下。如果就是上面那种无关痛痒的话,就别回了,省得我白激动一下。

aaa1982

出0入0汤圆

 楼主| 发表于 2009-4-5 11:23:00 | 显示全部楼层
请问IAR没有官方论坛么,上它的首页找了半天没找到,不知道是没有还是我没找到

感觉keil的官方论坛就很好,这样的话,快没有信心用IAR了

出0入0汤圆

发表于 2009-4-5 20:36:00 | 显示全部楼层
工程上传上来看看。

出0入0汤圆

 楼主| 发表于 2009-4-6 10:42:04 | 显示全部楼层
后来搞清楚了,还是库文件的问题

从luminary下载的库文件(8962-4053),使用安装以后出来的iar库文件(C:\StellarisWare\driverlib\ewarm\Exe\driverlib.a)报上面提到的错误,

我可能把这个文件拷到了
C:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\lib\luminary(这个目录也使自己定义的)
所以使用这个也报上面提到的错误


能用的库文件是
C:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\inc\Luminary\driverlib.a(不知道什么时候放进去的,方向是zlg开发板提供的一个老版本的)

当时以为用的是一个库文件,由于第二个地址和第三个地址有点像,没看清楚,所以搞错了,其实不是一个库文件。



上面的错误好像就是SysCtlClockGet()无法定位,把SysCtlClockGet()屏蔽掉就可以用,但是经常无缘无故进入Fault_Isr(),

不知道为什么用luminay提供的8962-4053会出上面的问题,我看了一下SysCtlClockGet()在相关的.h文件中有定义,而且在luminary 给的

PDF里面有详细的说明,不知道怎么搞的。

如果重现错误,只要下一个8962-4053的驱动安装包,用它的库函数,调用一下SysCtlClockGet()就会出现上面的错误。

出0入0汤圆

 楼主| 发表于 2009-4-6 10:46:06 | 显示全部楼层
点击此处下载 ourdev_433215.rar(文件大小:151K) (原文件名:2.rar)
还是传上来一个看一下吧。

库文件是我从lumianry官网上面下的,感觉怎么这么不靠普啊。

出0入0汤圆

发表于 2014-9-29 10:36:36 来自手机 | 显示全部楼层
我刚才遇到这个问题 我把工程选项里面的Target ->code和Data都设置为large就编译通过了 估计代码空间被限制了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 10:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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