Запуск u-boot на Nios II
Скачиваем юбут с сайта http://rocketboards.org.
Собираем его для конфигурации nios2-generic_config при этом следует использовать компилятор nios2-elf-gcc из дистрибутива quartus. Для примера он может находится вот по этому пути внутри qurtus: nios2eds/bin/gnu/H-x86_64-pc-linux-gnu/bin
мною для сборки u-boot для nios ii использовался простейший скрипт:
#!/bin/sh export PATH=$PATH:altera/14.1/nios2eds/bin/gnu/H-x86_64-pc-linux-gnu/bin make cp u-boot u-boot.elf
Итак, конфигурим u-boot под nios ii и запускаем скрипт
$ make nios2-generic_config $ ./run_make.sh
В результате сборки получаем файл u-boot в формате elf, в скрипте происходит его переименование на u-boot.elf.
Подразумевается что nios ii зашит в fgpa. Заливать юбут будем с помощью jtag usb-blaster адаптера и в качестве ПО используем eclipse. Сам eclipse запускается через qurtus.
Заливаем юбут так:
1. создаем проект в еклипс. 2. пкм на проекте ->Run as -> Run configuration. Там выберем elf файл для заливки и нажмем Run.
Аналогичным образом можно запустить Debug режим, в котором есть возможность поразбираться почему не пашет залитый uboot.
Следует отметить важный файл u-boot/include/configs/nios2-generic.h в этом файле подключается еще один более важный файл:
#include "../board/altera/nios2-generic/custom_fpga.h" /* fpga parameters */
Содержимое этого файла следует получить с помощью утилиты sopc2dts запустив её следующим образом:
$ java -jar sopc2dts.jar —gui
и передав ей файл kernel.sopcinfo из проекта в quartus
Порт для стандартного вывода информации определяется макросом CONFIG_SYS_NIOS_CONSOLE, который может принимать два значения:
#define CONFIG_SYS_NIOS_CONSOLE CONFIG_SYS_JTAG_UART_BASE #define CONFIG_SYS_NIOS_CONSOLE CONFIG_SYS_UART_BASE
лог загрузки u-boot для nios-ii:
U-Boot 2015.04-dirty (Feb 10 2016 - 11:51:51) CPU : Nios-II SYSID : 00000000, Tue Feb 09 11:59:12 2016 BOARD : nios2-generic DRAM: 32 MiB Using default environment Net: enc0.0 => printenv baudrate=115200 ethact=enc0.0 ethaddr=12:34:56:78:99:01 fdt_addr=0xc5200000 fdt_file=nios/nios.dtb ipaddr=192.168.1.100 kernel_addr=0xc5000000 kernel_file=nios/vmImage led_addr=0xc5200000 led_file=nios/hello_led.elf load_kernel=tf ${fdt_addr} ${fdt_file}; tf ${kernel_addr} ${kernel_file}; run start_kernel load_leds=tf ${led_addr} ${led_file}; serverip=192.168.1.10 start_kernel=bootm ${kernel_addr} - ${fdt_addr} start_only_kern=bootm ${kernel_addr} stderr=serial stdin=serial stdout=serial update_tst=tf nios/tst.txt Environment size: 559/131068 bytes