Палыч 7 14 ноября, 2008 Опубликовано 14 ноября, 2008 · Жалоба При таких установках ошибка Это - вполне нормально :) : раньше данные не помещались в xdata - теперь они не помещаются в data. Нужно приписать спицификатор pdata (или xdata) к некоторым данным, чтобы не все они пытались влезть в data... P.S. При установке модели памяти "Small" данные без спецификатора области размещения - размещаются в data P.P.S. При установке модели памяти "Large" данные без спецификатора области размещения - размещаются в xdata Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LLLLLLLLLL 8 14 ноября, 2008 Опубликовано 14 ноября, 2008 · Жалоба Это - вполне нормально :) : раньше данные не помещались в xdata - теперь они не помещаются в data. Нужно приписать спицификатор pdata (или xdata) к некоторым данным, чтобы не все они пытались влезть в data... P.S. При установке модели памяти "Small" данные без спецификатора области размещения - размещаются в data P.P.S. При установке модели памяти "Large" данные без спецификатора области размещения - размещаются в xdata Ну так я и говорю : мне надо так распихать переменные, чтобы ни в одном из банков не было больше, чем 256 штук. Кстати, в сегменте 'DATA' сейчас : data = 61.6 байт. Но, как я уже написал, локальные переменные в сегмент 'DATA' почему то никак не попадают. Только глобальные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 7 14 ноября, 2008 Опубликовано 14 ноября, 2008 · Жалоба Но, как я уже написал, локальные переменные в сегмент 'DATA' почему то никак не попадают. Только глобальные.Может быть я непонятно написал... Переменные (в том числе, локальные) попадут в data, если указать модель Small. Тогда, сегмент data - переполнится (переменных слишком много). Некоторым из них нужно приписать спецификатор pdata (xdata), чтобы часть из них размещалась в ERAM (но, чтобы такие переменные не занимали более 256 байт). Можно пойти от противного (неверное, это - хуже и сложнее)... Оставить модель Large, но части переменным присвоить спецификатор data: стольким переменным, чтобы в xdata осталось не более 256 байт переменных... P.S. В data разместить 256 байт переменных не получится - во первых data не более 128 байт, но часть из них занимает область регистров общего назначения и битовоадресуемая память. Да, кстати, ещё одно замечание. На потребную программе память влияет примененный линкер (лучше поставить галку "Use LX51") и уровень оптимизации (лучше поставить не менее "Level 2", а то и 4) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LLLLLLLLLL 8 25 ноября, 2008 Опубликовано 25 ноября, 2008 · Жалоба Может быть я непонятно написал... Переменные (в том числе, локальные) попадут в data, если указать модель Small. Тогда, сегмент data - переполнится (переменных слишком много). Некоторым из них нужно приписать спецификатор pdata (xdata), чтобы часть из них размещалась в ERAM (но, чтобы такие переменные не занимали более 256 байт). Можно пойти от противного (неверное, это - хуже и сложнее)... Оставить модель Large, но части переменным присвоить спецификатор data: стольким переменным, чтобы в xdata осталось не более 256 байт переменных... P.S. В data разместить 256 байт переменных не получится - во первых data не более 128 байт, но часть из них занимает область регистров общего назначения и битовоадресуемая память. Да, кстати, ещё одно замечание. На потребную программе память влияет примененный линкер (лучше поставить галку "Use LX51") и уровень оптимизации (лучше поставить не менее "Level 2", а то и 4) В общем, отказался я от этого МК51-го сейчас портирую (или как это там называется) прогу на PIC18. Сразу исчезли все проблемы с ОЗУ и вообще с железом. Еще раз подивился упорству фанатов классического МК51... Мазохисты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andy_ry 0 16 декабря, 2008 Опубликовано 16 декабря, 2008 · Жалоба ... Мазохисты. Сам такое слово! Отличный микроконтроллер! Keil отличная IDE, отличный компилятор, линкер, дебаггер!!! Просто у некоторых руки растут не из правильного места... Стартап должен использоваться именно для твоего микроконтроллера, иначе компилятор про твою дополнительную память ничего не знает!!! В Memory Model для твоего проекта надо поставить Compact: variables in PDATA (про зоопарк памяти у MCS-51 слышал?). И действительно часть данных ОСОБЕННО непрерывных - массивы (буферы приёма передачи и т.д.) описать как PDATA! Обрати внимание сколько занимает стек и укажи с запасом в стартапе. Реальный пример компиляции для микроконтроллера AT89C5115 (256 Bytes on-chip RAM and 256 Bytes ERAM): Program Size: data=155.1 xdata=131 code=15356. После добавления массива unsigned char pdata ucUartDataXXX[100] = {0}; Program Size: data=155.1 xdata=231 code=15459. Если и дальше будут проблемы - шли исходники, добью твой прожект :crying: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyS 0 23 марта, 2009 Опубликовано 23 марта, 2009 · Жалоба При компиляции At89c51rc ( 32 kB flash ) выдает такую ошибку: ****************************************************************************** * RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 4287H BYTE (831%) * ****************************************************************************** *** ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED LIMIT: 0800H BYTES Target not created Добрый день Появилась аналогичная проблема. 3 месяца 8.06 отработала нормально, а вот вчера слетела. Помогите. В архиве с клизьмой 3.22 нет правленного l51.dll. Т.е. я просто поставил девелопмент версии 8.06 и сгенерил лицензию. При таком раскладе она проработала 3 месяца без проблем. А теперь различные танцы с бубном не увенчались успехом. Подкиньте плиз действующую клизьму. В работе для 51 ядра я пользуюсь uVision2 оболочкой. Для ARM uVision3 оболочкой. Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 7 23 марта, 2009 Опубликовано 23 марта, 2009 · Жалоба Подкиньте плиз ...Для МК51 я использовал вот этот файл для версии 8.16а; с АРМ'ами - не работаю, но вроде тоже - подходит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyS 0 23 марта, 2009 Опубликовано 23 марта, 2009 · Жалоба Для МК51 я использовал вот этот файл для версии 8.16а; с АРМ'ами - не работаю, но вроде тоже - подходит Спасибо вам больше. У меня эта клизьма есть :) Я проделал следующее. Сначаласгенерил лицензию просто для devel kit. Удалил все obj и скомпилил проект. Оно нормально скомпилилось, но не собралось. Попросило проапгрейдить до PK51 (Professional). Сгенерил теперь для Prof. И перекомпилил. И все получилось. Раньше я сразу генерил для проф и удалял обж файлы. В этот раз повезло. Буду пробовать этот путь на работе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться