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

 
 
> Как сделать дырку в коде, EWAVR 5.11B
LessNik
сообщение Nov 6 2009, 11:29
Сообщение #1


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

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Привет всем!
Подскажите, как объяснить компилятору, линкеру, чтобы расположить массив значений по строго заданному адресу во флеше. Причём так, чтобы код программы "огибал" этот массив.
Все попытки сделать дырку в коде заканчивались выводом ошибки:
Error[e16]: Segment CODE (size: 0x1104 align: 0x1) is too long for segment definition.
Если программа может разместиться до адреса, по которому пытаюсь расположить массив, то ошибки не происходит.

EWAVR 5.11B

Выражения типа
1. __root __flash const word XXX @ 0xBFE = {0xFFFF};
2.__root __flash const word XXX @ "MYSEGMENT" = {0xFFFF}; // в XCL: -Z(CODE)MYSEGMENT=AFE-AFF
3.__root __flash const word XXX @ 0xBFE = {0xFFFF};
#pragma required = XXX
не помогли.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Nov 6 2009, 14:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(LessNik @ Nov 6 2009, 14:29) *
Подскажите, как...

Уже устал удивляться неиссякающему потоку не желающих думать и тупо располагать данные по фиксированным адресам sad.gif. Ну не нужно это практически никогда. Как максимум нужен один расположенный, например, после таблицы векторов, указатель на эту область данных.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
LessNik
сообщение Nov 6 2009, 14:58
Сообщение #3


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

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Цитата(zltigo @ Nov 6 2009, 17:41) *
Уже устал удивляться неиссякающему потоку не желающих думать и тупо располагать данные по фиксированным адресам sad.gif. Ну не нужно это практически никогда. Как максимум нужен один расположенный, например, после таблицы векторов, указатель на эту область данных.

Это имено тот случай, когда нужно. По другому сделать я могу, разными способами и без помощи окружающих. Нужно для совместимости с предыдущей разработкой. Лучше подскажите как сделать, чтоб программный код не располагался по определённому адресу, а "огибал его".
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 6 2009, 15:07
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(LessNik @ Nov 6 2009, 17:58) *
Нужно для совместимости с предыдущей разработкой

smile.gif smile.gif smile.gif
Цитата
чтоб программный код не располагался по определённому адресу, а "огибал его".

Что это Вы написали???


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
LessNik
сообщение Nov 6 2009, 15:20
Сообщение #5


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

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Цитата(zltigo @ Nov 6 2009, 18:07) *
smile.gif smile.gif smile.gif

Что это Вы написали???


Ещё раз по подробнее: Нужно сделать так, чтобы программа не занимала некоторые адреса.
Решение мне видится так:
1. Либо положить по этим адресам что-то, для того чтобы линкер не положил туда часть программы.
2. Либо как-то перепрыгнуть эти адреса, желательно без помощи асма, а при помощи директив компилятора, линкера.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:29
Рейтинг@Mail.ru


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