Merge git://git.denx.de/u-boot-dm
[platform/kernel/u-boot.git] / doc / README.nios2
1 Nios II is a 32-bit embedded-processor architecture designed
2 specifically for the Altera family of FPGAs.
3
4 Please refer to the link for more information on Nios II,
5 https://www.altera.com/products/processors/overview.html
6
7 Please refer to the link for Linux port and toolchains,
8 http://rocketboards.org/foswiki/view/Documentation/NiosIILinuxUserManual
9
10 The Nios II port of u-boot is controlled by device tree. Please check
11 out doc/README.fdt-control.
12
13 To add a new board/configuration (eg, mysystem) to u-boot, you will need
14 three files.
15
16 1. The device tree source which describes the hardware, dts file.
17     arch/nios2/dts/mysystem.dts
18
19 2. Default configuration of Kconfig, defconfig file.
20     configs/mysystem_defconfig
21
22 3. The legacy board header file.
23     include/configs/mysystem.h
24
25 The device tree source must be generated from your qsys/sopc design
26 using the sopc2dts tool. Then modified to fit your configuration. Please
27 find the sopc2dts download and usage at the wiki,
28 http://www.alterawiki.com/wiki/Sopc2dts
29
30 $ java -jar sopc2dts.jar --force-altr -i mysystem.sopcinfo -o mysystem.dts
31
32 You will need to add additional properties to the dts. Please find an
33 example at, arch/nios2/dts/3c120_devboard.dts.
34
35 1. Add "stdout-path=..." property with your serial path to the chosen
36 node, like this,
37         chosen {
38                 stdout-path = &jtag_uart;
39         };
40
41 2. If you use SPI/EPCS or I2C, you will need to add aliases to number
42 the sequence of these devices, like this,
43         aliases {
44                 spi0 = &epcs_controller;
45         };
46
47 Next, you will need a default config file. You may start with
48 nios2-generic_defconfig, modify the options and save it.
49
50 $ make nios2-generic_defconfig
51 $ make menuconfig
52 $ make savedefconfig
53 $ cp defconfig configs/mysystem_defconfig
54
55 You will need to change the names of board header file and device tree,
56 and select the drivers with menuconfig.
57
58 Nios II architecture  --->
59   (mysystem) Board header file
60 Device Tree Control  --->
61   (mysystem) Default Device Tree for DT control
62
63 There is a selection of "Provider of DTB for DT control" in the Device
64 Tree Control menu.
65
66 ( ) Separate DTB for DT control, will cat the dtb to end of u-boot
67 binary, output u-boot-dtb.bin. This should be used for production.
68 If you use boot copier, like EPCS boot copier, make sure the copier
69 copies all the u-boot-dtb.bin, not just u-boot.bin.
70
71 ( ) Embedded DTB for DT control, will include the dtb inside the u-boot
72 binary. This is handy for development, eg, using gdb or nios2-download.
73
74 The last thing, legacy board header file describes those config options
75 not covered in Kconfig yet. You may copy it from nios2-generic.h.
76
77 $ cp include/configs/nios2-generic.h include/configs/mysystem.h
78
79 Please change the SDRAM base and size to match your board. The base
80 should be cached virtual address, for Nios II with MMU it is 0xCxxx_xxxx
81 to 0xDxxx_xxxx.
82
83 #define CONFIG_SYS_SDRAM_BASE           0xD0000000
84 #define CONFIG_SYS_SDRAM_SIZE           0x08000000
85
86 You will need to change the environment variables location and setting,
87 too. You may change other configs to fit your board.
88
89 After all these changes, you may build and test.
90
91 $ export CROSS_COMPILE=nios2-elf-  (or nios2-linux-gnu-)
92 $ make mysystem_defconfig
93 $ make
94
95 Enjoy!