vxworks运行正常,但在加载应用程序时
报出:“relocation value dose not fit in 26 bits”错误,一堆
是否符号表损坏,只要是加载任何程序都是,调用loadmodule时会出错
没见过此现象
如何入手查这问题???
好像由于内存扩大造成,现2片,各32M
相关branch instruction产生错误
在gcc编译中增加mlongcall,编译不通过,不识别longcall
“cc1.exe: Invalid option `longcalls'”,并且无源码,无法重新编译库!
将参数改为longcall或-mlong-calls后,可编译通过,但问题没有解决,可能和库有关。
找到几种解决办法供大家参考:
The easiest way around it is to limit the board memory to 64m, load your
program and do a memAddToPool for the rest of the memory.
Or use mlongcalls
Or link your app in with the kernel
or (I think) get the current release
不需要牺牲的。。。可以把高32M作为堆栈和动态块(用malloc等分配)来使用。在BSP中通过内存映射函数把这块内存添加到系统内存堆中。
也就是说,文本段的大小被限制为低32M内,使用26位寻址,但数据段则没有限制。
如果使用longcall,代价太大,不合适。。。。
网上看了一下,longcall有不少缺点,不太想用。
你说的内存映射函数在哪里?如何实现能说的具体点吗?
我在bsp中将bank模块定义为64M的,但size为32M,剩余的32M除了用memAddToPool()函数,还能增么添加进去?
谢谢yaopg,有空请你吃肯德基
[em10]应该是:LOCAL_MEM_SIZE 64M
USER_RESERVED_MEM 32M
RAM_HIGH_ADRS不要超过32M范围,在29M处比较合适吧。
在sysLib.c里面用memAddToPool函数添加,,,,很多参考bsp里面有例子。
启动后,用大型内存块分配来测试是否成功。
内存起始地址定义:0x30000000
LOCAL_MEM_SIZE 64M
USER_RESERVED_MEM 32M
RAM_LOW_ADRS 0x30001000
RAM_HIGH_ADRS 0x30200000
正常启动后,内存大小为32M,此时加载应用程序loadmodule()正常
但,如果添加到内存池后,通过memAddToPool(0x32000000,0x2000000);
加载应用程序会像以前一样报出:“Relocation value does not fit in 26 bits.”
而且感觉两部分内存没有连接上,memAddToPool之后,用malloc来测试,
发现动态加载32M不成功,加载两个20M成功,20M的内存指针分别位于低32M和高32M中
所有两块内存没有连接统一管理。
分支和带链接分支寻址+—32M,添加内存池后,寻址范围还是超过32M。
| 有奖活动 | |
|---|---|
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
我要赚赏金打赏帖 |
|
|---|---|
| PTC与NTC功能常规对比被打赏¥14元 | |
| 【分享开发笔记,赚取电动螺丝刀】关于3pin锂电池接口的介绍/使用被打赏¥16元 | |
| 以启明云端ESP32P4开发板实现TF卡读写功能被打赏¥28元 | |
| 【分享开发笔记,赚取电动螺丝刀】树莓派5串口UART0配置被打赏¥25元 | |
| 【STM32F103ZET6】17:分享在Rtos项目中断管理的使用经验被打赏¥23元 | |
| 【STM32F103ZET6】16:分享在中断中恢复串口任务,遇到的问题被打赏¥31元 | |
| 在FireBeetle2ESP32-C5上实现温度大气压检测及显示被打赏¥21元 | |
| 【分享开发笔记,赚取电动螺丝刀】SAME51双串口收发配置被打赏¥27元 | |
| Chaos-nano操作系统在手持式VOC检测设备上的应用被打赏¥37元 | |
| 【分享开发笔记,赚取电动螺丝刀】关于在导入第三方库lib时,wchart类型冲突的原因及解决方案被打赏¥30元 | |