123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- 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
|