相同的源代码,相同的编译工具,ubuntu与windows xp,不同的行为,为什么?几乎相同的地图文件

时间:2013-08-22 11:01:26

标签: c linux windows map-files

我有一个问题。我有一个评估工具包和一个starter_kit程序,它与WINDOWS xp下IDE的工具套件插件非常兼容.IDE sous Ubuntu 12.0.4的相同工具套件插件确实可以工作但不能做同样的事情。没有? 仅供参考,我的工具是:

  • MCU:PIC24HJ128GP504
  • 电路板:PIC24H MCU的MPLAB STARTER KIT
  • 用于加载/调试的USB连接SKDE PIC24H SENSOR
  • IDE:MPLABX IDE v1.85
  • C编译器:XC16 V1.11
  • 源代码:pic24 H传感器演示的入门套件

在UBUNTU中,我使用XC16 C编译器在MPLAB X ide中编译并链接该源代码而没有任何错误,然后对器件进行编程,然后在OLED上显示Microchip徽标(启动练习),其他部分代码未执行(     主屏幕例如。)和OLED只是闪烁并重复显示Microchip徽标,同时闪烁。请告诉我它进入 RESET LOOP

奇怪的是,当我将操作系统从ubuntu更改为windows xp并使用安装在windows xp上的相同IDE以及相同的C编译器并对设备进行编程时,它工作正常并且不会进入这个看似重置的循环。它显示Microchip徽标(启动练习)并执行程序的其余部分(主屏幕)。 而且我不知道出了什么问题。 我用这个步骤来调试这个问题没有成功,我想知道如果你在我的情况下你会怎么做,如果你能帮助我找到我的问题。

  • 比较 map 文件(链接器输出): 两个文件几乎相同除了winXP的map有一个resetPRI函数,但ubuntu的映射使用reset(在我看来它是一个内存部分,而不是一个函数)。你可以看到地图文件的常见部分和下面的差异。
  

External Symbols in Program Memory (by address):

              0x000200                  __resetPRI 
Memory Configuration:

Name             Origin             Length             Attributes
data             0x000800           0x002000           a !xr
reset            0x000000           0x000004   
program          0x000200           0x015600    

LOAD libp24HJ128GP504-elf.a


.reset            0x000000          0x4 
                  0x000000          0x2 SHORT 0x200 ABSOLUTE (__reset)
                  0x000001          0x2 SHORT 0x4
                  0x000002          0x2 SHORT 0x0 ((ABSOLUTE (__reset) >> 0x10) & 0x7f)
                  0x000003          0x2 SHORT 0x0

.text             0x000200        0xf06



libpic30-elf.a(crt0_standard.o)
              0x000200                  __reset (difference:from ubuntu map file)
              0x000200                  __resetPRI (difference:from winxp map file)
build/default/production/_ext/1360937237/**Main.o** 

_0x40c515645214dac2 (difference:from ubuntu map file)
_0213CF005214c228   (difference:from winxp map file)
                    0x2600        0x1c0
 _0x40c515645214dac2  (difference:from ubuntu map file)
 _0213CF005214c228   (difference:from winxp map file)
                    0x2600        0x1c0 build/default/production/_ext/1360937237       /Accelerometer.o   (ONE function in the program )  
                0x2600                  _BufferA

  _0x40c515c05214dac2  (difference:from ubuntu map file)
_0213D1205214c228       (difference:from winxp map file)

任何想法我应该在哪里寻找问题将不胜感激。

0 个答案:

没有答案