This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DATA MODAL 选用LARGE模式后编译出错



我使用的是MCU是MSP430F5359,RAM资源有66K,分成两段地址,2400-63FF和F0000-FBFFF,我使用的编译器为IAR6.3,当DATA MODEL 选择为LARGE时出现编译错误。

Linking
Error[e18]: Range error,
Number out of range. Valid range is -32768 (-0x8000) to 65535 (0xFFFF).
File: E:\GLUCOSE\DILUTE\SOFT\mcu_dilute\sourcefiles\cstartup.s43, Line: 351
Source: MOV.W #(SFB DATA20_ID), CW1

Where $ = ?cstart_init_copy20 + 0x6 [0x8050]
in module "?cstart" (E:\GLUCOSE\DILUTE\SOFT\mcu_dilute\Debug\Obj\cstartup.r43),
offset 0x6 in segment part 22, segment CSTART
What: 0 + SFB(DATA20_ID) [0x25D5A]
Allowed range: 0xFFFF8000 - 0xFFFF
Operand: #no label found# [0x25d5a]
in module ?cstart (E:\GLUCOSE\DILUTE\SOFT\mcu_dilute\Debug\Obj\cstartup.r43),
Offset 0x0 in segment part 9, segment DATA20_ID
Error while running Linker

Total number of errors: 1
Total number of warnings: 8

cstartup.s43文件是IAR系统自带的,应该怎么处理呢?

  • 很久不用iar了。你的工程是官网例程,还是自己新建立的,还是其他来源?

    推荐使用ccs,毕竟是官方出品,兼容性更好

  • 是自己建立的工程,前面因为软件还不大,代码有110多K,数据用了15K,所以DATA MODAL 选择MEDIUM,一直都很正常,产品都已经卖了几年了,现在软件有新需求,需要使用更大RAM资源,需要启动后续高地址段的RAM,DATA MODAL才选择LARGE,编译就出错了。以前有使用过CCS,感觉编译效率比IAR差很多,就没用。