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

 
 
> Запуск кода из внешней памяти
inventor
сообщение Sep 19 2017, 16:18
Сообщение #1


Знающий
****

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



подскажите мне вот что
имеется арм контроллер
в котором ест 48 килобайт памяти
этого мало для моих задач, я подцепил 4 Мбайт внешней памяти
и хочу что бы старт начался из нее, а не из внутренней SRAM
и чтобы стек там же располагался
как мне это правильно сделать
чтобы стек так же расположить во внешней памяти?

вот у меня есть файлstartup_MYCPU.s
где есть вызов LDR R0, =SystemInit
что я должен сделать внутри System Init
кроме настройки внешней шины адреса, данных, управления?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
VladislavS
сообщение Sep 20 2017, 09:12
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 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
inventor
сообщение Sep 20 2017, 11:02
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 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
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 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 19 2017, 16:18
- - dimka76   Вы даже марку контроллера не упомянули. А так вам...   Sep 19 2017, 18:28
- - Obam   Ещё "бензинчику" добавлю (; загрузка в R...   Sep 19 2017, 19:38
|- - golf2109   Цитата(Obam @ Sep 19 2017, 21:38) Ещё ...   Sep 20 2017, 01:24
|- - inventor   Цитата(Obam @ Sep 19 2017, 22:38) Ещё ...   Sep 20 2017, 06:53
|- - Forger   Цитата(inventor @ Sep 20 2017, 09:53) ну ...   Sep 20 2017, 06:58
|- - Integro   Цитата(inventor @ Sep 20 2017, 09:53) RAM...   Sep 20 2017, 07:04
|- - inventor   Цитата(Integro @ Sep 20 2017, 10:04) мила...   Sep 20 2017, 07:15
|- - Integro   Цитата(inventor @ Sep 20 2017, 10:15) эта...   Sep 20 2017, 07:24
- - inventor   неицинициализированные данные я там могу расположи...   Sep 20 2017, 06:58
|- - Forger   Цитата(inventor @ Sep 20 2017, 09:58) 198...   Sep 20 2017, 07:02
|- - Forger   Я бы не стал мудрить с полным переносом кода во вн...   Sep 20 2017, 07:17
- - scifi   Ещё интересный вопрос, где хранится код программы ...   Sep 20 2017, 07:40
|- - Forger   Для толстых проектов обычно ставят внешнюю FLASH (...   Sep 20 2017, 07:48
||- - scifi   Цитата(Forger @ Sep 20 2017, 10:48) Для т...   Sep 20 2017, 07:50
|- - inventor   Цитата(scifi @ Sep 20 2017, 10:40) Кстати...   Sep 20 2017, 07:50
|- - scifi   Цитата(inventor @ Sep 20 2017, 10:50) это...   Sep 20 2017, 07:59
|- - jcxz   Цитата(scifi @ Sep 20 2017, 14:59) И за ч...   Sep 20 2017, 08:33
|- - inventor   Цитата(jcxz @ Sep 20 2017, 11:33) Автор в...   Sep 20 2017, 08:40
|- - Forger   Цитата(inventor @ Sep 20 2017, 11:40) ну ...   Sep 20 2017, 09:05
|- - Forger   Цитата(VladislavS @ Sep 20 2017, 12:12) В...   Sep 20 2017, 09:21
|- - jcxz   Цитата(VladislavS @ Sep 20 2017, 16:12) З...   Sep 20 2017, 09:42
||- - VladislavS   Цитата(Forger @ Sep 20 2017, 12:21) Добав...   Sep 20 2017, 10:00
||- - Forger   Цитата(VladislavS @ Sep 20 2017, 13:00) С...   Sep 20 2017, 10:07
||- - jcxz   Цитата(VladislavS @ Sep 20 2017, 17:00) А...   Sep 20 2017, 10:22
||- - inventor   Цитата(jcxz @ Sep 20 2017, 13:22) Недавно...   Sep 20 2017, 11:15
||- - Forger   Цитата(inventor @ Sep 20 2017, 14:15) в 4...   Sep 20 2017, 11:31
|||- - inventor   Цитата(Forger @ Sep 20 2017, 14:31) Но чт...   Sep 20 2017, 12:47
|||- - aaarrr   Цитата(inventor @ Sep 20 2017, 15:47) про...   Sep 20 2017, 13:07
|||- - Forger   Цитата(inventor @ Sep 20 2017, 15:47) мне...   Sep 20 2017, 13:11
|||- - jcxz   Цитата(inventor @ Sep 20 2017, 19:47) про...   Sep 20 2017, 16:52
|||- - Forger   Цитата(jcxz @ Sep 20 2017, 19:52) Работод...   Sep 20 2017, 17:07
|||- - inventor   Цитата(jcxz @ Sep 20 2017, 19:52) Работод...   Sep 20 2017, 18:27
||- - VladislavS   Цитата(inventor @ Sep 20 2017, 14:15) во ...   Sep 20 2017, 12:35
||- - Obam   Цитата(inventor @ Sep 20 2017, 15:15) у и...   Sep 20 2017, 13:09
- - inventor   ну вобщем разобрался последний вопрос: ЦитатаWarn...   Sep 20 2017, 13:50
- - VladislavS   Цитата(inventor @ Sep 20 2017, 16:50) в ч...   Sep 20 2017, 13:55
- - aaarrr   Цитата(inventor @ Sep 20 2017, 16:50) то ...   Sep 20 2017, 13:55
|- - inventor   Цитата(aaarrr @ Sep 20 2017, 16:55) Вы же...   Sep 20 2017, 14:00
|- - Forger   Цитата(inventor @ Sep 20 2017, 16:58) так...   Sep 20 2017, 14:06
|- - inventor   Цитата(Forger @ Sep 20 2017, 17:06) Назов...   Sep 20 2017, 14:26
|- - Forger   Цитата(inventor @ Sep 20 2017, 17:26) это...   Sep 20 2017, 14:34
- - Forger   Цитатато есть насколько это критично? В этом проек...   Sep 20 2017, 13:57
- - Obam   Цитата(inventor @ Sep 20 2017, 17:50) про...   Sep 20 2017, 19:41


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

 


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


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