Перейти к содержанию
    

Keil забивает память нулями.

Сделал свой первый проект в 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

CODE 0ADCH 0021H INBLOCK ?PR?OP_TK1?C_PROB_3

CODE 0AFDH 0021H INBLOCK ?PR?OP_TK2?C_PROB_3

CODE 0B1EH 0021H INBLOCK ?PR?OP_PNP1?C_PROB_3

CODE 0B3FH 0021H INBLOCK ?PR?OP_PNP2?C_PROB_3

CODE 0B60H 0021H UNIT ?C_INITSEG

CODE 0B81H 0019H INBLOCK ?PR?BLINK_1_HL1?C_PROB_3

CODE 0B9AH 0019H INBLOCK ?PR?BLINK_1_HL2?C_PROB_3

CODE 0BB3H 0010H INBLOCK ?PR?OP_BUT1?C_PROB_3

CODE 0BC3H 0010H INBLOCK ?PR?OP_BUT2?C_PROB_3

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Установить Device:

a) Menu -> Project -> Options for target

б) Выбрать вкладку Device

в) у производителя Atmel выбрать АТ89С2051

2. Установить параметры МК

а) Выбрать вкладку Target

б) Memory model = Small

в) Code ROM size = Small

г) Use on-chip ROM = галка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Палыч, спасибо за ответ!

У меня в проекте все с начала именно так и было установлено. На другом форуме подсказали, что нужно в настройках линкера покопаться, но где конкретно копать неясно. Метод "тыка" не помог, да и не любитель я этого метода.

 

А вообще, тему можно закрывать, хотя, если бы удалось все-таки выяснить причину проблемы, было бы здорово.

 

Проект я переделал под TINY 2313, благо цоколевки совпадают. 4 часа - и все заработало.

 

С уважением к коллегам, Ratmir.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вообще, тему можно закрывать, хотя, если бы удалось все-таки выяснить причину проблемы, было бы здорово.

Похоже на то, что Вы используете Keil без таблетки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже на то, что Вы используете Keil без таблетки.

У меня EVAL версия с офиц. сайта. Она до 2 кВ кода вроде не должна "болеть".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...