Запуск 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