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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Запуск кода из внешней памяти
inventor
сообщение Sep 20 2017, 07:50
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(scifi @ Sep 20 2017, 10:40) *
Кстати, вот вам ход конём:
Сделать загрузчик и основную программу (2 раздельных проекта). Загрузчик, ясное дело, загружает, а потом передаёт управление основной программе. Там этих заморочек с настройками в разы меньше.

это я уже делал и на блекфине и на stm32
теперь нечто подобное нужно сделать на миландре
Go to the top of the page
 
+Quote Post
scifi
сообщение Sep 20 2017, 07:59
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(inventor @ Sep 20 2017, 10:50) *
это я уже делал и на блекфине и на stm32
теперь нечто подобное нужно сделать на миландре

И за чем же дело стало? laughing.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 20 2017, 08:33
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(scifi @ Sep 20 2017, 14:59) *
И за чем же дело стало? laughing.gif

Автор видимо хотел сказать, что для тех МК он находил готовые решения, а тут - не может найти.
Если бы сам делал, то даже вопроса бы такого не возникло "как". laughing.gif
Go to the top of the page
 
+Quote Post
inventor
сообщение Sep 20 2017, 08:40
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(jcxz @ Sep 20 2017, 11:33) *
Автор видимо хотел сказать, что для тех МК он находил готовые решения, а тут - не может найти.
Если бы сам делал, то даже вопроса бы такого не возникло "как". laughing.gif

ну типа того sm.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Sep 20 2017, 09:05
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(inventor @ Sep 20 2017, 11:40) *
ну типа того sm.gif

Значит, пришло время для самостоятельной работы wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Sep 20 2017, 09:12
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Значит так. Процессор ваш имеет 128 Кбайт Flash и 48 Кбайт RAM на ядре Cortex-M.
1. Пишете загрузчик, который выполняется из внутренней Flash при старте. В нём инициализируете внешнюю память и копируете в неё из какой-то внешней флэшки основной код полностью.
Затем передаёте управление основной программе
Код
#define APPLICATION_ADDRESS  0xXXXXXXXX
typedef void(*pFunction)(void);
uint32_t app_jump_address = *( uint32_t*) (APPLICATION_ADDRESS + 4);   //извлекаем адрес перехода из вектора Reset
pFunction Jump_To_Application = (pFunction)app_jump_address;                  
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);                   //устанавливаем стек приложения                                          
Jump_To_Application();


2. Основная программа ничего не знает о том что её откуда-то скопировали. Её задача только перенаправить на себя таблицу векторов прерываний.
Код
  #pragma section = ".intvec"
  SCB->VTOR = (uint32_t) __section_begin(".intvec");

А стек я бы расположил всё же во внутренней RAM процессора. 48 кБ для стека это дофига вообще. Да и быстрее эта память обычно.
Go to the top of the page
 
+Quote Post
Forger
сообщение Sep 20 2017, 09:21
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(VladislavS @ Sep 20 2017, 12:12) *
В нём инициализируете внешнюю память и копируете в неё из какой-то внешней флэшки основной код полностью.

Добавлю свои пять копеек: код должен быть зашифрован, если изделие коммерческое.
А оно коммерческое по-любому, т. к. прозвучало ключевое слово - "миландр" sm.gif
Открытые исходники различных шифровальщиков не проблема.

Цитата
48 кБ для стека это дофига вообще.
Дофига - мягко сказано!
Видать, очень толстый проект, коли 48кБ ОЗУ не хватает wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 20 2017, 09:42
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(VladislavS @ Sep 20 2017, 16:12) *
Значит так. Процессор ваш имеет 128 Кбайт Flash и 48 Кбайт RAM на ядре Cortex-M.
...

Ну вот.... У человека был шанс чему-то разобраться, научиться, может даже стать наконец-то настоящим программистом... и опять ему помешали..... crying.gif
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Sep 20 2017, 10:00
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(Forger @ Sep 20 2017, 12:21) *
Добавлю свои пять копеек: код должен быть зашифрован, если изделие коммерческое.
А оно коммерческое по-любому, т. к. прозвучало ключевое слово - "миландр" sm.gif
Открытые исходники различных шифровальщиков не проблема.

С таким ключевым словом обычно чтобы поиметь доступ к процессору надо в открытый космос выходить sm.gif

Цитата(jcxz @ Sep 20 2017, 12:42) *
Ну вот.... У человека был шанс чему-то разобраться, научиться, может даже стать наконец-то настоящим программистом... и опять ему помешали..... crying.gif

А зачем вам конкуренты? sm.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Sep 20 2017, 10:07
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(VladislavS @ Sep 20 2017, 13:00) *
С таким ключевым словом обычно чтобы поиметь доступ к процессору надо в открытый космос выходить sm.gif

Миландр подразумевает любой гос. заказ: летный, наземный, подземный, т.е. всякий, где фигурируют деньги гос-ва.
А в обычной частной коммерции поставят что нибудь более подходящее sm.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 20 2017, 10:22
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(VladislavS @ Sep 20 2017, 17:00) *
А зачем вам конкуренты? sm.gif

Да не конкуренты. Хотя-бы сотрудники. А то уже на работу брать некого... sad.gif
Недавно убила фраза друга (далёкого от программирования): "Ну ты же знаешь - самые сильные программисты в Индии, все самые сложные заказы отправляются туда."... И сказано это было в полной уверенности, как само собой разумеющееся. Вот до чего мы докатились уже... sad.gif
Go to the top of the page
 
+Quote Post
inventor
сообщение Sep 20 2017, 11:02
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(VladislavS @ Sep 20 2017, 12:12) *
Значит так. Процессор ваш имеет 128 Кбайт Flash и 48 Кбайт RAM на ядре Cortex-M.
1. Пишете загрузчик, который выполняется из внутренней Flash при старте. В нём инициализируете внешнюю память и копируете в неё из какой-то внешней флэшки основной код полностью.
Затем передаёте управление основной программе
Код
#define APPLICATION_ADDRESS  0xXXXXXXXX
typedef void(*pFunction)(void);
uint32_t app_jump_address = *( uint32_t*) (APPLICATION_ADDRESS + 4);   //извлекаем адрес перехода из вектора Reset
pFunction Jump_To_Application = (pFunction)app_jump_address;                  
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);                   //устанавливаем стек приложения                                          
Jump_To_Application();


2. Основная программа ничего не знает о том что её откуда-то скопировали. Её задача только перенаправить на себя таблицу векторов прерываний.
Код
  #pragma section = ".intvec"
  SCB->VTOR = (uint32_t) __section_begin(".intvec");

А стек я бы расположил всё же во внутренней RAM процессора. 48 кБ для стека это дофига вообще. Да и быстрее эта память обычно.

спасиб, но так я уже делал на STM
тут вот в чем дело - мне хотелось бы чтобы и стек и куча
и все функции изначально поместились бы во внешней RAM
я вот что подумал - в принципе все армы они похожы
и какой нибудь ARM7 не имеет на борту SRAM
но как то может работать сразу из внешней памяти
я вот и подумал что мой простенький контроллер так же сможет

разобрался
в System init написал инициализацию внешней шины
или внешних шин..
далее в скрипте для линкера изменил:

CODE

place in ROM_region { readonly };
place in SRAM_region { block CSTACK };
place in XRAM_region { readwrite, block HEAP };


и все мои переменные оказались во внешней памяти
программа работает
щас попытаюсь функции туда же запихнуть



Go to the top of the page
 
+Quote Post
VladislavS
сообщение Sep 20 2017, 11:07
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(inventor @ Sep 20 2017, 14:02) *
щас попытаюсь функции туда же запихнуть

Где у вас прошивка изначально то размещается?

Цитата(inventor @ Sep 20 2017, 14:02) *
тут вот в чем дело - мне хотелось бы чтобы и стек и куча

А потом вертолёты сами по целям лупят... sad.gif Делать надо как надо, а как не надо делать не надо.
Go to the top of the page
 
+Quote Post
inventor
сообщение Sep 20 2017, 11:15
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(jcxz @ Sep 20 2017, 13:22) *
Недавно убила фраза друга (далёкого от программирования): "Ну ты же знаешь - самые сильные программисты в Индии, все самые сложные заказы отправляются туда."...


вполне возможно так и есть
у индийцев перед китайцами, русскими, французами и прочими зулусами
есть одно преимущество - они англоязычные
то есть они литературу просто читают
а не читают и в голове переводят на свой язык.



Цитата(VladislavS @ Sep 20 2017, 14:07) *
Где у вас прошивка изначально то размещается?

во внутренней flash

Цитата(VladislavS)
А потом вертолёты сами по целям лупят... sad.gif Делать надо как надо, а как не надо делать не надо.

это с запасом, так как сам проект имеет большие объемы данных
с которыми надо работать, а в 48 кБайтах они по любому не поместятся

Go to the top of the page
 
+Quote Post
Forger
сообщение Sep 20 2017, 11:31
Сообщение #30


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(inventor @ Sep 20 2017, 14:15) *
в 48 кБайтах они по любому не поместятся

Чудовищные глобальные или статически массивы - во внешней ОЗУ, это понятно.
Еще понимаю разместить во внешней ОЗУ кучу (heap).
Но что за проект такой, где прям нужен такой чумовой стек > 48кБ да еще и в относительно медленной памяти?!


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 17:10
Рейтинг@Mail.ru


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