Henjay724 发表于 2014-3-5 21:52:53

Jordan?? 发表于 2014-3-5 22:03:53

gcc编译器的话加-fpic是试试看

ivvy 发表于 2014-3-5 22:18:41

参考了韦东山的SDRAM,链接时用arm-linux-ld -Ttext (代码段起始地址) (要链接的文件*.o) -o ***_elf,然后再去生成二进制文件。具体执行到哪一行他是自己数的,不知道管不管用。

Gorgon_Meducer 发表于 2014-3-5 22:49:03

将这个函数所要用到的寄存器地址作为函数形参传递进去。
比如
void function(uint32_t volatile *pwReg)
{
    (*pwREG) |= 0x01;
    ...
}

Henjay724 发表于 2014-3-6 17:11:03

Henjay724 发表于 2014-3-6 17:12:20

Jordan?? 发表于 2014-3-6 17:21:05

Henjay724 发表于 2014-3-6 17:12
嗯,这是一个办法,但完全依赖编译器,代码要是做到跨平台就行不通了

现在哪个操作系统还有不支持gcc的吗{:lol:}

tiger5 发表于 2014-3-6 17:24:28

PIC单片机。
KEIL里有分散加载文件,也可以定义。

huangxiaowei 发表于 2014-4-16 14:38:05

   顶一下

ground 发表于 2014-4-16 14:46:07

既然你知道要拷贝的地址,那就把这个地址转化为函数运行就行了。
页: [1]
查看完整版本: ARM 如何将一段操作GPIO寄存器的代码变成"位置无关"代码?