Jump to content

    
dde29

MAX10, Одна из Image - в качестве бутлодера

Recommended Posts

Всем привет! давненько меня тут не было...)

В данный момент знакомлюсь с MAX 10-м. А конкретно разбираюсь как использовать одну области CFM в качестве бутлодера для перепрошивки второй области CFM. Идея, надеюсь, понятна :) реализовать возможность смены основной прошивки плис удаленно, не используя программатор...

На данный момент реализовал переключение между двумя образами командой по УАРТ, читаю Status и Control Register используя OnChip Flash IP-Core и соответственно стирать определенные области памяти UFM и CFM. Осталось реализовать запись по тому же УАРТ другой основной прошивки, но не могу разобраться какой из форматов образов нужно генерить и передавать - POF, SOF или RPD??? Насколько я понял, нужно что-то откуда генерить используя различные настройки, но что именно так и не разобрался...

Может кто-нить занимался данной проблемой

P.S. Ниос не перевариваю...

Share this post


Link to post
Share on other sites

Если dual image то в cfm 1 и 2 хранится pof, который вы генерируете совмещая 2 sof в quartus, по сути это 2 сжатых sof, но чем сжаты я не нашёл. Можно прочитать cfm и сравнить с pof. И самое главное в cfm байты перевернуты.

Share this post


Link to post
Share on other sites
23 hours ago, Вася0 said:

Если dual image то в cfm 1 и 2 хранится pof, который вы генерируете совмещая 2 sof в quartus, по сути это 2 сжатых sof, но чем сжаты я не нашёл. Можно прочитать cfm и сравнить с pof. И самое главное в cfm байты перевернуты.

Да, в CFM0 хранится один образ, а в CFM1 и 2 хранится второй. Естественно, когда я зашиваю первый раз через JTAG я так и делаю - из двух SOF генерю один POF и зашиваю. Но а что делать потом) Когда уже по не JTAG, а по какому-то основному интерфейсу, в моем случае, UART необходимо передать только один образ, в каком-то формате (вопрос в каком и как его сделать!) и правильно его запилить по нужному адресу.

Про то, что в CFM байты перевернуты я учту, спасибо.

18 hours ago, Вася0 said:

NIOS II Processor Booting Methods in MAX 10 Devices pdf страница 22 там написано как сгенерировать pof

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

Share this post


Link to post
Share on other sites

Наконец-то добился того, что удалось считать записанную область CFM0, соответствующую одному образу. 

Полученный файл очень похож на искусственно сгенерированный файл *.rpd. Но, чтобы его сгенерировать, необходимо каждый раз указывать второй образ CFM1, хотя какое он отношение имеет с независимому от него образу в CFM0 пока не разобрался... Буду копать дальше. Попробую данный сгенерированный *.rpd записать насильно в CFM0 используя свой УАРТ и OnFlashChip, и посмотрю что получится...

Share this post


Link to post
Share on other sites
On 4/13/2019 at 7:07 PM, dde29 said:

Наконец-то добился того, что удалось считать записанную область CFM0, соответствующую одному образу. 

Полученный файл очень похож на искусственно сгенерированный файл *.rpd. Но, чтобы его сгенерировать, необходимо каждый раз указывать второй образ CFM1, хотя какое он отношение имеет с независимому от него образу в CFM0 пока не разобрался... Буду копать дальше. Попробую данный сгенерированный *.rpd записать насильно в CFM0 используя свой УАРТ и OnFlashChip, и посмотрю что получится...

в том то и дело что сгенерированный файл *.rpd похож на область CFM1 но не идентичен. поэтому когда я заливаю cfm1.rpd в CFM1-2  сериально второй образ не поднимается.

Share this post


Link to post
Share on other sites
21.07.2019 в 11:35, jenya7 сказал:

в том то и дело что сгенерированный файл *.rpd похож на область CFM1 но не идентичен. поэтому когда я заливаю cfm1.rpd в CFM1-2  сериально второй образ не поднимается.

Здравствуйте. Столкнулся с похожей проблемой, что сгенерированный rpd файл не идентичен тому, что я получаю при считывании зашитого бластером pof файла.
Вы смогли сгенерировать рабочий rpd файл?

Share this post


Link to post
Share on other sites
19 hours ago, v0idname said:

Здравствуйте. Столкнулся с похожей проблемой, что сгенерированный rpd файл не идентичен тому, что я получаю при считывании зашитого бластером pof файла.
Вы смогли сгенерировать рабочий rpd файл?

 у меня был баг в генерации записываемого слова. у вас галка Big Endian в Options/Boot info выставлена?

Edited by jenya7

Share this post


Link to post
Share on other sites
4 часа назад, jenya7 сказал:

 у меня был баг в генерации записываемого слова. у вас галка Big Endian в Options/Boot info выставлена?

 

После Вашего сообщения заметил, что сгенерированный rpd и считанная память, зашитая через pof, отличаются порядком байт в каждом 32-битном слове файла прошивки (я прошиваю flash побайтно). После перестановки байт и прошивки через UART всё заработало. Спасибо!
Перед этим попробовал опцию Big Endian в Options/Boot info и оказалось, что она делает реверс бит в каждом байте (!), а не меняет порядок байт, т.е. это не то, что нужно было для решения проблемы.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.