From aaf224ab4ec400abefa17982cbd2ae995adc9978 Mon Sep 17 00:00:00 2001 From: wdenk Date: Sun, 14 Mar 2004 15:20:55 +0000 Subject: * Patch by Stephan Linz, 09 Mar 2004 - Add support for the SSV ADNP/ESC1 (Nios Softcore) * Patch by George G. Davis, 9 Mar 2004: fix recent build failure for SA1100 target * Patch by Travis Sawyer, 09 Mar 2004: Support native interrupt mode for the IBM440GX. Previously it was running in 440GP compatibility mode. --- doc/README.adnpesc1 | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 doc/README.adnpesc1 (limited to 'doc/README.adnpesc1') diff --git a/doc/README.adnpesc1 b/doc/README.adnpesc1 new file mode 100644 index 000000000..1d3dff238 --- /dev/null +++ b/doc/README.adnpesc1 @@ -0,0 +1,235 @@ + + SSV ADNP/ESC1 Embedded Softcore Computing + Nios Softcore, Altera Cyclone FPGA + + Last Update: February 27, 2004 +==================================================================== + +This file contains information regarding U-Boot and the SSV Embedded +Nios Softcore Computing platform ADNP/ESC1. For general Nios +information see doc/README.nios. + +Most stuff of this file was borrowed and based on README.dk1s10, +the Altera DK-1S10 related information file. + +For those interested in contributing ... see HELP WANTED section +in doc/README.nios. + +Contents: + + 1. Files + 2. Memory Organization + 3. CPU Variations + 4. Examples + 5. Programming U-Boot into FLASH with GERMS + 6. Autoboot + 7. U-Boot environment convention and update philosophy + +==================================================================== + +1. Files +========= + board/ssv/adnpesc1/* + include/configs/ADNPESC1.h + include/configs/ADNPESC1_base_32.h + + +2. Memory Organization +======================= + +For the most part, you can put things pretty much anywhere. +This is pretty flexible for Nios. So here we make some arbitrary +choices & assume that the monitor is placed at the end of a memory +resource. So you must make sure TEXT_BASE is chosen appropriately. +This is very important if you plan to move your memory to another +place as configured at this time! + + -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). + +(see doc/README.adnpesc1_base32 too) + + +3. CPU Variations +================= + +There are more than one NIOS CPU variation for the ADNP/ESC1 possible. +U-Boot supports the following CPU configurations: + + - SSV Basis 32 (make ADNPESC1_base_32_config) + - SSV Basis 32 at DNP evaluation base board 2 + (make ADNPESC1_DNPEVA2_base_32_config) + + +4. Examples +============ + +The hello_world example works fine. To try out you have to change +the default load address from 0x0100_0000 to 0x0204_0000 in +examples/Makefile (the real SDRAM for default board configuration). + + +5. Programming U-Boot into FLASH with GERMS +============================================ + +The current version of the ADNP/ESC1 port with the default +configuration settings occupies about 97 KBytes of flash. +A minimal configuration occupies less than 70 KByte +(network, SPI, POST and board command support disabled). You +can save more memory by deactivating the Hu-Shell support and +long command help (CFG_HUSH_PARSER, CFG_LONGHELP). + +To program U-Boot into the ADNP/ESC1 flash using GERMS do the +following: + +1. Download U-Boot to its target run space in SDRAM: + + a. Close jumper RCM_EN# and push the reset button. + + b. From the command line, download U-Boot using the + nios-run: + + $ nios-run -r u-boot.srec + + NOTE: In some cases this want fail. I don't know why, + but try again. + +This takes about 1 minute (GERMS is not very speedy here). +After u-boot is downloaded it will be executed. You should +see the following: + + U-Boot 1.0.2 (Jan 30 2004 - 12:59:15) + + CPU: Nios-32 Rev. 3.3 (0x3038) + Reg file size: 512 LO_LIMIT/HI_LIMIT: 1/30 + Board: SSV DilNetPC ADNP/ESC1 + Conf.: SSV Base 32 (nios_32) + In: serial + Out: serial + Err: serial + ADNPESC1 > + + +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 SDRAM: + + at the SSV Basis 32 to SDRAM: + + ==> loadb 2000100 + + b. Download u-boot.bin using kermit. + +4. From the U-Boot command prompt, erase flash: + + at the SSV Basis 32 from 0x1000000 to 0x103ffff: + + ==> protect off 1:0-3 + ==> erase 1:0-3 + +5. Copy the binary image from SDRAM to flash: + + at the SSV Basis 32 from SDRAM: + + ==> cp.b 2000100 1000000 $filesize + +U-Boot will now automatically start when the board is powered on or +reset using the SSV Basis 32 configuration without closed RCM jumper. +To start U-Boot with closed RCM Jumper, enter the following GERMS +command: + + + g 1000000 + + +6. Autoboot +=========== + +U-Boot will try to boot a valid Nios application from Flash. For this +it will use the deposited Hu-Shell script in environment variable +'bootcmd' which is looking for a valid Nios application identifier +string in Flash and go on at even its entry address. For more +information see the next chapter. + + +7. U-Boot environment convention and update philosophy +====================================================== + +U-Boot for the SSV ADNP/ESC1 target knows about many environment +variables used to control the startup process, update process for +raw Nios applications, and optionally file system image updates. +In default configuration there are two Hu-Shell scripts to update +the Nios application and/or the file system image: + +1. Update Nios application (ex. the uCLinux kernel): + + run 'appl_update' + +2. Update optional file system image (ex. RomFS image used by uCLinux): + + run 'fs_update' + +The Nios application can be any programm code generated in relation +to the Nios application identifier -- the string "Nios" at offset +address 0x0c. To use the scripts like described above in a secure way +you have to check-up the next environment variables: + +1. update_allowed + + - Update switch -- must be set to '1' (one) to allow any update + - default is '0' (zero) + + NOTE: You should avoid to save this variable with non zero + value to Flash. Otherwise it would be allow any + update process at any time! + +2. appl_entry_addr + + - Nios application area start address (usually in Flash) + - this is the startup address for autoboot + - each Nios application code we want to update will be copied + to this address + - default is CFG_ADNPESC1_NIOS_APPL_ENTRY + +3. appl_end_addr + + - Nios application area end address (usually in Flash) + - will be used to unprotect/erase the Flash area while updating + - default is CFG_ADNPESC1_NIOS_APPL_END + +4. appl_ident_addr + + - address of the Nios application identification string + - this is the address checked-up by autoboot + - default is CFG_ADNPESC1_NIOS_APPL_IDENT + +5. appl_ident_str + + - the Nios application identification string itself + - default is CFG_ADNPESC1_NIOS_IDENTIFIER + +6. appl_name + + - name of file we have to download/update + - default is ADNPESC1/base32/linux.bin + +7. fs_base_addr + + - optionally file system area start address (usually in Flash) + - each file system we want to update will be copied to this address + - default is CFG_ADNPESC1_FILESYSTEM_BASE + +8. fs_end_addr + + - optionally file system area end address (usually in Flash) + - will be used to unprotect/erase the Flash area while updating + - default is CFG_ADNPESC1_FILESYSTEM_END + +9. fs_name + + - name of file we have to download/update + - default is ADNPESC1/base32/romfs.img -- cgit v1.2.3