nmurzin 0 8 июня, 2017 Опубликовано 8 июня, 2017 · Жалоба Работаю с 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. И как это вообще все друг с другом связано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 9 июня, 2017 Опубликовано 9 июня, 2017 · Жалоба Преобразовал файл 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nmurzin 0 9 июня, 2017 Опубликовано 9 июня, 2017 · Жалоба Как, Preloder может выдавать информацию о своем ходе по UART? Что для этого нужно сделать? Нужно какие-то галочки поставить в bsp-editor? Или нужно в DS-5 как-то настроиться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 9 июня, 2017 Опубликовано 9 июня, 2017 · Жалоба Как, Preloder может выдавать информацию о своем ходе по UART? Что для этого нужно сделать? Нужно какие-то галочки поставить в bsp-editor? Или нужно в DS-5 как-то настроиться? Да, просто поставить галочку в bsp-editor напротив опции SERIAL_SUPPORT. Потом подключаетесь к порту UART0 со стандартными настройками 9600 8n1 и все. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 10 июня, 2017 Опубликовано 10 июня, 2017 · Жалоба PS: по последнему посту поправочка - скорость UART должна быть 115200 бод, а не 9600. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться