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

T113-S3. Ламерский вопрос по работе бутлоадера.

До недавнего времени довольствовался экспериментами с заливкой приложения через J-Link, в SPI NOR прошит awboot, в который я добавил инициализацию пинов JTAG. Теперь пытаюсь допилить awboot до возможности загрузки приложения из SPI NOR (изначально не поддерживается).  Формирую в проекте LOADER_HEADER следующего вида:

#if defined (LOAD_HEADER)

b _reset

.long 0x5555AAAA

.long (__image_start) /* start */

.long (__image_end) /* end */

.long 0 /* reserved */

.long 0 /* reserved for CRC */

#endif
 

Модифицированный awboot успешно считывает Magic code 0x5555AAAA а также __image_start и __image_end, формируемые в скрипте линкера, и имеющие верные значения. Затем приложение копируется в DDR RAM и запускается командой

__asm__ __volatile__ ("ldr pc, =0x40000000" : : : "memory"

и не работает ...

В этом месте я понял, что нет полного понимания работы этого механизма, а именно: Этот хидер, на мой взгляд, будучи расроложенным в самом начале приложения, сдвигает вектора прерываний на значение равное своей длине, и соответственно корректное исполнение кода становится невозможно(?).
Тут напрашивается и еще один вопрос: должно ли корректно работать приложение с размещенным в нем LOADER_HEADER при загрузке через J-Link, при условии, что у меня все сделано верно? В моем случае не работает..

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

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


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

У процессора есть регистр, в который можно записать адрес таблицы векторов.  Вполне в толще кода можно разместить с выполнением требований по выравниванию

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


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

35 минут назад, nanorobot сказал:

что нет принципиального понимания работы этого механизма

Для начала, есть рабочий бинарь, который нормально запускается, если его через xfel загрузить и запустить?

Если п1 есть, тогда просто запишите его на флешку, и awboot-ом грузите его с адреса, куда грузили xfel-ом, перед запуском отключите прерывания, кэш и мму и запускайте...

38 минут назад, nanorobot сказал:

LOADER_HEADER при загрузке через J-Link, при условии, что у меня все сделано верно?

Пользуйтесь лучше xfel по usb, проще и понятнее, ИМХО.

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


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

11 minutes ago, mantech said:

Для начала, есть рабочий бинарь, который нормально запускается, если его через xfel загрузить и запустить?

Если п1 есть, тогда просто запишите его на флешку, и awboot-ом грузите его с адреса, куда грузили xfel-ом, перед запуском отключите прерывания, кэш и мму и запускайте...

Пользуйтесь лучше xfel по usb, проще и понятнее, ИМХО.

1. Да, рабочий бинарь есть. Рабочим он является в том случае, если в нем НЕ размещен LOADER_HEADER ..
2. То есть без всяких хидеров, используя фактическре значение длины прошивки? попробую ..
3. В SPI NOR так и заливаю, XFEL USB, но пока  финального бинарника нет с JLink как то привычнее, все под контролем.

 

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


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

1 hour ago, nanorobot said:

awboot

Это ответ про инициадизацию памяти? Как?

image.thumb.png.233d49a799738f6ac3f86c28d0559cae.png

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

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


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

On 9/4/2023 at 2:30 PM, GenaSPB said:

Как?

как-то так

https://github.com/szemzoa/awboot/blob/main/arch/arm32/mach-t113s3/dram.c#L3

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


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

Да, это ответ  на вопрос кто инициализирует DDR?. Вопрос "как?" не понял ..

 

1 minute ago, sasamy said:

точки над i расставлены ... ))

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


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

2 minutes ago, nanorobot said:

Да, это ответ  на вопрос кто инициализирует DDR?. Вопрос "как?" не понял ..

 

вы к себе вкомпилировали? Понял.

Там выше я переназначение векторов показал. Используются функции CMSIS для доступа к регистрам CP15

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

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


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

Just now, GenaSPB said:

вы к себе вкомпилировали? Понял.

Там выше я переназначение векторов показал.

Нет, нет .. Awboot  прошит в SPI NOR c EGON хидером, запускается инициализирует DDR и еще много чего, плюс я добавил иницализацию пинов JLink

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


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

20 минут назад, nanorobot сказал:

1. Да, рабочий бинарь есть. Рабочим он является в том случае, если в нем НЕ размещен LOADER_HEADER ..

Тогда не понял что вы хотите, вам нужно просто добавить к загружаемому бинарю N байт под какую-то служебную инфу?

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


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

9 minutes ago, mantech said:

Тогда не понял что вы хотите, вам нужно просто добавить к загружаемому бинарю N байт под какую-то служебную инфу?

Ранее, для F1C100S я использовал бутлоадер Simple Loader и там был задан подход близкий к BROM,  приложение пишется в SPI NOR с адреса 0х10000, с хидером,  Simple Loader считывает из него Magic code и параметры прошивки. Я этот подход пытаюсь распространить и на текущий проект с Т113, модифицируя под него awboot

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

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


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

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

Я этот пожход пытаюсь распространить и на текущий проект с Т113, модифицируя под него awboot

А я вижу это так, есть бинарь, скомпилированный под адрес 0х40000000  и который нормально работает. После этого вы в начало этого бинаря прошиваете какую-то непонятную инфу с вашими хидерами и пр и он почему-то перестает работать? Да и с чего бы так)))))))

Допустим, ваш хидер занимает 16 байт. Вы должны указать линкеру, что старт будет со смещением в 16 байт, а потом через секции линкера дописать ваш хидер, после этого грузить бинарь с адрема 40000000, а запускать с этого адреса+ 16...

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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