Компилятор Keila забивает память нулями...
Сделал свой первый проект в KeiluVision. Написал на С++ простенькую программулину для AT89C2051, отладил, в Proteuse все работает как надо. Но обнаружилось, что НЕХ имеет длину почти 3 КВ, при том, что длина кода 982 байта. Посмотрел карту Code Memory и оказалось, что начиная с адреса 0003h до адреса 0800h все заполнено нулями. Называется эта гирлянда нулей гордым именем *GAP*. Весь остальной код располагается за этим *GAP*. Естественно, в 2К Flash 2051-й не влезает. Я в Keilе новичок, внятной литературы, как на этом форуме уже писалось, нет. Пробовал менять настройки Keilа - не помогло. 4 дня бороздил Интернет - глухо. Как бороться с такой засадой?
Результат компиляции:
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 806 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
C51 COMPILER V9.00 C_PROB_3
IDATA SIZE = ---- ----
BIT SIZE = 10 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
LINK MAP OF MODULE: C_prob 3 (C_PROB_3)
TYPE BASE LENGTH RELOCATION SEGMENT NAME
-----------------------------------------------------
* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"
DATA 0008H 0004H UNIT ?DT?C_PROB_3
000CH 0014H *** GAP ***
BIT 0020H.0 0001H.2 UNIT ?BI?C_PROB_3
0021H.2 0000H.6 *** GAP ***
IDATA 0022H 0001H UNIT ?STACK
* * * * * * * C O D E M E M O R Y * * * * * * *
CODE 0000H 0003H ABSOLUTE
0003H 07FDH *** GAP ***
CODE 0800H 0204H INBLOCK ?PR?MAIN?C_PROB_3
CODE 0A04H 008CH UNIT ?C_C51STARTUP
CODE 0A90H 0026H INBLOCK ?PR?BLINK_2_HL1?C_PROB_3
CODE 0AB6H 0026H INBLOCK ?PR?BLINK_2_HL2?C_PROB_3
|