Переполнение адресного пространства

У меня возникла проблема с моим кодом. При компиляции кода получаю ошибку Address Space Overflow. Как я могу помочь решить эту проблему. Я использую компилятор keil и микроконтроллер AT89C51RD2, и это все места, которые уже израсходованы -

Размер программы: data=149,0 xdata=594 const=1136 code=8467.

Мог ли я израсходовать всю память?

Заявление об ошибке выглядит следующим образом:

Ошибка L107: переполнение адресного пространства

Пробел: пространство памяти (ДАННЫЕ)

Сегмент: имя-сегмента (имя_функции)

Длина: 000004H

Описание: Указанный сегмент не может быть расположен в указанном адресном пространстве. Сегмент игнорируется.

Спасибо


person Paul A.    schedule 16.04.2012    source источник
comment
Вы проверили файл карты?   -  person Morpfh    schedule 16.04.2012
comment
У вас есть 128 байт пространства в DATA. 149 это ерунда. esacademy.com/en/library/technical-articles-and-documents/   -  person Hans Passant    schedule 16.04.2012
comment
@ПолА. Для проверки распределения памяти и т. д. GCC имеет его (никогда не использовал keil), но должен иметь его. Документ для AT89C51RD2 имеет ограничения.   -  person Morpfh    schedule 16.04.2012
comment
- также посмотрите комментарии г-на Пассана ниже. (и выше); похоже, они больше на информативном пути.   -  person Morpfh    schedule 16.04.2012
comment
@Rune просто проверяет файл карты, но как я могу использовать его для решения проблемы, потому что я никогда раньше им не пользовался.   -  person Paul A.    schedule 16.04.2012
comment
@Hans: Это похоже на ответ для меня (на самом деле ответ) - лучше опубликовать как один, а не как комментарий, иначе кто-то другой может присвоить себе заслуги.   -  person Clifford    schedule 16.04.2012
comment
Спасибо всем. Я перешел по ссылке, данной Гансом keil.com/support/docs/1241 , и попал на этот keil.com/forum/13193. Что я просто сделал, так это проверил те функции, которые были переполнены, и объявил эти переменные как xdata, основываясь на том, что я прочитал @ 13193. Это решило проблему. Спасибо всем еще раз.   -  person Paul A.    schedule 16.04.2012
comment
@Rune: обычно файл карты не создается, если компоновщик не может создать двоичный файл.   -  person Michael Burr    schedule 17.04.2012
comment
@MichaelBurr: Да, в этом есть логика :). Однако похоже, что ошибка L107 не помешала созданию файлов карты (на основе документа keil). Возможно, я ошибаюсь.   -  person Morpfh    schedule 17.04.2012
comment
@Rune: я также не могу говорить о специфике инструментов Keil, но что будет содержать файл карты? Я полагаю, чтобы избежать лжи, ему пришлось бы генерировать какие-то записи «без адреса» для некоторых материалов. Я думаю, что это можно было бы сделать, но это казалось бы ненужным и не слишком полезным. Но, возможно, я что-то упускаю.   -  person Michael Burr    schedule 17.04.2012
comment
@Micheal: 8051 адреса пространства DATA являются 8-битными, поэтому действительные адреса могут быть сгенерированы, если переполнение происходит из-за физического ОЗУ (в данном случае 128 байтов), а не из-за архитектурного ограничения в 256 байтов.   -  person Clifford    schedule 17.04.2012


Ответы (1)


Обратите внимание на ссылки: http://www.keil.com/support/docs/1481.htm

person Stuart Siegler    schedule 16.04.2012