Перейти к содержанию
    

Исполнение всей программы в SDRAM

SSL - это специальный "костыль" для загрузки двухядерников, и AFAIK, в одноядерных финах он не поддерживается.

Поддерживается BF535, FYI. В принципе и любым другим процессором он тоже поддерживается, но как пишут ADI нет необходимости в использовании SSL. SSL в первую очередь это не какая то фича какого либо процессора, а лишь способ загрузки процессора из чего угодно и как угодно. Т.е. это всего лишь написанный кем то, либо вами кусок кода, который позволит загрузить процессор не только через SPI или AMS0, но и например через PPI (через что реализуете). SSL - всего лишь загрузчик. Всё, что он делает размещает кусок кода туда куда ему скажут.

Изменено пользователем boom

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приложение НЕ МОЖЕТ стартовать с произвольного адреса. Либо с 0х20000000 (в режиме bypass), либо с начала L1 code. Все, других вариантов нет.

 

мой загрузчик(который ldr, торчащий в L1, инициализирующий всё и грузящий в SDRAM) сам передаст управление на загруженный код в SDRAM

 

Вы можете объяснить зачем вам это нужно??

 

нужно загружать большие по объёму приложения и ОСи разные

 

Что вы собираетесь делать с 32 (а то и 48, если не использовать кэш) килобайтами очень быстрой памяти програм?

 

разместить кучу, стек, интеррупт хэндлеры

 

Зачем вам ставить 400 МГц DSP и сразу на корню убивать всю его производительность, исполняя код из тормозной SDRAM?? Видимо я что-то в этом мире не понимаю :wacko:

 

Разве кеши не помогут (с обратной записью)?

Код явно превышает 48кБ, а делить его и резать напообие оверлеев не совсем хочется.

Нужен шустрый вычислитель

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мой загрузчик(который ldr, торчащий в L1, инициализирующий всё и грузящий в SDRAM) сам передаст управление на загруженный код в SDRAM

Тогда в чем проблема? Как "прыгнуть" в SDRAM?

разместить кучу, стек, интеррупт хэндлеры

Не путайте мухи и котлеты. Кучу и стек в памяти программ вы не разместите. Интеррупт хэндлеры займут намного меньше чем 32кб. Зачем пихать всю програму в SDRAM?

Код явно превышает 48кБ, а делить его и резать напообие оверлеев не совсем хочется.

Нужен шустрый вычислитель

Не режьте. Разместите критичные к скорости выполнения куски в L1 принудительно, код инициализации - в SDRAM (принудительно). Остальное оставьте на усмотрение линкера. И включите кэш. Все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините, что встреваю, но имею очень похожую проблему.

Не получается прыгнуть в SDRAM - по окончании закачки рабочей программы в SDRAM по адресу 0х1000

вот это

 

__asm__("P0.H = 0x0000;");

__asm__("P0.L = 0x1000;");

__asm__("JUMP (P0);");

 

приводит к зависанию проца (bf537 в моем случае). Файл пишется в SDRAM корректно, проверял.

Чего не хватает для счастья? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте!

 

Я тоже разбираюсь с режимами загрузки Blackfin'а.

 

Вот попытался структурировать информацию, кот. скопилась у меня в голове по этому вопросу.

 

Исходные данные:

-BF533

-Тип загрузки 01 - из флеш памяти.

-Использую SDRAM

 

Мои действия:

1. Я создал проект MyProgramm, написал там свою программу, отладил и получил файл MyProgramm.dxe - пользовательский код.

 

2. Теперь, поскольку я хочу использовать SDRAM, я создаю проект InitCode и там на ассемблере пишу код инициализации для

SDRAM контроллера (типа того как в примере EE-240). В итоге получаю файл InitCode.dxe - код инициализации для SDRAM

 

3. Теперь в проекте MyProgramm, в опциях в Project->Load->Options в строчке Initialization file указываю InitCode.dxe,

а в строчке Output file указываю как будет называться "общий" образ для прошивки во влеш,

например MyProgramm_and_InitCode.ldr. И затем лоадер сформирует мне этот .ldr файл, который я укажу флешпрограммеру для записи во флеш.

 

Вопросы:

1. Правильны ли те мои действия, кот я описал выше?

2. Как сформировать .ldr файл? .dxe файлы в папке проекта вижу, а .ldr нет.

3. В настройках ldf я поставил галку использовать внешнюю память SDRAM. Я так понял linker сам раскидает что грузить в L1, что в SDRAM, так?

И потом, разрешать кеш данных и команд или нет? Я так понял, если часть программы лежит в SDRAM, то использование кеша позволит увеличить быстродействие.

 

Частичный ответ на мой 3-й вопрос уже есть, как я понимаю:

Не режьте. Разместите критичные к скорости выполнения куски в L1 принудительно, код инициализации - в SDRAM (принудительно). Остальное оставьте на усмотрение линкера. И включите кэш. Все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопросы:

1. Правильны ли те мои действия, кот я описал выше?

2. Как сформировать .ldr файл? .dxe файлы в папке проекта вижу, а .ldr нет.

3. В настройках ldf я поставил галку использовать внешнюю память SDRAM. Я так понял linker сам раскидает что грузить в L1, что в SDRAM, так?

Здравствуйте.

1. Да, все правильно

2. В окне Project Options поменять тип проекта (см. рис), и пересобрать проект.

3. Да

И потом, разрешать кеш данных...?

Часто правильная организация потоков DMA позволяет обойтись без использования кэша данных.

post-39233-1237382699_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда в чем проблема? Как "прыгнуть" в SDRAM?

 

Нет!!!

Проблема чтоб слинковать Hex или bin ДЛЯ ИСПОЛНЕНИЯ из SDRAM!!!

Попогите плиз.

 

Не путайте мухи и котлеты. Кучу и стек в памяти программ вы не разместите.

 

ну это да. имел ввиду DATA RAM L1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...