| Nios II is a 32-bit embedded-processor architecture designed | |
| specifically for the Altera family of FPGAs. | |
| Please refer to the link for more information on Nios II, | |
| https://www.altera.com/products/processors/overview.html | |
| Please refer to the link for Linux port and toolchains, | |
| http://rocketboards.org/foswiki/view/Documentation/NiosIILinuxUserManual | |
| The Nios II port of u-boot is controlled by device tree. Please check | |
| out doc/README.fdt-control. | |
| To add a new board/configuration (eg, mysystem) to u-boot, you will need | |
| three files. | |
| 1. The device tree source which describes the hardware, dts file. | |
| arch/nios2/dts/mysystem.dts | |
| 2. Default configuration of Kconfig, defconfig file. | |
| configs/mysystem_defconfig | |
| 3. The legacy board header file. | |
| include/configs/mysystem.h | |
| The device tree source must be generated from your qsys/sopc design | |
| using the sopc2dts tool. Then modified to fit your configuration. Please | |
| find the sopc2dts download and usage at the wiki, | |
| http://www.alterawiki.com/wiki/Sopc2dts | |
| $ java -jar sopc2dts.jar --force-altr -i mysystem.sopcinfo -o mysystem.dts | |
| You will need to add additional properties to the dts. Please find an | |
| example at, arch/nios2/dts/10m50_devboard.dts. | |
| 1. Add "stdout-path=..." property with your serial path to the chosen | |
| node, like this, | |
| chosen { | |
| stdout-path = &uart_0; | |
| }; | |
| 2. If you use SPI/EPCS or I2C, you will need to add aliases to number | |
| the sequence of these devices, like this, | |
| aliases { | |
| spi0 = &epcs_controller; | |
| }; | |
| Next, you will need a default config file. You may start with | |
| 10m50_defconfig, modify the options and save it. | |
| $ make 10m50_defconfig | |
| $ make menuconfig | |
| $ make savedefconfig | |
| $ cp defconfig configs/mysystem_defconfig | |
| You will need to change the names of board header file and device tree, | |
| and select the drivers with menuconfig. | |
| Nios II architecture ---> | |
| (mysystem) Board header file | |
| Device Tree Control ---> | |
| (mysystem) Default Device Tree for DT control | |
| There is a selection of "Provider of DTB for DT control" in the Device | |
| Tree Control menu. | |
| ( ) Separate DTB for DT control, will cat the dtb to end of u-boot | |
| binary, output u-boot-dtb.bin. This should be used for production. | |
| If you use boot copier, like EPCS boot copier, make sure the copier | |
| copies all the u-boot-dtb.bin, not just u-boot.bin. | |
| ( ) Embedded DTB for DT control, will include the dtb inside the u-boot | |
| binary. This is handy for development, eg, using gdb or nios2-download. | |
| The last thing, legacy board header file describes those config options | |
| not covered in Kconfig yet. You may copy it from 10m50_devboard.h. | |
| $ cp include/configs/10m50_devboard.h include/configs/mysystem.h | |
| Please change the SDRAM base and size to match your board. The base | |
| should be cached virtual address, for Nios II with MMU it is 0xCxxx_xxxx | |
| to 0xDxxx_xxxx. | |
| #define CONFIG_SYS_SDRAM_BASE 0xc8000000 | |
| #define CONFIG_SYS_SDRAM_SIZE 0x08000000 | |
| You will need to change the environment variables location and setting, | |
| too. You may change other configs to fit your board. | |
| After all these changes, you may build and test. | |
| $ export CROSS_COMPILE=nios2-elf- (or nios2-linux-gnu-) | |
| $ make mysystem_defconfig | |
| $ make | |
| Enjoy! |