|  |  | 
|  | Nios Development Kit | 
|  | Cyclone Editions | 
|  |  | 
|  | Last Update: January 2, 2004 | 
|  | ==================================================================== | 
|  |  | 
|  | This file contains information regarding U-Boot and the Altera | 
|  | Nios Development Kit, Cyclone Edition (DK-1C20). For general Nios | 
|  | information see doc/README.nios. | 
|  |  | 
|  | For those interested in contributing ... see HELP WANTED section | 
|  | in doc/README.nios. | 
|  |  | 
|  | Contents: | 
|  |  | 
|  | 1. Files | 
|  | 2. Memory Organization | 
|  | 3. Examples | 
|  | 4. Programming U-Boot into FLASH with GERMS | 
|  | 5. Active Serial Memory Interface (ASMI) Support | 
|  |  | 
|  | ==================================================================== | 
|  |  | 
|  | 1. Files | 
|  | ========= | 
|  | board/altera/dk1c20/* | 
|  | include/configs/DK1C20.h | 
|  |  | 
|  | 2. Memory Organization | 
|  | ======================= | 
|  |  | 
|  | -The heap is placed below the monitor (U-Boot code). | 
|  | -Global data is placed below the heap. | 
|  | -The stack is placed below global data (&grows down). | 
|  |  | 
|  | 3. Examples | 
|  | ============ | 
|  |  | 
|  | The hello_world example works fine. The default load address | 
|  | is 0x0100_0000 (the start of SDRAM). | 
|  |  | 
|  |  | 
|  | 4. Programming U-Boot into FLASH with GERMS | 
|  | ============================================ | 
|  | The current version of the DK-1C20 port with the default | 
|  | configuration settings occupies about 81 KBytes of flash. | 
|  | A minimal configuration occupies less than 60 KByte (asmi | 
|  | and network support disabled). | 
|  |  | 
|  | To program U-Boot into the DK-1C20 flash using GERMS do the | 
|  | following: | 
|  |  | 
|  | 1. From the command line, download U-Boot using the nios-run: | 
|  |  | 
|  | $ nios-run -r u-boot.srec | 
|  |  | 
|  | This takes about 45 seconds (GERMS is not very speedy here). | 
|  | After u-boot is downloaded it will be executed. You should | 
|  | see the following: | 
|  |  | 
|  | U-Boot 1.0.0-pre (Oct  4 2003 - 07:39:24) | 
|  |  | 
|  | CPU: Nios-32 Rev. 3.3 (0x3038) | 
|  | Reg file size: 256 LO_LIMIT/HI_LIMIT: 2/14 | 
|  | Board: Altera Nios 1C20 Development Kit | 
|  | In:	   serial | 
|  | Out:   serial | 
|  | Err:   serial | 
|  | ==> | 
|  |  | 
|  |  | 
|  | 2. Quit nios-run and start your terminal application (e.g. start | 
|  | Hyperterminal or minicom). | 
|  |  | 
|  | 3. Download the u-boot code to RAM. When using Hyperterminal, do the | 
|  | following: | 
|  |  | 
|  | a.  From the u-boot command prompt start a binary download to SRAM: | 
|  |  | 
|  | ==> loadb 800000 | 
|  |  | 
|  | b. Download u-boot.bin using kermit. | 
|  |  | 
|  | 4. From the U-Boot command prompt, erase flash 0x40000 to 0x5ffff: | 
|  |  | 
|  | ==> erase 1:4-5 | 
|  |  | 
|  | 5. Copy the binary image from SRAM to flash: | 
|  |  | 
|  | ==> cp.b 800000 40000 10000 | 
|  |  | 
|  | U-Boot will now automatically start when the board is powered on or | 
|  | reset using the Standard-32 configuration. To start U-Boot with the | 
|  | Safe-32 configuration, enter the following GERMS command: | 
|  |  | 
|  | + g 40000 | 
|  |  | 
|  | 5. Active Serial Memory Interface (ASMI) Support | 
|  | ================================================ | 
|  | ASMI is fully supported in U-Boot. Please note that ASMI is supported | 
|  | only on Cyclone devices. Do not expect ASMI to work with Stratix or | 
|  | APEX devices. | 
|  |  | 
|  | ************* IMPORTANT ************* | 
|  | =================================================== | 
|  | IN ORDER FOR THE NIOS ASMI TO OPERATE PROPERLY, THE | 
|  | CYCLONE DEVICE MUST BE CONFIGURED USING JTAG OR ASMI. | 
|  |  | 
|  | There are two techniques you can use to bootstrap the ASMI. The | 
|  | first is to use the program_epcs utility that is part of Altera's SDK. | 
|  | But I've found program_epcs to be slow and cumbersome at best. | 
|  |  | 
|  | An undocumented alternative is to use the Quartus device programing | 
|  | interface: | 
|  |  | 
|  | 1. Select "Active Serial" mode. | 
|  |  | 
|  | 2. Choose the xxx.pof file. For example, for the standard_32 | 
|  | configuration use the "standard_32.pof" file. | 
|  |  | 
|  | 3. Attach your ByteBlaster to J28. Make sure you have the | 
|  | cable attached properly -- the orientation of J28 is | 
|  | different than J24 (the JTAG header). On J28, pin 1 is on | 
|  | the bottom row, left-most pin. | 
|  |  | 
|  | 4. Press and hold the "Power-On Reset" switch (SW10). You will | 
|  | see the green "Loading" and red "Error" LEDs (LED3 and LED4) | 
|  | in the on state. | 
|  |  | 
|  | 5. While holding down the "Power-On Reset" switch, start the | 
|  | programming sequence. This only takes about 10 seconds. | 
|  |  | 
|  | 6. After programming is complete, release the "Power-On Reset" | 
|  | switch. The Cyclone device should now load its configuration | 
|  | from the EPCS4 (U59). The green "User" LED (LED 1) should be | 
|  | blinking if the device was successfully loaded via ASMI. | 
|  |  | 
|  | 7. Remove the ByteBlaster cable. The cable must be removed to | 
|  | allow the Nios ASMI access to the EPCS4 device. | 
|  |  | 
|  | After you have successfully programmed a configuration into the | 
|  | EPCS4, the ASMI will be used to load the Cyclone configuration | 
|  | unless the "Force Safe" switch (SW9) is pressed. | 
|  |  | 
|  | NOTE: To maximize the amount of space available for program use, | 
|  | you can enable configuration compression in Quartus. With compression | 
|  | enabled, the size of the standard_32 configuration data is | 
|  | approximately 192 KBytes. | 
|  |  | 
|  | To use the U-Boot ASMI commands, try typing "help asmi" at the | 
|  | command prompt. The command "asmi info" will show the current | 
|  | status of the ASMI. |