Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Какой флешки? Обычно берется указатель на финкицю, и запихивается. Более правильно, сделать сегмент в линкере, и пихать во флешку не функции но сегмент.
Отправлено
Artem-1.6E-19
15 ноября 2009, г. 21:31
В ответ на:
ну и последний вопрос, как в IAR ARM закинуть функцию в нужный адрес флешки?
отправлено пользователем
колян безпарольный
15 ноября 2009, г. 21:27
Составить ответ
|
Вернуться на конференцию.
Ответы
без сегментов хочу, типа void Bll(void) @0x70000;
-
колян безпарольный
(15.11.2009, 21:42:30
193.200.150.152
,
пустое
)
Тогда в гугль, "Function pointer C"
-
Artem-1.6E-19
(15.11.2009, 21:48:8
127.0.0.1,77.87.39.155
,
пустое
)
А другим путём? #pragma location не предусмотрена что ли? Вот для AVR объевляешь такой прагмой перед функцией новый сегмент, а в экстра-опциях линкера пишешь -Z(CODE) имя сегмента и его расположение.
-
VasilyS
(15.11.2009, 21:46:56
80.92.96.25
,
пустое
)
это все через линкер, ручками новый сегмент прописывать итд. А я хочу чтоб просто, написал куда внутри существующего сегмента и всё, ну как константу во флеше размещаю через @
-
колян безпарольный
(15.11.2009, 21:50:3
193.200.150.152
,
пустое
)
В таком виде никак. А нафига это надо? Может всетаки не саму функцию, указатель на функцию по оперделенному адресу разместить?(+)
-
F8
(15.11.2009, 22:17:2
94.178.173.151
, 131 байт)
бутлоадер ваяю, запускать функцию через __ramfunc не устраивает, получается только разместить саму функцию по адресу гдет в конце, который из бутлодера не будет меняться
-
колян безпарольный
(15.11.2009, 22:21:23
193.200.150.152
,
пустое
)
Все равно не понял зачем по оперделенному адресу размещать. Надо чтоб функция из бутлоадера был видна из основной программы? Тогда самый лучший выход ИМХО указатель на функцию. Надо создать что-то вроде библиотеки функций которые видны и в основной программе и в бутлоадере? Тогда отдеьный сегмент на библионеку + массив указателей.
-
F8
(15.11.2009, 23:30:49
94.178.173.151
,
пустое
)
ЗЫ причем нипервого ни второго, по возможности лучше не делать - бутлоадер и ОП персекатся не должны.
-
F8
(15.11.2009, 23:35:53
94.178.173.151
,
пустое
)
у меня какраз должны
-
колян безпарольный
(16.11.2009, 00:23:43
193.200.150.152
, 265 байт)
Ну так в чем проблемма? Передавать управление в бутлоадер ремап->1 + переход на 0. А в ОП переходом на начальный сектор программы. У меня для для перезагрузки прошивки ресетить девайс тоже не обязательно. PS Если речь про LPC могу скинуть бутлоадер(+)
-
F8
(16.11.2009, 01:31:22
94.178.173.151
, 290 байт)
Я для каждой фунукции завожу отдельный сегмент. Линкер честно кладет ее с самого начала.
-
Codavr
(15.11.2009, 22:42:10
78.107.221.6
,
пустое
)
Дык эта. Компилер не знает где чего и как ляжет, он код перемещаемый ваяет. Это все линкер определяет. А ему надо сказать прямо, вот мол там забацай сегмент и положи в него ту хрень.
-
Codavr
(15.11.2009, 22:15:7
78.107.221.6
,
пустое
)
почему тогда константу он может разместить в любом месте флешки без всякого рода плясок с линкером?
-
колян безпарольный
(15.11.2009, 22:24:53
193.200.150.152
,
пустое
)
У константы размер заранее известен, а размер кода может меняться в зависимости от работы компилятора. Да еще и перемещение кода может пакостить.
-
Codavr
(15.11.2009, 22:39:52
78.107.221.6
,
пустое
)
А он тебе в ответ: "Тю, ты сдурел. Эту хрень в тот сегмент бульдозером не запихать."
-
Codavr
(15.11.2009, 22:18:22
78.107.221.6
,
пустое
)
#pragma location=0x70000 ==> Error[Be011]: location address not allowed for functions
-
колян безпарольный
(15.11.2009, 22:31:40
193.200.150.152
,
пустое
)
А я чего говорю. Отдельный сегмент надо делать с началом в 0x70000. Если две функции в один сегмент определишь, то ХЗ какую он первой положит. Ему виднее. #pragma location MYSEG_SHOBNEMUCHATCA
-
Codavr
(15.11.2009, 22:35:44
78.107.221.6
,
пустое
)
У меня так делается __root void Stub(void) _STUB_SEG_
-
Codavr
(15.11.2009, 22:37:49
78.107.221.6
,
пустое
)
а как сегмент обьявлял?
-
колян безпарольный
(15.11.2009, 22:52:10
193.200.150.152
, 2887 байт)
#pragma location="MYSEG" вроде помнится. А потом его в линкере за яйцы пришить к адресу.
-
VasilyS
(15.11.2009, 23:24:25
80.92.96.25
,
пустое
)
А вот бутовый сегмент определяет: define symbol __ICFEDIT_region_BOOT_start__ = 0x70000; По аналогии расколи его на несколько своих.
-
Codavr
(15.11.2009, 23:06:42
78.107.221.6
,
пустое
)
Так вот определяет CSTACK: define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
-
Codavr
(15.11.2009, 23:04:9
78.107.221.6
,
пустое
)
-Z(CODE)STUB_SEG=1FCC-1FCD Это я для AVR, но думаю для ARM что нить наподобие. Посмотри доку на линкер. У иара все хорошо расписано.
-
Codavr
(15.11.2009, 22:56:44
78.107.221.6
,
пустое
)
Ну чувствуеться наш подход... хочу дивчину таку, ость таку и шобы просто давала... :-)
-
MARS
(15.11.2009, 21:52:27
77.122.166.244
,
пустое
)
вообще для извращений есть асм, а в сях всё должно быть просто и наглядно
-
колян безпарольный
(15.11.2009, 21:59:12
193.200.150.152
,
пустое
)
дык, а хелп, что по этому поводу утаил информацию?
-
MARS
(15.11.2009, 22:00:37
77.122.166.244
,
пустое
)
постигаю
-
колян безпарольный
(15.11.2009, 22:10:16
193.200.150.152
,
пустое
)
Это типа как я.. Шобыв САМ7С сделали в SPI мжно было вычитывать 24 бита одним заходом. Вот было бы счастье...
-
MARS
(15.11.2009, 21:53:37
77.122.166.244
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
прибавьте тройку к двум:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru