реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Keil забивает память нулями.
ratmir
сообщение Aug 18 2011, 09:53
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 18-08-11
Пользователь №: 66 778



Сделал свой первый проект в 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
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 18 2011, 16:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



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 = галка
Go to the top of the page
 
+Quote Post
ratmir
сообщение Sep 1 2011, 16:29
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 18-08-11
Пользователь №: 66 778



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

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

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

С уважением к коллегам, Ratmir.
Go to the top of the page
 
+Quote Post
_NB
сообщение Sep 1 2011, 18:24
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 92
Регистрация: 22-06-05
Из: Украина, г.Боярка
Пользователь №: 6 238



Цитата(ratmir @ Sep 1 2011, 18:29) *
А вообще, тему можно закрывать, хотя, если бы удалось все-таки выяснить причину проблемы, было бы здорово.

Похоже на то, что Вы используете Keil без таблетки.
Go to the top of the page
 
+Quote Post
ratmir
сообщение Jan 11 2012, 16:36
Сообщение #5





Группа: Новичок
Сообщений: 3
Регистрация: 18-08-11
Пользователь №: 66 778



Цитата(_NB @ Sep 1 2011, 21:24) *
Похоже на то, что Вы используете Keil без таблетки.

У меня EVAL версия с офиц. сайта. Она до 2 кВ кода вроде не должна "болеть".
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016