mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			236 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			236 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
	      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
 |