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

 
 
> 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
 
Start new topic
Ответов
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



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

 


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


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