nanorobot 6 4 сентября, 2023 Опубликовано 4 сентября, 2023 (изменено) · Жалоба До недавнего времени довольствовался экспериментами с заливкой приложения через 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, при условии, что у меня все сделано верно? В моем случае не работает.. Изменено 5 сентября, 2023 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба А ddr память инициалищирует кто? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба awboot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба У процессора есть регистр, в который можно записать адрес таблицы векторов. Вполне в толще кода можно разместить с выполнением требований по выравниванию Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба номинально я об этом знаю... но не использовал, попытаюсь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба 35 минут назад, nanorobot сказал: что нет принципиального понимания работы этого механизма Для начала, есть рабочий бинарь, который нормально запускается, если его через xfel загрузить и запустить? Если п1 есть, тогда просто запишите его на флешку, и awboot-ом грузите его с адреса, куда грузили xfel-ом, перед запуском отключите прерывания, кэш и мму и запускайте... 38 минут назад, nanorobot сказал: LOADER_HEADER при загрузке через J-Link, при условии, что у меня все сделано верно? Пользуйтесь лучше xfel по usb, проще и понятнее, ИМХО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба 11 minutes ago, mantech said: Для начала, есть рабочий бинарь, который нормально запускается, если его через xfel загрузить и запустить? Если п1 есть, тогда просто запишите его на флешку, и awboot-ом грузите его с адреса, куда грузили xfel-ом, перед запуском отключите прерывания, кэш и мму и запускайте... Пользуйтесь лучше xfel по usb, проще и понятнее, ИМХО. 1. Да, рабочий бинарь есть. Рабочим он является в том случае, если в нем НЕ размещен LOADER_HEADER .. 2. То есть без всяких хидеров, используя фактическре значение длины прошивки? попробую .. 3. В SPI NOR так и заливаю, XFEL USB, но пока финального бинарника нет с JLink как то привычнее, все под контролем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 4 сентября, 2023 Опубликовано 4 сентября, 2023 (изменено) · Жалоба 1 hour ago, nanorobot said: awboot Это ответ про инициадизацию памяти? Как? Изменено 4 сентября, 2023 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба On 9/4/2023 at 2:30 PM, GenaSPB said: Как? как-то так https://github.com/szemzoa/awboot/blob/main/arch/arm32/mach-t113s3/dram.c#L3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба Да, это ответ на вопрос кто инициализирует DDR?. Вопрос "как?" не понял .. 1 minute ago, sasamy said: как-то так https://github.com/szemzoa/awboot/blob/main/arch/arm32/mach-t113s3/dram.c#L3 точки над i расставлены ... )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 4 сентября, 2023 Опубликовано 4 сентября, 2023 (изменено) · Жалоба 2 minutes ago, nanorobot said: Да, это ответ на вопрос кто инициализирует DDR?. Вопрос "как?" не понял .. вы к себе вкомпилировали? Понял. Там выше я переназначение векторов показал. Используются функции CMSIS для доступа к регистрам CP15 Изменено 4 сентября, 2023 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба Just now, GenaSPB said: вы к себе вкомпилировали? Понял. Там выше я переназначение векторов показал. Нет, нет .. Awboot прошит в SPI NOR c EGON хидером, запускается инициализирует DDR и еще много чего, плюс я добавил иницализацию пинов JLink Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба 20 минут назад, nanorobot сказал: 1. Да, рабочий бинарь есть. Рабочим он является в том случае, если в нем НЕ размещен LOADER_HEADER .. Тогда не понял что вы хотите, вам нужно просто добавить к загружаемому бинарю N байт под какую-то служебную инфу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 4 сентября, 2023 Опубликовано 4 сентября, 2023 (изменено) · Жалоба 9 minutes ago, mantech said: Тогда не понял что вы хотите, вам нужно просто добавить к загружаемому бинарю N байт под какую-то служебную инфу? Ранее, для F1C100S я использовал бутлоадер Simple Loader и там был задан подход близкий к BROM, приложение пишется в SPI NOR с адреса 0х10000, с хидером, Simple Loader считывает из него Magic code и параметры прошивки. Я этот подход пытаюсь распространить и на текущий проект с Т113, модифицируя под него awboot Изменено 4 сентября, 2023 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 4 сентября, 2023 Опубликовано 4 сентября, 2023 · Жалоба Только что, nanorobot сказал: Я этот пожход пытаюсь распространить и на текущий проект с Т113, модифицируя под него awboot А я вижу это так, есть бинарь, скомпилированный под адрес 0х40000000 и который нормально работает. После этого вы в начало этого бинаря прошиваете какую-то непонятную инфу с вашими хидерами и пр и он почему-то перестает работать? Да и с чего бы так))))))) Допустим, ваш хидер занимает 16 байт. Вы должны указать линкеру, что старт будет со смещением в 16 байт, а потом через секции линкера дописать ваш хидер, после этого грузить бинарь с адрема 40000000, а запускать с этого адреса+ 16... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться