Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Softune, константы по адресу
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
Terrabyte
Приветствую тех, кто пользует мк Fujitsu, MB90F_

Кто знает, как в IDE Softune инициализировать константы по конкретным адресам ROM?
Собственно, нужно, чтобы при заливке ПО в мк, таблица значений хранилась по определённому адресу во flash.

в IARе, я делал например так:
volatile const int var @ "MYROM" = 0xff104d;
или
#pragma location = "MYROM"
const int var = 0xff104d;

а в Softune нашёл вот что:
#pragma segment и #pragma section, но это переименование ...
может в линкере настроить надо? а то что то не выходит, например пишу:
#pragma segment DATA=ISD,attr=DATA,locate=0xFF1090
const unsigned short var = 0xabcd;
// но она всё равно находится там же - в области, куда по умолчанию помещаются константы
spf
Цитата(Terrabyte @ Sep 5 2008, 17:22) *
Приветствую тех, кто пользует мк Fujitsu, MB90F_

Кто знает, как в IDE Softune инициализировать константы по конкретным адресам ROM?
Собственно, нужно, чтобы при заливке ПО в мк, таблица значений хранилась по определённому адресу во flash.


Вообще-то все описано в доках и есть в примерах.
SWB (F2MC-16) V3 Software 16 bit Development Environment

Один из вариантов:
В отдельном файле объявляем секцию
Код
#pragma section FAR_CONST=S_BOOT
// далее объявляем нужные переменные ...


В параметрах линкера должно быть описано
Код
-ro S_ROM=0xFFBdfe/0xFFBFFF
-sc S_BOOT=S_ROM
Terrabyte
Не получается.
Да, я почитал о том как настраивать линкер и объявлять новые секции, это в хелпе есть, но спасибо за ссылку, пробовал так как вы предложили.
В настройках линкера делал так: Softune/Setup Project/Linker/Disposition.. добавил секцию S_BOOT с адресами 0xFF7000 по 0xFFDFFF и в отдельном файле сделал:
#pragma section FAR_CONST=S_BOOT
int var = 0xABCD;
но не вижу чтобы они там появились, может из-за того что я в симуляторе смотрю?
spf
Цитата(Terrabyte @ Sep 10 2008, 19:15) *
В настройках линкера делал так: Softune/Setup Project/Linker/Disposition.. добавил секцию S_BOOT с адресами 0xFF7000 по 0xFFDFFF и в отдельном файле сделал:
#pragma section FAR_CONST=S_BOOT
int var = 0xABCD;
но не вижу чтобы они там появились, может из-за того что я в симуляторе смотрю?

Допустил неточность в прошлом сообщении. Надо:
Код
#pragma section FAR_CONST=S_BOOT
// далее объявляем нужные КОНСТАНТЫ ...
__far const int var = 0xAA55;


Работает и более простой вариант, без специальных манипуляций в линкере:
Код
#pragma section FAR_CONST=MY_CONST,attr=CONST, locate=0xff1000
__far const unsigned char var=0x55;
Terrabyte
спасибо, получилось таки константу запихнуть туда, но вот моя структура данных туда не хочет идти.
ещё вопрос, где описано : FAR_CONST
#pragma section FAR_CONST=mysection,attr=CODE,locate=0xFF7000
к каким данным его отнести? и область адресов- ?
spf
Цитата(Terrabyte @ Sep 10 2008, 21:25) *
спасибо, получилось таки константу запихнуть туда, но вот моя структура данных туда не хочет идти.
ещё вопрос, где описано : FAR_CONST
#pragma section FAR_CONST=mysection,attr=CODE,locate=0xFF7000
к каким данным его отнести? и область адресов- ?

Не совсем понял вопрос.

Структуру данных объявляешь как константу?

Почему attr=CODE, должно быть CONST?

Область адресов констант - область ROM. (объявленной в линкере -ro xxxxx и куда ссылается -sc CONST)

Все описано в доке SOFTCCMP "Section Name Change Function", только FAR_ это приставка, поэтому именно FAR_CONST там не описана.
Terrabyte
константы на месте, с помощью простого объявления сделал, без коррекции в линкере
спасибо.

У меня теперь другой вопрос, на сколько корректно работает оптимизация ?
Собственно, оптимизация нужна всего лишь, для того чтоб inline работало !!!
кагда включаю Level1 или ещё более высокий,
почему то программа перестает работать нормально, на Level 1-2 работает 3 секунды,
на Level 4 - не запускается!
а когда стоит NONE всё работает как надо, даёт ли
что-нибудь отключение галочек а настойках Optimize ?
spf
Цитата(Terrabyte @ Sep 11 2008, 13:50) *
У меня теперь другой вопрос, на сколько корректно работает оптимизация ?

На столько корректно, что нормальная программа работает при любом уровне оптимизации.

Цитата
Собственно, оптимизация нужна всего лишь, для того чтоб inline работало !!!
кагда включаю Level1 или ещё более высокий,
почему то программа перестает работать нормально, на Level 1-2 работает 3 секунды,
на Level 4 - не запускается!
а когда стоит NONE всё работает как надо, даёт ли
что-нибудь отключение галочек а настойках Optimize ?

Ищи баги в программе.
По поводу оптимизации есть хорошая апнота на сайте или диске.
В доке на компилятор тоже достаточно подробно расписано про оптимизацию.
Terrabyte
да, действительно был в программе баг, спасибо
WiseAlex
Цитата(spf @ Sep 11 2008, 20:52) *
На столько корректно, что нормальная программа работает при любом уровне оптимизации.

В принципе согласен, но

inline я так и не заставил разворачиваться в fr на с++
и еще если ставить оптимизацию на max speed для всей программы компиляция падает а если только отдельные файлы, то нормально, хотя и жрет при этом на моем проекте около 1 гига памяти при компиляции... Правда использует таки два ядра smile.gif
короче компилятор достаточно кривой вернее не достаточно ровный smile.gif
spf
Цитата(WiseAlex @ Sep 26 2008, 17:30) *
inline я так и не заставил разворачиваться в fr на с++

В проектике на scmRTOS все работает с инлайнами.

Цитата
и еще если ставить оптимизацию на max speed для всей программы компиляция падает а если только отдельные файлы, то нормально, хотя и жрет при этом на моем проекте около 1 гига памяти при компиляции... Правда использует таки два ядра smile.gif
короче компилятор достаточно кривой вернее не достаточно ровный smile.gif

Случайно не пятую версию пользуете?

В оболочке Softune FR ни разу не компилил, а мейком все работает при любой оптимизации.
WiseAlex
Цитата(spf @ Sep 26 2008, 17:13) *
В проектике на scmRTOS все работает с инлайнами.
Случайно не пятую версию пользуете?

да 5.1. вроде в последнем особых отличий не было мы диск и не заказали, но если у них стало получше с компиляцией, надо взять. Кстати, может Вы в курсе, на КТЦ диски в наличии есть?
Цитата
В оболочке Softune FR ни разу не компилил, а мейком все работает при любой оптимизации.

Все никак не спрыгнем с Softune. Уже раз 5 про eclipse думали но каждый раз все упирается в необходимость где-то найти время... smile.gif
spf
Цитата(WiseAlex @ Sep 28 2008, 01:26) *
да 5.1. вроде в последнем особых отличий не было мы диск и не заказали, но если у них стало получше с компиляцией, надо взять. Кстати, может Вы в курсе, на КТЦ диски в наличии есть?

Пятая версия - переходная, запускал ее пару раз, потом быстро вышла 6.
Диски не нужны. Файлы с прошлогоднего диска заливал сюда, а сейчас можно все взять с сайта производителя -- http://electronix.ru/forum/index.php?showtopic=52837

Цитата
Все никак не спрыгнем с Softune. Уже раз 5 про eclipse думали но каждый раз все упирается в необходимость где-то найти время... smile.gif

Нехватка времени ощущается, вам даже не было времени обновить софт, к которому у вас имеются замечания smile.gif
WiseAlex
Цитата(spf @ Sep 28 2008, 15:04) *
Нехватка времени ощущается, вам даже не было времени обновить софт, к которому у вас имеются замечания smile.gif

Замечание принято smile.gif
Хотя есть пара слов в свою защиту:
у мня есть замечания практически к любому софту wink.gif а его много - за всем не уследишь
Softune не основной мой инструмент и пока он более-менее работает - я особенно не переживаю. На 5.1 мы перешли только из-за того что версия которую мы использовали до этого стала глухо падать на моем коде
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.