Народ посоветуйте PLZ как можно скопировать процедуру во внешнюю SRAM и там ее выполнять? Есть ли стандартный алгоритм(процедура)? Компилятор IAR.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
JTAG
25 сентября 2003 г. 13:22
Составить ответ
|||
Конференция
|||
Архив
Ответы
Копируешь и выполняешь.
—
Trotter
(25.09.2003 13:56, 286 байт)
А что значит аккуратно адреса настроить? У меня нет ни кэша не MMU процессор AT91R40008. А код процедуры должен быть позиционно-независимым?
—
JTAG
(25.09.2003 14:13,
пустое
)
Должен.
—
Trotter
(25.09.2003 14:25, 689 байт)
Огромное спасибо за подробный ответ!
—
JTAG
(25.09.2003 14:54,
пустое
)
Ответ: Наверное речь идет об ARM?
—
Bill
(25.09.2003 13:31,
пустое
)
Да речь идет об ARM , но я думаю это можно сделать и для AVR если внешнюю память добавить?
—
JTAG
(25.09.2003 13:46,
пустое
)
Ответ: Нет, для AVR это принципиально невозможно, впрочем как и для любого процессора с Гарвардской архитектурой. У них память программ и данных занимают различные адресные пространства.
—
Bill
(25.09.2003 13:53,
пустое
)
...для AVR это принципиально невозможно, впрочем как и для любого процессора с Гарвардской архитектурой, НЕ ИМЕЮЩЕГО ВНЕШНЕГО ИНТЕРФЕЙСА С ПРОГРАММНОЙ ПАМЯТЬЮ.
—
Для 51 можно PSEN | RD
(25.09.2003 14:14,
пустое
)
Вы ошибаетесь, если считаете что к AVR не подключается внешняя память программ.
—
KAN
(25.09.2003 14:18,
пустое
)
Ответ: Возможно. Назовите тип контроллера, было бы очень интересно. В ряде случаев это здорово пригодилось бы.
—
Bill
(25.09.2003 14:25,
пустое
)
Ответ: AT43USB320A->
—
KAN
(25.09.2003 14:29,
пустое
,
ссылка
)
Вещица в себе... К тому-же глюкавая.
—
Точка опоры
(26.09.2003 09:29,
пустое
)
Ответ: Спасибо! Сейчас посмотрю.
—
Bill
(25.09.2003 14:37,
пустое
)
Yes-s-s!!! ;О)
—
=mse=
(25.09.2003 14:34,
пустое
)
Хотя, такое все таки наверное можно будет сделать, если вы функцию из внешней памяти перепищете в программную память. Для этой цели в AVRmega имеется инструкция spm.
—
Bill
(25.09.2003 13:59,
пустое
)
По AVR понял, большое спасибо!
—
JTAG
(25.09.2003 14:15,
пустое
)
архитектура фон-неймана (говорят об ARM а не AVR )
—
KAN
(25.09.2003 14:09,
пустое
)
И для AVR это делают и для 51! Ставят оперативку в верхние адреса и организуют двойной доступ к ней: как к памяти программ и как внешней памяти, и все!
—
KAN
(25.09.2003 14:13,
пустое
)
Ответ: У AVR нет возможности выбирать команды из памяти ДАННЫХ, независимо от того по каким адресам расположена эта память Для 51 это вполне возможно, поскольку ЛОГИЧЕСКИ вся память представляет единое целое, хотя физически она может быть как внутри контроллера, так и вне его.
—
Bill
(25.09.2003 14:20,
пустое
)
Есть AVRы с внешней памятью программ (те - которые с функциями USB)
—
KAN
(25.09.2003 14:26,
пустое
)
Ответ: Посмотрел. Здорово! Еще раз СПАСИБО!
—
Bill
(25.09.2003 14:49,
пустое
)
Ответ: Но попутно был задан вопрос по AVR.
—
Bill
(25.09.2003 14:12,
пустое
)
да, это я запарился....мои извенения
—
KAN
(25.09.2003 14:15,
пустое
)
Для некоторых uC такое принципиально невозможно. А для uC только с внутренней памятью команд однозначно нельзя. Причем тут IAR без указания типа процессора?
—
Elektronik
(25.09.2003 13:24,
пустое
)
Есть. Для С memcpy называется. Это чтоб скопировать. И указатель на функцию, чтоб выполнять. А для асма еще все проще.
—
SМ
(25.09.2003 13:23,
пустое
)
Спасибо, пойду почитаю про эту функцию
—
JTAG
(25.09.2003 13:51,
пустое
)
Это не все. Еще надо сказать линкеру, что код находиться в одном месте, а выполняться будет в другом.
—
AlexandrY
(25.09.2003 13:32, 106 байт)
Или написать код позиционно-независимым. Опять-же, если это возможно в процессоре.
—
SМ
(25.09.2003 13:39,
пустое
)
A как написать такой код если писать на Си?
—
JTAG
(25.09.2003 13:48,
пустое
)
Ответ: Для AVR код, как правило, получается позиционно независимый.
—
Bill
(25.09.2003 14:04,
пустое
)
Посмотрите опцию -M в IAR-овском линкере.
—
AlexandrY
(25.09.2003 14:03, 164 байт)
Ну и что это даст в случае для PIC или AVR?
—
Elektronik
(25.09.2003 13:25,
пустое
)
Ничего не даст. Просили, как я понимаю "в общем". Так я и ответил. А с физической возможностью такого - пусть сам разбирается.
—
SМ
(25.09.2003 13:27,
пустое
)
Такое возможно в uC где адресация сегментная. И в этом случае не часто удается откомпилировать программу в C, чтобы такой номер прокатил.
—
Elektronik
(25.09.2003 13:31,
пустое
)
В TMS320VC5509 нет сегментной адресации. А такое я делаю на каждом углу. То-же касается TMS320C6xxx - там простое линейное адресное пространство. И все это делается легко.
—
SМ
(25.09.2003 13:40,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru