Ratmir 0 18 августа, 2011 Опубликовано 18 августа, 2011 · Жалоба Сделал свой первый проект в 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 6 18 августа, 2011 Опубликовано 18 августа, 2011 · Жалоба 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 = галка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ratmir 0 1 сентября, 2011 Опубликовано 1 сентября, 2011 · Жалоба Палыч, спасибо за ответ! У меня в проекте все с начала именно так и было установлено. На другом форуме подсказали, что нужно в настройках линкера покопаться, но где конкретно копать неясно. Метод "тыка" не помог, да и не любитель я этого метода. А вообще, тему можно закрывать, хотя, если бы удалось все-таки выяснить причину проблемы, было бы здорово. Проект я переделал под TINY 2313, благо цоколевки совпадают. 4 часа - и все заработало. С уважением к коллегам, Ratmir. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_NB 0 1 сентября, 2011 Опубликовано 1 сентября, 2011 · Жалоба А вообще, тему можно закрывать, хотя, если бы удалось все-таки выяснить причину проблемы, было бы здорово. Похоже на то, что Вы используете Keil без таблетки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ratmir 0 11 января, 2012 Опубликовано 11 января, 2012 · Жалоба Похоже на то, что Вы используете Keil без таблетки. У меня EVAL версия с офиц. сайта. Она до 2 кВ кода вроде не должна "болеть". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться