world leader in high performance signal processing
Trace: » bf533-stamp

BF533 STAMP Board

adi-shot-bf533-stamp.jpg

This is a low-cost development platform for the ADSP-BF533 Blackfin device. The STAMP board is part of the Blackfin/uClinux open source project. The schematics for the board as well as other related documents are available here. The STAMP board is commercially available and can be purchased from Digikey.

An overview of some of the STAMP board's features are given below:

  • ADSP-BF533 Blackfin device with JTAG interface
  • 500MHz core clock
  • 133MHz system clock (SCLK) 1)
  • 64M x 16bit external SDRAM (128MBytes)
  • 2M x 16bit external flash (4MBytes)
  • 10/100 Mbps Ethernet Interface
  • UART interface with DB9 serial connector
  • 270-pin expansion interface
  • CPLD with JTAG interface allowing for custom configuration of the Ethernet interface, external memory, and programmable flags
  • connectors to various Blackfin peripherals: PPI, SPI, SPORT0, SPORT1, IrDA, I2C, and Timers

STAMP boards contain ESD (electrostatic discharge) sensitive devices. Electrostatic charges readily accumulate on the human body and equipment and can discharge without detection. Permanent damage may occur on devices subjected to high-energy discharges. Proper ESD precautions are recommended to avoid performance degradation or loss of functionality. Store unused Stamp boards in the protective shipping packages.

Setting up the STAMP Hardware

To connect the STAMP board:

  1. Remove the STAMP board from the package. Be careful when handling the board to avoid the discharge of static electricity, which may damage some components.
  2. The figure below shows the default Switch (S1 switches should both be down, as facing the picture), connector locations, and LEDs. Confirm that your board is set up in the default configuration before continuing.
  3. Plug the provided power supply into J13 on the STAMP board. Visually verify that the green power LED (D13) is on.
  4. Connect one end of the serial cable to an available serial port on your PC and the other end to P1 on the STAMP board.
  5. Connect one end of a Ethernet cable to J12 of the STAMP board, and the other end to either a PC (requires cross over cable) or a Ethernet Hub (requires straight through cable).

Hardware Initialization

Initialization of the hardware is taken care of by both the Boot loader, and by the uClinux kernel. This initializes both the SDRAM, FLASH, Ethernet and onboard peripherals. If you are not using the provided Boot loader, or the uClinux kernel, you should review the appropriate datasheet, which can be downloaded from the STAMP project.

Networking

Networking capabilities are provided on the STAMP board via an SMSC-LAN91C111 Ethernet controller. This controller is connected to the Blackfin processor through the address and data buses of the external memory interface. Also, the Interrupt Request (IRQ) from the LAN controller is routed through the Complex Programmable Logic Device (CPLD) on the STAMP board. This enables the IRQ from the LAN to be connected to any programmable flag on the Blackfin device (PF0-PF8), by default it is connected to PF7.

Using LEDs and Push Buttons

The STAMP provides three push buttons and three LEDs for general-purpose IO which can be driven or read through the GPIO pins of the ADSP-BF533. These also run through the CPLD, enabling these pins to be disconnected from the switches or LEDs.

External Bus Interface Unit

The External Bus Interface Unit (EBIU) connects an external memory to the ADSP-BF533 device. It includes 16-bit wide data bus, address bus, and a control bus. Both 16-bit and 8-bit access is supported. On the STAMP, the EBI unit is connected to SDRAM and Flash memory.

128 Mbytes (64M x 16 bits) of SDRAM is connected to the synchronous memory bus. Note that SDRAM clock is the processor's Clock Out (CLK OUT), which frequency shall not exceed 133 Mhz.

4 Mbytes (2M x 16 bits) of Flash memory is also connected to the asynchronous memory select signals, ~AMS3 through ~AMS0. The processor can use this memory for both booting and storing information during normal operation.

The 10/100 MAC/Phy Ethernet is also connected directly to the asynchronous memory signals ~AMS3.

All of the address, data, and control signals are available externally via the extender connectors (P3-1). The pin-out of these connectors can be found in “Schematics” on the web site.

Reset Push Button

The RESET push button resets all of the ICs on the board, including peripherals on daughter cards.

Connectors

This section describes the connector functionality and provides information about mating connectors. The locations of the connectors are shown.

  • Ethernet Connector: J12,RJ45.
  • RS-232 Connector: P1,DB9,Female.
  • Power Connector: J13, 2.5mm power jack, Voltage input is 7.0 - 16V.
  • BF533 JTAG Connector :J4, BF533 JTAG connector.
  • SPORT0 Connectors: J15.
  • SPORT1 Connectors: J16.
  • PPI Connectors: J23.
  • SPI Connectors: J17.
  • TWI Connectors: J20, also known as I2C connectors.
  • TIMERS Connectors: J21.
  • IrDA Connectors: J19. This connectors is multiplexed with P1.

On-Board CPLD

There is a CPLD on the BF533-STAMP board which handles the ethernet/pin routing. More information on it (like how to program it) can be found on the BF533-STAMP CPLD page.

MAC Address

The SMSC91C111 has a unique MAC address programed into it with the standalone smc91111_eeprom program. It is described in the source code with a README.

file: u-boot-2008.10/examples/README.smc91111_eeprom

This is the readme for the Das U-Boot standalone program smc91111
 
The main purpose of this is to manage MAC addresses on platforms
which include the SMC91111 integrated 10/100 MAC Phy, with attached
EEPROMs.
 
 
Contents:
------------------------
1. Ensuring U-boot's MAC address can be set in hardware
2. Running the smc91111_eeprom program
3. Setting MAC addresses
4. Other things you can do with this
5. Things to be done.
 
 
1. Ensuring U-boot's MAC address can be set in hardware
--------------------------------------------------------------------------
 
On the Internet - MAC addresses are very important. Short for Media
Access Control address, a hardware address that uniquely identifies
each node of a network. When things are not unique - bad things
can happen.  This is why U-Boot makes it difficult to change MAC
addresses.
 
To find out who has a MAC address, or to purchase MAC addresses, goto
the IEEE, at:
http://standards.ieee.org/regauth/oui/index.shtml
 
To change your MAC address, there can not be a MAC address predefined in
U-Boot. To ensure that this does not occur, check your
include/configs/<board_name>.h file, and check to see that the following
settings are _not_ or commented out there.
 
#define HARDCODE_MAC			1
#define CONFIG_ETHADDR			02:80:ad:20:31:b8
 
The purpose of HARDCODE_MAC is to hardcode the MAC address in software,
(not what we want), or to preset it to 02:80:ad:20:31:b8 (not what we
want either).
 
You can check this in a running U-Boot, by doing a power cycle, then
before U-Boot tries to do any networking, running the 'printenv' command
 
  BOOT> printenv
 
  ethaddr=02:80:ad:20:31:b8
 
If you see the 'ethaddr' variable show up, like the above, you need to
recompile U-Boot, with the above settings commented out of the
include/configs/<board_name>.h file.
 
2. Running the smc91111_eeprom program
---------------------------------------------------------------------
 
After Uboot is compiled, there should be three files of interest:
-rwxr-xr-x    1		8806 2004-10-11 14:00 smc91111_eeprom	    <- ELF
-rwxr-xr-x    1		3440 2004-10-11 14:00 smc91111_eeprom.bin   <- BIN
-rwxr-xr-x    1		9524 2004-10-11 14:00 smc91111_eeprom.srec  <- SREC
 
if there is not, check the examples/Makefile, and ensure there is something
like for your architecture:
 
   ifeq ($(ARCH),blackfin)
   SREC	  += smc91111_eeprom.srec
   BIN	  += smc91111_eeprom.bin smc91111_eeprom
   endif
 
To load the files: there are two methods: a) serial or b) network. Since
it is not a good idea to start doing things on the network before the
MAC address is set, this example will do things over serial.
 
a) Loading the elf file via the serial port
--------------------------------------------
Loading the elf is very easy - just ensure that the location
you specify things to load as is not the load address specified
in the Makefile.
 
BOOT> loadb 0x1000000
 
## Ready for binary (kermit) download to 0x01000000 at 57600 bps...
 
(type CNTL-\ then C)
(Back at local machine)
----------------------------------------------------
Kermit>send ~/u-boot_1.1.1/examples/smc91111_eeprom
Kermit>connect
 
Connecting to /dev/ttyS0, speed 57600
 Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------
## Total Size	   = 0x00002266 = 8806 Bytes
## Start Addr	   = 0x01000000
 
BOOT> bootelf 0x1000000
 
Loading .text @ 0x00001000 (3440 bytes)
## Starting application at 0x000010d8 ...
 
SMC91111>
 
b) Loading the binary file via the serial port
-----------------------------------------------
For many toolchains, the entry point is not the load point.
The Load point is a hard coded address from the
examples/Makefile. The entry point can be found by doing something
like:
 
  u-boot_1.1.1/examples> bfin-elf-objdump -d smc91111_eeprom |less
 
  smc91111_eeprom:     file format elf32-bfin
 
  Disassembly of section .text:
 
  00001000 <smc91111_eeprom-0xd8>:
      1000:
  000010d8 <smc91111_eeprom>:
 
You can see that the entry point (or the address that should be
jumped to is 0x10d8). This is also the same as the entry point
of the elf file.
 
Now we load it to the actual load location:
 
BOOT> loadb 0x1000
 
## Ready for binary (kermit) download to 0x00001000 at 57600 bps...
 
(Back at pinky.dsl-only.net)
----------------------------------------------------
Kermit>send /tftpboot/eeprom.bin
Kermit>connect
 
Connecting to /dev/ttyS0, speed 57600
 Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------
## Total Size	   = 0x00000d70 = 3440 Bytes
## Start Addr	   = 0x00001000
 
BOOT> go 0x10D8
 
## Starting application at 0x000010D8 ...
 
SMC91111>
 
3. Setting MAC addresses
--------------------------------------------------------------------------
 
The MAC address can be stored in four locations:
 
-Boot environmental variable in Flash <- can not change, without
					  re-flashing U-boot.
U-Boot environental variable	       <- can not change, without
					  resetting board/U-Boot
LAN91C111 Registers		       <- volitle
LAN91C111 EEPROM		       <- Non Volitle
 
If you have not activated the network, and do not have a hardcoded
or pre-assigned MAC address in U-boot, the environmental variables
should be blank, and allow you to set things one time.
 
To set the EEPROM MAC address to 12:34:56:78:9A:BC
 
SMC91111> W E 20 3412
 
Writing EEPROM register 20 with 3412
SMC91111> W E 21 7856
 
Writing EEPROM register 21 with 7856
SMC91111> W E 22 BC9A
 
Writing EEPROM register 22 with bc9a
EEPROM contents copied to MAC
SMC91111> P
 
Current MAC Address in SMSC91111 12:34:56:78:9a:bc
Current MAC Address in EEPROM	 12:34:56:78:9a:bc
 
(CNTRL-C to exit)
SMC91111> ## Application terminated, rc = 0x0
 
BOOT> reset
U-Boot 1.1.1 (gcc version: 3.3.3)
Release Version Beta released on Oct 10 2004 - 00:34:35
Blackfin support by LG Soft India
For further information please check this link http://www.blackfin.uclinux.org
BOOT> ping 192.168.0.4
 
Using MAC Address 12:34:56:78:9A:BC
host 192.168.0.4 is alive
 
 
4. Other things that you can do
--------------------------------------------------------------------------
After the stand alone application is running, there are a few options:
 - P : Print the MAC
 - D : Dump the LAN91C111 EEPROM contents
 - M : Dump the LAN91C111 MAC contents
 - C : Copies the MAC address from the EEPROM to the LAN91C111
 - W : Write a register in the EEPROM or in the MAC
 
SMC91111> P
 
Current MAC Address in SMSC91111 12:34:56:78:9a:bc
Current MAC Address in EEPROM	 12:34:56:78:9a:bc
 
SMC91111> D
 
IOS2-0	  000	  001	  002	  003	  004	  005	  006	  007
CONFIG 00:ffff 04:ffff 08:ffff 0c:ffff 10:ffff 14:ffff 18:ffff 1c:ffff
BASE   01:ffff 05:ffff 09:ffff 0d:ffff 11:ffff 15:ffff 19:ffff 1d:ffff
       02:ffff 06:ffff 0a:ffff 0e:0020 12:ffff 16:ffff 1a:ffff 1e:ffff
       03:ffff 07:ffff 0b:ffff 0f:ffff 13:ffff 17:ffff 1b:ffff 1f:ffff
 
20:3412 21:7856 22:bc9a 23:ffff 24:ffff 25:ffff 26:ffff 27:ffff
28:ffff 29:ffff 2a:ffff 2b:ffff 2c:ffff 2d:ffff 2e:ffff 2f:ffff
30:ffff 31:ffff 32:ffff 33:ffff 34:ffff 35:ffff 36:ffff 37:ffff
38:ffff 39:ffff 3a:ffff 3b:ffff 3c:ffff 3d:ffff 3e:ffff 3f:ffff
 
SMC91111> M
 
    Bank0 Bank1 Bank2 Bank3
00  0000  a0b1	3332  0000
02  0000  1801	8000  0000
04  0000  3412	8080  0000
06  0000  7856	003f  0000
08  0404  bc9a	02df  3332
0a  0000  ffff	02df  3391
0c  0000  1214	0004  001f
0e  3300  3301	3302  3303
 
SMC91111> C
 
EEPROM contents copied to MAC
 
SMC91111> W E 2A ABCD
 
Writing EEPROM register 2a with abcd
 
SMC91111> W M 14 FF00
 
Writing MAC register bank 1, reg 04 with ff00
1) 1.0 and 1.2 board revs can run higher, but 1.1 board revs should stay at ~80MHz due to SDRAM trace issues in the PCB