与SDCC

问题描述 投票:0回答:0
使用SDCC 3.0.0。 编译此代码

#include < pic16f84.h> void main(void) { TRISA0=0; RA0=1; }

收到这些警告。

daedalus@eurydice:〜/projects/pic $ sdcc -i/usr/share/share/sdcc/include/pic -p16f84test.c

c

/usr/share/sdcc/include/pic/pic/pic16f84.h:101:警告182:sfr'indf'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:101:警告182:sfr'indf'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:102:警告182:sfr'tmr0'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:102:警告182:sfr'tmr0'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:103:警告182:sfr'pcl'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:103:警告182:sfr'pcl'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:104:警告182:SFR“状态”的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:104:警告182:SFR“状态”的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:105:警告182:sfr'fsr'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:105:警告182:sfr'fsr'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:106:警告182:sfr'porta'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:106:警告182:sfr'porta'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:107:警告182:sfr'portb'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:107:警告182:sfr'portb'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:108:警告182:sfr'eedata'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic16f84.h:108:警告182:sfr'eedata'的绝对地址 可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:109:警告182:sfr'eeadr'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:109:警告182:sfr'eeadr'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:110:警告182:sfr'pclath'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:110:警告182:sfr'pclath'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:111:警告182:sfr'intcon'的绝对地址可能超出了范围。

/usr/share/sdcc/include/pic/pic/pic16f84.h:111:警告182:sfr'intcon'的绝对地址可能超出了范围。

?aslink-warning未定义的全局'_trisa_bits'由模块引用'test'

?aslink-warning未定定义的全局'_porta_bits'由模块引用'test'

有人可以帮我理解这些警告吗? 我应该在乎吗?

disclaimer:我从来没有从事pic

我的猜测是,编译器正在检测到分配给这些变量的地址(SFR的“特殊函数寄存器”)不在处理器的预期内存图内。 SFR语法看起来像是将寄存器变量掩盖到特定地址。 警告说这些地址似乎无效。 Many嵌入式编译器工具链包含某种“链接映射”命令文件,该文件告诉链接器在哪些物理地址中放置代码和数据。

此SDCC用户指南建议您可以使用“ .lkr”文件。 (请参阅第68页)。 确保这对您的特定处理器是正确的。 此外,该手册还说选择PIC的正确标志是

__sfr __at (0x80) P0;

。 您确定

-mpic16

选项正确吗?

embedded pic sdcc
© www.soinside.com 2019 - 2024. All rights reserved.