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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Знатокам Кейла
Палыч
сообщение Nov 14 2008, 07:10
Сообщение #16


Гуру
******

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



Цитата(=L.A.= @ Nov 14 2008, 09:54) *
При таких установках ошибка
Это - вполне нормально smile.gif : раньше данные не помещались в xdata - теперь они не помещаются в data. Нужно приписать спицификатор pdata (или xdata) к некоторым данным, чтобы не все они пытались влезть в data...
P.S. При установке модели памяти "Small" данные без спецификатора области размещения - размещаются в data
P.P.S. При установке модели памяти "Large" данные без спецификатора области размещения - размещаются в xdata
Go to the top of the page
 
+Quote Post
=L.A.=
сообщение Nov 14 2008, 07:26
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 794
Регистрация: 4-09-06
Из: Москва(ЗелАО), РФ
Пользователь №: 20 055



Цитата(Палыч @ Nov 14 2008, 10:10) *
Это - вполне нормально smile.gif : раньше данные не помещались в xdata - теперь они не помещаются в data. Нужно приписать спицификатор pdata (или xdata) к некоторым данным, чтобы не все они пытались влезть в data...
P.S. При установке модели памяти "Small" данные без спецификатора области размещения - размещаются в data
P.P.S. При установке модели памяти "Large" данные без спецификатора области размещения - размещаются в xdata


Ну так я и говорю : мне надо так распихать переменные, чтобы ни в одном из банков не было больше, чем 256 штук. Кстати, в сегменте 'DATA' сейчас : data = 61.6 байт.
Но, как я уже написал, локальные переменные в сегмент 'DATA' почему то никак не попадают. Только глобальные.


--------------------
-Кто-то работает на совесть, а кто-то на других заказчиков.-
Go to the top of the page
 
+Quote Post
Палыч
сообщение Nov 14 2008, 08:24
Сообщение #18


Гуру
******

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



Цитата(=L.A.= @ Nov 14 2008, 10:26) *
Но, как я уже написал, локальные переменные в сегмент 'DATA' почему то никак не попадают. Только глобальные.
Может быть я непонятно написал... Переменные (в том числе, локальные) попадут в data, если указать модель Small. Тогда, сегмент data - переполнится (переменных слишком много). Некоторым из них нужно приписать спецификатор pdata (xdata), чтобы часть из них размещалась в ERAM (но, чтобы такие переменные не занимали более 256 байт).
Можно пойти от противного (неверное, это - хуже и сложнее)... Оставить модель Large, но части переменным присвоить спецификатор data: стольким переменным, чтобы в xdata осталось не более 256 байт переменных...

P.S. В data разместить 256 байт переменных не получится - во первых data не более 128 байт, но часть из них занимает область регистров общего назначения и битовоадресуемая память.

Да, кстати, ещё одно замечание. На потребную программе память влияет примененный линкер (лучше поставить галку "Use LX51") и уровень оптимизации (лучше поставить не менее "Level 2", а то и 4)
Go to the top of the page
 
+Quote Post
=L.A.=
сообщение Nov 25 2008, 08:08
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 794
Регистрация: 4-09-06
Из: Москва(ЗелАО), РФ
Пользователь №: 20 055



Цитата(Палыч @ Nov 14 2008, 11:24) *
Может быть я непонятно написал... Переменные (в том числе, локальные) попадут в 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... Мазохисты.


--------------------
-Кто-то работает на совесть, а кто-то на других заказчиков.-
Go to the top of the page
 
+Quote Post
Andy_ry
сообщение Dec 16 2008, 13:58
Сообщение #20





Группа: Новичок
Сообщений: 9
Регистрация: 29-03-07
Пользователь №: 26 595



Цитата(=L.A.= @ Nov 25 2008, 12:08) *
... Мазохисты.

Сам такое слово! Отличный микроконтроллер! 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.gif
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Mar 23 2009, 14:25
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(=L.A.= @ Nov 11 2008, 09:06) *
При компиляции 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 оболочкой.

Спасибо


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Mar 23 2009, 14:57
Сообщение #22


Гуру
******

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



Цитата(AndreyS @ Mar 23 2009, 17:25) *
Подкиньте плиз ...
Для МК51 я использовал вот этот файл для версии 8.16а; с АРМ'ами - не работаю, но вроде тоже - подходит
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Mar 23 2009, 18:55
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(Палыч @ Mar 23 2009, 17:57) *
Для МК51 я использовал вот этот файл для версии 8.16а; с АРМ'ами - не работаю, но вроде тоже - подходит


Спасибо вам больше.

У меня эта клизьма есть smile.gif Я проделал следующее. Сначаласгенерил лицензию просто для devel kit. Удалил все obj и скомпилил проект. Оно нормально скомпилилось, но не собралось. Попросило проапгрейдить до PK51 (Professional). Сгенерил теперь для Prof. И перекомпилил. И все получилось. Раньше я сразу генерил для проф и удалял обж файлы. В этот раз повезло. Буду пробовать этот путь на работе.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 22:34
Рейтинг@Mail.ru


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