реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> SoC Cyclon V. Конвертация axf в img, Не запускается baremetal программа с SD карточки
nmurzin
сообщение Jun 8 2017, 19:00
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 94
Регистрация: 24-11-10
Из: г.Зеленоград
Пользователь №: 61 141



Работаю с Quartus 17.0 + SoC EDS.
Тренируюсь на KIT для Cyclon V.
На SD карточке зашивка ПЛИС и baremetal программка.
При включении Preloader грузит зашивку ПЛИС, я вижу что она работает.
А вот baremetal программа не работает(светодиоды не мигают).

Чувствую что ошибка где-то при переходе от файла axf к файлу img.
Я получил файл img следующим образом.

Преобразовал файл axf в bin командой
arm-altera-eabi-objcopy\
-O binary altera_gcc_hps_led.axf\
altera_gcc_hps_led.bin

Преобразовал файл bin в img командой
mkimage\
-A arm\
-O u-boot\
-T standalone\
-C none\
-a 0x100040\
-e 0x100040\
-n "baremetal image"\
-d altera_gcc_hps_led.bin\
altera_gcc_hps_led.img

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


В свойствах проекта DS-5 линкеру указывается файл cycloneV-dk-ram.ld
На просторах интернета видел вот такой совет.
Будто бы файл для линкера cycloneV-dk-ram.ld надо поправить руками,
а конкретно на строке 24 должно быть так
MEMORY
{
boot_rom (rx) : ORIGIN = 0xfffd0000, LENGTH = 64K
oc_ram (rwx) : ORIGIN = 0xffff0000, LENGTH = 64K
/* Need to have 64bytes available before start of program, to store the mkimage header */
ram (rwx) : ORIGIN = 0x100000 + 0x40, LENGTH = 1023M - 0x40
}

Я это пока не пробовал и не понимаю зачем это.

Кто нибудь пролейте свет по этому вопросу?
Зачем руками править файл cycloneV-dk-ram.ld
И какой смысл несут параметры -a адрес загрузки и -е точка входа команды mkimage.
И как это вообще все друг с другом связано?
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 9 2017, 01:53
Сообщение #2


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(nmurzin @ Jun 8 2017, 23:00) *
Преобразовал файл bin в img командой
mkimage\
-A arm\
-O u-boot\
-T standalone\
-C none\
-a 0x100040\
-e 0x100040\
-n "baremetal image"\
-d altera_gcc_hps_led.bin\
altera_gcc_hps_led.img

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

Приветствую.
Я использую немного другой синтаксис для mkimage :
Код
mkimage -A arm -T standalone -C none -a 0x100000 -e 0 -n "baremetal image" -d app_binary.bin app.img

Попробуйте.

Цитата
В свойствах проекта DS-5 линкеру указывается файл cycloneV-dk-ram.ld
На просторах интернета видел вот такой совет.
Будто бы файл для линкера cycloneV-dk-ram.ld надо поправить руками,
а конкретно на строке 24 должно быть так
MEMORY
{
boot_rom (rx) : ORIGIN = 0xfffd0000, LENGTH = 64K
oc_ram (rwx) : ORIGIN = 0xffff0000, LENGTH = 64K
/* Need to have 64bytes available before start of program, to store the mkimage header */
ram (rwx) : ORIGIN = 0x100000 + 0x40, LENGTH = 1023M - 0x40
}


Использую компилятор ARM, файл линкера такой:
Код
SDRAM 0x00100000 0x40000000
{
    VECTORS +0
    {
        * (VECTORS, +FIRST)
    }

    APP_CODE +0
    {
        * (+RO, +RW, +ZI)
    }

  ; Application heap and stack
    ARM_LIB_STACKHEAP  +0 ALIGN 16 EMPTY  0x4000; Application heap and stack
    {
    }
}

OCRAM 0xFFFF0000 0xFFFFF000
{
    TLB +0 ALIGN 16384 UNINIT 0x4000
    {
        *(tlb_table)
    }
    
    
}

Область OCRAM используется для расположения таблицы MMU, всё остальное - в DDR SDRAM.
Смещение в 64 байта не делаю, нафиг не нужно оказалось.

Вообще, неплохо для начала использовать дебаггер, в нём видно будет весь процесс.
А в слепую тяжеловато ковыряться.

Прелоадер какую информацию по UART выдаёт?
Лог загрузки (в случае MPL загрузчика) обычно такой:
Код
INIT: MPL build: May  7 2017 20:11:53
INIT: Initializing board.
INIT: MPU clock = 800 MHz
INIT: DDR clock = 400 MHz
INIT: Initializing successful.
MPL: SDRAM Size is 1048576KB.
MPL: Booting from FAT.
FAT: Mounting FAT.
FAT: Read image [app.img] header.
FAT: Read remaining image data.
FAT: Image loaded to memory.
FAT: Read FPGA [fpga.img] header.
FAT: Read remaining FPGA data.
FAT: FPGA loaded to memory.
MPL: FPGA configured.
MPL: Launching next stage.
Go to the top of the page
 
+Quote Post
nmurzin
сообщение Jun 9 2017, 07:52
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 94
Регистрация: 24-11-10
Из: г.Зеленоград
Пользователь №: 61 141



Как, Preloder может выдавать информацию о своем ходе по UART?
Что для этого нужно сделать?
Нужно какие-то галочки поставить в bsp-editor?
Или нужно в DS-5 как-то настроиться?
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 9 2017, 09:46
Сообщение #4


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(nmurzin @ Jun 9 2017, 11:52) *
Как, Preloder может выдавать информацию о своем ходе по UART?
Что для этого нужно сделать?
Нужно какие-то галочки поставить в bsp-editor?
Или нужно в DS-5 как-то настроиться?

Да, просто поставить галочку в bsp-editor напротив опции SERIAL_SUPPORT.
Потом подключаетесь к порту UART0 со стандартными настройками 9600 8n1 и все.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 10 2017, 18:12
Сообщение #5


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



PS: по последнему посту поправочка - скорость UART должна быть 115200 бод, а не 9600.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 02:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016