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

BF537 загрузка из параллельной флеши

Доброго дня. Имею плату на основе BF537. Режим загрузки стоит - 00 Execute from 16-bit external memory (bypass boot ROM), изменить режим загрузки нельзя. Сейчас пользуюсь ранее кем-то собранным u-boot. U-boot лежит по 0x20000000 адресу нулевой страницы и грузит мой ldr с первой страницы.  Как прошить флеш я знаю. Решил создать свой загрузчик, который будет просто передавать управление стандартному загрузчику блекфина. 

	asm("P0.H = HI(0xEF000008 );");	
	asm("P0.L = LO(0xEF000008 ) ;");			
	asm("R7.H = HI(0x20060000) ; ");       
	asm("R7.L = LO(0x20060000) ;");
	asm("JUMP (P0);");

 Вопрос как собрать проект чтобы он начал выполняться из флеш памяти? 

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


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

13 часов назад, Mr_Progger сказал:

Вопрос как собрать проект чтобы он начал выполняться из флеш памяти? 

Начальный адрес работы программы задаётся в линкерном скрипте.

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


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

23 часа назад, dxp сказал:

Начальный адрес работы программы задаётся в линкерном скрипте.

Добрый день. В настройках проекта (LDF Settings) я указал My program will start running from 0x20000000.

В Load Boot mode - Flash/PROM, Intel hex, 16-bit

 Инициализацию памяти я не делаю. Выходной файл делаю в формате ldrи кладу его в начальный адрес флеша. 

MyLoader2000000.zip

Изменено пользователем Mr_Progger
Добавил архив с проектом

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


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

Процессор не начинает работу из флешь памяти? Или из неё читаются не те инструкции? Вы через эмулятор можете проследить, откуда он стартует?

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


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

Только что, dxp сказал:

Процессор не начинает работу из флешь памяти? Или из неё читаются не те инструкции? Вы через эмулятор можете проследить, откуда он стартует?

Я не могу посмотреть что происходит, я выключаю/включаю питание, jtag теряет свзяь с платой. Или как-то можно отладить загрузку с эмулятором?  

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


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

а вы сделайте ресет в отладчике - он должен встать стартовый адрес, по идее.

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


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

4 минуты назад, dxp сказал:

а вы сделайте ресет в отладчике - он должен встать стартовый адрес, по идее.

Спасибо попробую. Мне кажется для того чтобы моя программа стартовала из флеша нужно как-то отредактировать LDF.

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


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

Насколько помню, в фине всегда сначала стартует жёстко зашитый загрузчик, который производит анализ бутстрапных пинов, выбирает источник загрузки и производит собственно загрузку образа в память для выполнения. Как раз образ ldr и нужен для того, чтобы этот загрузчик правильно загрузил все секции в память (обнулил zero секции, скопировал инициализаторы в секции с инициализированными данными, скопировал код программы в память программ и т.д.). Но у вас ситуация немного другая - вам этот образ с секциями не нужен, т.к. вы хотите выполнять сразу программу из флеши. Поэтому во флешь нужно залить прямо сразу исполняемый код программы, а не образ (ldr) - если там будет образ, то его исполнение конечно закончится неудачей. Возможно, это у вас и происходит.

 

И ещё нужно иметь в виду, что если вы сразу начинаете выполнять программу, то всю эту подготовительную работу (обнуление/инициализация переменных и т.д.) ваша программа должна уже будет делать сама, т.к. вшитый загрузчик это не сделал, а просто передал управление на выполнение из внешней памяти. Выполнение из внешней памяти вместо загрузки образа, имхо, не лучший вариант, он медленный и вышеуказанные накладные возникают. Я его ни разу не пробовал, поэтому детальнее подсказать не могу. 

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


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

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

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

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

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

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

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

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

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

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