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

 
 
> IDE Keil, Особенности работы - 2
JohnKorsh
сообщение Oct 17 2014, 05:34
Сообщение #1


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

Группа: Свой
Сообщений: 182
Регистрация: 6-01-05
Из: Россия, Москва
Пользователь №: 1 820



Добрый день! Работаю в среде Keil, пишу для Si1020 - микроконтроллер, совместимый с 8051 по командам, но 128 KB Flash и 8 KB RAM. При компиляции проекта возникла ошибка линковщика
L107 - Address Space Overflow, хотя в сумме размер скомпилированного кода 63138 байт, а RAM - 5116 байт, что меньше 128 К и 8 К, соответственно. Не поможет ли кто понять в чём я неправ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
kolobok0
сообщение Oct 17 2014, 19:15
Сообщение #2


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(JohnKorsh @ Oct 17 2014, 09:34) *
...Не поможет ли кто понять в чём я неправ?


не конкретно по проблеме, но поиск таких ляпов лучше методом отсекания. выключаете кусок кода - ошибка есть, дальше режете. нет - лапополам
коментарий уменьшаете и так до строчки, если раньше не увидите глазками.
Go to the top of the page
 
+Quote Post
net
сообщение Oct 18 2014, 16:15
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



QUOTE (JohnKorsh @ Oct 17 2014, 09:34) *
Добрый день! Работаю в среде Keil, пишу для Si1020 - микроконтроллер, совместимый с 8051 по командам, но 128 KB Flash и 8 KB RAM. При компиляции проекта возникла ошибка линковщика
L107 - Address Space Overflow, хотя в сумме размер скомпилированного кода 63138 байт, а RAM - 5116 байт, что меньше 128 К и 8 К, соответственно. Не поможет ли кто понять в чём я неправ?

128k мне помнится это страничная память ее переключать надо
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 18 2014, 16:51
Сообщение #4


Гуру
******

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



Цитата(JohnKorsh @ Oct 17 2014, 09:34) *
Не поможет ли кто понять в чём я неправ?

Было бы легче Вам подсказать, если бы Вы привели бы текст сообщения об ошибке полностью.

Вероятная ошибка в том, что 8051 содержит в себе несколько типов RAM, отличающихся методами (командами) доступа к содержимому, и которые специфицируются нестандартными ключевыми словами: data, idata, bdata, xdata, pdata. Распределение переменных между этими типами RAM производится программистом (задается спецификатор типа памяти или команды линкера) либо самим транслятором\компановщиком путем задания модели памяти SMALL, COMPACT или LARGE.

Подозреваю, что Вам достаточно будет указать модель памяти LARGE, чтобы избавиться от ошибки.
Go to the top of the page
 
+Quote Post
JohnKorsh
сообщение Oct 20 2014, 07:15
Сообщение #5


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

Группа: Свой
Сообщений: 182
Регистрация: 6-01-05
Из: Россия, Москва
Пользователь №: 1 820



Добрый день!
Memory model Large: Variables in XDATA. Пробовал даже перед декларацией каждой переменной ставить XDATA.
Code ROM size: Large 64 K Program Поставил галочки в Use OnChip ROM, Use OnChip XRAM.

Ошибка Error L107 - Address space Overflow.

Память, действительно, сегментирована, но первые 32 К - не сегментированные, переключаются на три банка "верхние" 32 К.
У меня программа на данный момент даже без оптимизации кода 63222 байта и RAM 2876 Байт. То есть должно умещаться без переключения сегментов.

Да, ещё, про оптимизацию. Использую прерывания по часовому таймеру (static void Alarm_isr (void) interrupt 8 using 1).
При уровне оптимизации кода до 2 (Data Overlaying) включительно работает как и хочу.
Если не изменяя кода поставить уровень оптимизации выше - прерывается один раз и дальше программа не идёт.
С отладчиком было бы просто, но, так как программа "пролеченная" аппаратный отладчик Silicon Laboratories USB Debug Adapter
умеет только загружать программу. Отлаживать приходится на Симуляторе, а он не умеет прерыватьсяя от таймера.
Может, кто сталкивался с нюансами оптимизации?

Go to the top of the page
 
+Quote Post
copov
сообщение Oct 22 2014, 12:03
Сообщение #6


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

Группа: Свой
Сообщений: 118
Регистрация: 2-03-05
Из: Санкт-Петербург
Пользователь №: 3 012



Там где "Option for Target" поставьте banks равное 4
Go to the top of the page
 
+Quote Post

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

 


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


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