Andes Technology SoC AG101
==========================

AG101 is the first SoC produced by Andes Technology using N1213 CPU core.
AG101 has integrated both AHB and APB bus and many periphals for application
and product development.

ADP-AG101
=========

ADP-AG101 is the SoC with AG101 hardcore CPU.

Please check http://www.andestech.com/p2-4.htm for detail of this SoC.

Configurations
==============

CONFIG_MEM_REMAP:
	Doing memory remap is essential for preparing some non-OS or RTOS
	applications.

	This is also a must on ADP-AG101 board.
	(While other boards may not have this problem).

	The reason is because the ROM/FLASH circuit on PCB board.
	AG101-A0 board has 2 jumpers MA17 and SW5 to configure which
	ROM/FLASH is used to boot.

	When SW5 = "0101", MA17 = LO, the ROM is connected to BANK0,
	and the FLASH is connected to BANK1.
	When SW5 = "1010", MA17 = HI, the ROM is disabled (still at BANK0),
	and the FLASH is connected to BANK0.
	It will occur problem when doing flash probing if the flash is at
	BANK0 (0x00000000) while memory remapping was skipped.

	Other board like ADP-AG101P may not enable this since there is only
	a FLASH connected to bank0.

CONFIG_SKIP_LOWLEVEL_INIT:
	If you want to boot this system from FLASH and bypass e-bios (the
	other boot loader on ROM). You should undefine CONFIG_SKIP_LOWLEVEL_INIT
	in "include/configs/adp-ag101.h".

Build and boot steps
====================

build:
1. Prepare the toolchains and make sure the $PATH to toolchains is correct.
2. Use `make adp-ag101` in u-boot root to build the image.

burn u-boot to flash:
1. Make sure the MA17 (J16) is Lo.
2. Make sure the dip switch SW5 is set to "0101".
3. Power On. Press button "S1", then press button "SW1", then you will found the
   debug LED show 67 means the system successfully booted into e-bios.
   Now you can control the e-bios boot loader from your console.
4. Under "Command>>" prompt, enter "97" (CopyImageFromCard)
5. Under "Type Dir Name of [CF/SD] =>" promtp, enter "c".
6. Under "Enter Filename =>" prompt, enter the file name of u-boot image you
   just build. It is usually "u-boot.bin".
7. Under "Enter Dest. Address =>" prompt, enter the memory address where you
   want to put the binary from SD card to RAM.
   Address "0x500000" is our suggestion.
8. Under "Command>>" prompt again, enter "55" (CLI) to use interactive command
   environment.
9. Under "CLI>" prompt, enter "burn 0x500000 0x80400000 0x30000" to burn the
   binary from RAM to FLASH.
10. Under "CLI>" prompt, enter "exit" to finish the burn process.

boot u-boot from flash:
1. Make sure the MA17 (J16) is Hi).
2. Make sure the dip switch SW5 is set to "1010".
3. Power On. Press button "S1", then you will see the debug LED count to 20.
4. Now you can use u-boot on ADP-AG101 board.
