范围限制字节要求

时间:2018-11-21 15:30:51

标签: c linker linker-errors rom

我在一段简单的代码中就有一个链接错误,并且我知道问题出在哪里。

long long maxClampRange(long maxClamp, long LoopGainFactor, long LoopGain)
{
    long long tempMax = (long long)maxClamp;
    long long tempMaxClamp;
    tempMaxClamp = (tempMax << 24);
    tempMaxClamp *= (long long)LoopGainFactor/LoopGain;

    return tempMaxClamp;
}

当tempMax是64位长的long数据类型时,左移24会导致问题。

我想知道的是如何计算正确链接所需的ROM数量。

实际错误是

    lk166 E112: cannot locate 1 sections(s) 
    lk166 I455: requirement:0x10 bytes of ROM area in space spe:xc16x:code'
    lk166 I456: section type: ranged page restriction - any range of [0 .. 65536] with page alignment 65536 within range(s) 0xc0ba00-0xc0be00

我还没有找到一种方法来分解不使用32位长类型的代码就能使这项工作有效的代码。但这会导致一切正常运行,因为它的大小不足以容纳这种变化。

0 个答案:

没有答案