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

 
 
> как разместить подпрограмму по заданному адресу
1921
сообщение Jul 25 2011, 07:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 29-09-10
Пользователь №: 59 820



Почтенные гуру!
Вот выскочила проблемка, не подскажите ли: можно ли разместить подпрограммку по определённому адресу в flash?
Я уже делал такое с данными, прописав в линкере сегмент по определённому адресу:

#pragma constseg=MY_SEG;
<данные>
#pragma constseg=default

А можно ли такую же вещь сделать с подпрограммой? И как это сделать?

main();
{
prog1();
prog2(); - допустим, я хочу разместить эту программу по определённому адресу, а ещё лучше, в выделенном сегменте, в котором будет сидеть только она. Можно?
prog3();
}

Я сейчас полезу в первоисточники, но ваше направляющее воздействие позволит значительно облегчить мои метания. Если не трудно, поделитесь опытом!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KARLSON
сообщение Aug 29 2011, 04:55
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819



Спасибо, 1921, за способ. Мне это тоже актуально.
Но предположим мне надо несколько функций разместить по определённым адресам. Интересует несколько моментов:
1) как узнать размер функции?
2) как предотвратить наложение адресов при перепрограммировании, вдруг новая функция растолстела больше диапазона первоначального?
3) можно ли при перепрограммировании переложить функцию по другому адресу, где при этом прописать остальной программе, что перепрограммированная функция запускается по новому адресу?


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post
ih_
сообщение Sep 1 2011, 16:18
Сообщение #3


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

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Цитата(KARLSON @ Aug 29 2011, 08:55) *
...
1) как узнать размер функции?
Можно разместить ее в отдельном сегменте, и затем вычислять его адрес, через встроенные указатели начала и конца сегмента (__segment_begin("mySeg");__segment_end("meSeg");SFE("mySg");SFB("mySeg"))
Цитата
2) как предотвратить наложение адресов при перепрограммировании, вдруг новая функция растолстела больше диапазона первоначального?
Можно сделать запас.
Цитата
3) можно ли при перепрограммировании переложить функцию по другому адресу, где при этом прописать остальной программе, что перепрограммированная функция запускается по новому адресу?
Конечно можно. Как вариант, обращаться к функции через указатель на нее, который находится по фиксированному адресу.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 12:12
Рейтинг@Mail.ru


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