nios2: add README.nios2
authorThomas Chou <thomas@wytron.com.tw>
Wed, 21 Oct 2015 14:37:04 +0000 (22:37 +0800)
committerThomas Chou <thomas@wytron.com.tw>
Fri, 23 Oct 2015 06:55:48 +0000 (14:55 +0800)
Add README.nios2 about how to add nios2 boards to u-boot.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
Acked-by: Marek Vasut <marex@denx.de>
doc/README.nios2 [new file with mode: 0644]

diff --git a/doc/README.nios2 b/doc/README.nios2
new file mode 100644 (file)
index 0000000..2dab7d1
--- /dev/null
@@ -0,0 +1,95 @@
+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/3c120_devboard.dts.
+
+1. Add "stdout-path=..." property with your serial path to the chosen
+node, like this,
+       chosen {
+               stdout-path = &jtag_uart;
+       };
+
+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
+nios2-generic_defconfig, modify the options and save it.
+
+$ make nios2-generic_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 nios2-generic.h.
+
+$ cp include/configs/nios2-generic.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          0xD0000000
+#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!