Jump to content

    

MAX10 Dual Boot.

Есть вопрос. Кто нибудь прожигал rpd файл в FPGA сериально?

Я наладил прошивку через бутлодер. В CFM0 сидит бутлоадер. Создаю rpd файл в тестовом проекте. редактирую rpd файл - сдвигаю CFM1 секцию.
Все указывает на то что файл прожегся на CFM1. Но когда я выставляю ножку BOOT_SELECT подыматься с CFM1 ничего не подымается и подымается CFM0. Очевидно что я что то не так делаю.
Не так создаю rpd файл или не так его прожигаю.
Есть кто нибудь кто знает как создать-прожечь rpd файл?

в Авалон коре запись 32-х битная. я беру по 4 байта из файла и переворачиваю их и передаю в  FPGA

bytes[0] = reversed_byte[raw_data[i]];
bytes[1] = reversed_byte[raw_data[i + 1]];
bytes[2] = reversed_byte[raw_data[i + 2]];
bytes[3] = reversed_byte[raw_data[i + 3]];

SendWrite(bytes);

но может быть надо так?

bytes[0] = reversed_byte[raw_data[i + 3]];
bytes[1] = reversed_byte[raw_data[i + 2]];
bytes[2] = reversed_byte[raw_data[i + 1]];
bytes[3] = reversed_byte[raw_data[i]];

весь путь загрузки rpd файла я представил на картинке

rpd_prog.png

Edited by jenya7

Share this post


Link to post
Share on other sites
1 hour ago, Stewart Little said:

Вы не забываете, что адреса у CFM0 выше, чем у CFM1?

 

я учитываю это. я приложил документ более подробно описывающий весь процесс.

 

в любом случае

CFM1 size = 188415 - 16384 = 172031 bytes.

а размер файла output_file_cfm1_auto.rpd в несколько раз больше.

 

Rpd File Programming Process.doc

Edited by jenya7

Share this post


Link to post
Share on other sites

Хочу вернуться к вопросу создания .rpd  файла для прожига.

Информация очень разрозненная и отрывочная но кое что я понял, нужны прояснения.

1.

Создаем проект BOOTLOADER с Dual Configuration IP.

Создаем .pof файл (где берем второй .sof файл ???)

Прожигаем .pof  бутлодера байт бластером. (CFM0)

2.

Создаем проект MAIN с Dual Configuration IP.

Создаем .pof файл (где берем второй .sof файл ???)

Создаем .rpd файл - файл по размеру больше (CFM1 and CFM2) !!!

Я пытался выковыривать секцию через hex editor и прожигать. Успешно прожигается но когда переключаю пин CONFIG_SEL и делаю ристарт - MAIN не бежит.

Пробовал реверсить байты, хотя если выставить галку Big Endian при создании .rpd файла реверсить байты не надо. так говорят.

 

Кто то разобрался в процессе?

Share this post


Link to post
Share on other sites
On 4/30/2019 at 3:41 PM, jenya7 said:

Хочу вернуться к вопросу создания .rpd  файла для прожига.

...

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

Было дело, нашел на просторах сети вот такой мануал по дуалбуту для макса. К сожалению, сам не пробовал, но, возможно, вам поможет. Будет интересно узнать, получилось что-то или нет.

 

MAX10_Dual_Boot_instruction.doc

Share this post


Link to post
Share on other sites
3 hours ago, nice_vladi said:

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

Было дело, нашел на просторах сети вот такой мануал по дуалбуту для макса. К сожалению, сам не пробовал, но, возможно, вам поможет. Будет интересно узнать, получилось что-то или нет.

 

MAX10_Dual_Boot_instruction.doc

вроде делаю также как в разделе ''Вариант с нуля'' . но после переключения CONFIG_SEL  в 1 MAIN не бежит.

Share this post


Link to post
Share on other sites

вобщем так.

в проекте бутлодера создаю pof с двумя страницами sof. Первая страница sof это сам бутлодер а вторая страница это main проект.

Паралельно генерирую rpd. C 16 версии Квартус автоматически генерирует rpd_cfm0 и rpd_cfm1.

прожигаю pof байт бластером. переключаю пин CONF_SELECT - main бежит, переключаю обратно - бутлодер бежит. все прекрасно.

теперь беру созданный rpd_cfm1 и через бутлодер прожигаю его в секцию CFM1. переключаю пин CONF_SELECT - нихрена, main не бежит.

 

я выборочно сравнил несколько адресов CFM1 секции - в случае прожига байт бластером и в случае прожига через бутлодер - одинаковые значения.

Quote

================== ID3 =================

              GOOD       output_file_both_big_cfm1_auto.rpd
ADDRESS
16384      FF E2 FF     FF E2 FF
16385      FF 92 43     FF 92 43
16386      FF 42 DF     FF 42 DF
16387      A8 75 00     A8 75 00
16388      FF FF FF     FF FF FF
16389      FF FF FF     FF FF FF
16390      FF FF FF     FF FF FF
   
16584      00 00 18     00 00 18
16585      00 00 00     00 00 00

18000      00 05 64     00 05 64

20000      00 00 00     00 00 00

40000      04 40 14     04 40 14
40001      14 C8 82     14 C8 82
40002      96 40 00     96 40 00

40100      42 A1 80     42 A1 80
 
40400      40 00 00     40 00 00

40800      41 87 8A     41 87 8A
40801      51 76 46     51 76 46
40802      06 65 32     06 65 32

40900     00 00 00     00 00 00

50000     43 12 41     43 12 41
50100     71 18 21     71 18 21
50120     10 00 00     10 00 00

50220     71 12 40     71 12 40       

50420     70 11 00     70 11 00

50900     70 75 6D     70 75 6D  

114687   FF FF FF     FF FF FF  

 

================== ID4 ================

ALL FF

 

Вот вам бабушка и Юрьев день.

 

Edited by jenya7

Share this post


Link to post
Share on other sites

Когда я открываю Altera On-Chip Flash IP  я получаю следующие адреса.

sector 3 - 0x10000 - 0x6FFFF

sector 4 - 0x70000 - 0xB7FFF

sector 5 - 0xB8000 - 0x15FFFF

 

qsys.thumb.png.50d8ed056f2e70910e8d96f6f74fa82c.png

Но когда я жму на Generate HDL я получаю

DEVICE_FAMILY                      => "MAX 10",

PART_NAME                          => "10M50DAF484C7G",

DEVICE_ID                          => "50",

 

SECTOR1_START_ADDR                 => 0,

SECTOR1_END_ADDR                   => 8191,

SECTOR2_START_ADDR                 => 8192,

SECTOR2_END_ADDR                   => 16383,

SECTOR3_START_ADDR                 => 16384,

SECTOR3_END_ADDR                   => 114687,

SECTOR4_START_ADDR                 => 114688,

 SECTOR4_END_ADDR                   => 188415,

 SECTOR5_START_ADDR                 => 188416,

 SECTOR5_END_ADDR                   => 360447,

 

Какие адреса правильные?

 

Edited by jenya7

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this