world leader in high performance signal processing
Trace: » usb_ez-extender

Stamp Board USB Add-on Card


This USB Card is designed for stamp board. Which has two USB chips on it: one is SL811HS and another is ISP1362. The SL811HS is an Embedded USB Host/Slave Controller capable of communicating in either full speed (12 Mbps) or low-speed (1.5 Mbps). SL811HS can work in two modes—host or slave, but is not On The Go (OTG). Data sheet can be found at here. To purchase the board, go buy_stuff.

The Philips ISP1362 which is a single-chip Universal Serial Bus (USB) On-The-Go (OTG) controller integrated with an Slave Host Controller. It has two USB ports: port 1 and port 2. Port 1 can be hardware configured to function as a downstream port, an upstream port or an OTG port whereas port 2 can only be used as a downstream port. The OTG port can switch roles from host to peripheral, or from peripheral to host. The OTG port can become a host through the Host Negotiation Protocol (HNP) as specified in the OTG supplement. You can find more information here.

You can get the USB card's schematic and PCM layout here.

Currently only the host side drivers are supported for ISP1362 and SL811HS.

Jumpers setting on USB Add-on Card

The reason why there is no information for the BF561-EZKit, is that it is not expected to work.

Set J3 to choose a PF pin as interrupt for ISP1362. Set J5 to choose a PF pin as interrupt for SL811HS. Jumpers on J3 and J5 are divided into two category, one is for BF533 stamp board, another is for BF537 stamp board. The setting should be concurrent with the kernel configuration. Don't select the same pair of pins for ISP1362 and SL811HS.

Settings for BF533-STAMP

Jumpers to setting PF pin
1-2 PF4
3-4 PF8
5-6 PF9
7-8 PF14
9-10 PF15

In order to make BF533 to work with USB-LAN extender, the CPLD on BF533-Stamp Board need to be reprogrammed. For how to reprogram CPLD, please refer to cpld_programming. The CPLD file is In addition, to use the USB-LAN with the BF533 you have to populate the U-connector.

Settings for BF537-STAMP

  • On the USB Board:
Jumpers to setting PF pin
11-12 PF3
13-14 PF4
15-16 PF5
17-18 PF6
19-20 PF7
  • Set sw6.4 to off, to disconnect Asynchronous Memory banks 3 from the NOR Flash on the STAMP board.
  • If choose PF2 to PF5 as the interrupt pin for ISP1362 and SL811HS, the correspondent switch on sw5 need to be set to off according to the following table.
PF pin switch
PF2 sw5.1
PF3 sw5.2
PF4 sw5.3
PF5 sw5.4

Linux Kernel Configuration ISP1362 / SL811

Configure asynchronous memory for ISP1362

Blackfin Processor Options --->
      --- Asynchronous Memory Configuration
          EBIU_AMBCTL Control  --->
                  (0xAAC2) Bank 3

Configure asynchronous memory for SL811HS

Blackfin Processor Options --->
      --- Asynchronous Memory Configuration
          EBIU_AMBCTL Control  --->
                  (0xCCC0) Bank 3

  In order to run Blackfin SCLK > 80MHz, additional bus cycles needs to
  be introduced between two successive bus accesses. The SL811 requires
  85ns between /CS inactive and /CS active. This is achieved by doing a
  dummy read from a different memory bank before each bus access.
  Depending on how fast you run SCLK the total memory number of cycles
  that needs to be introduced by the dummy access ranges form 3-5 cycles.

In case you selected BANK2 for dummy accesses:

Blackfin Processor Options --->
      --- Asynchronous Memory Configuration
          EBIU_AMBCTL Control  --->
                  (0x22A4) Bank 2 

Configure USB Host

USB support  --->
  <*> Support for Host-side USB
    <*> ISP1362 HCD support
    (53)  GPIO for Interrupt
    <*> SL811HS HCD support
    (54)  GPIO for Interrupt

USB HID devices

To use a HID device like USB keyboard, or USB mouse, enable:

 USB support  --->
    <*> USB Human Interface Device (full HID) support
    [*]   HID input layer support
 Input device support --->
     <*> Generic input layer (needed for keyboard, mouse, ...)
     <*> Mouse interface
     (1024) Horizontal screen resolution
     (768) Vertical screen resolution
     <*> Event interface
     [*] Keyboards --->
     [*] Mouse --->

Test USB Mass Storage

To use USB Mass Storage device, like a USB flash disk, select:

 USB support  --->
    <*> USB Mass Storage support
 SCSI device support --->
     --- SCSI device support
     <*> SCSI disk support
     [*] Probe all LUNs on each SCSI device
 File systems --->
   DOS/FAT/NT Filesystems --->
     <*> MSDOS fs support
       <*> VFAT (Windows-95) fs support
          (437) Default codepage for FAT
          (iso8859-1) Default iocharset for FAT  
   Native Language Support --->
     --- Base native language support 
     (iso8859-1) Default NLS Option 
     <*>   Codepage 437 (United States, Canada)
     <*>   NLS ISO 8859-1  (Latin 1; Western European Languages)

In the case you encounter no scsi→sda assignments in the boot log, you should try to activate 'USB runtime power management and wakeup'.

After booting the kernel, plug the USB Flash Disk to the USB port, you will see message like:

usb 1-2: new full speed USB device using isp1362-hcd and address 4
usb 1-2: configuration #1 chosen from 1 choice
scsi2 : SCSI emulation for USB Mass Storage devices
  Vendor: USB       Model: Flash Disk        Rev: 1.06
  Type:   Direct-Access                      ANSI SCSI revision: 00
SCSI device sda: 128928 512-byte hdwr sectors (66 MB)
sda: Write Protect is off
sda: assuming drive cache: write through
SCSI device sda: 128928 512-byte hdwr sectors (66 MB)
sda: Write Protect is off
sda: assuming drive cache: write through
 sda:<7>usb-storage: queuecommand called
sd 2:0:0:0: Attached scsi removable disk sda
sd 2:0:0:0: Attached scsi generic sg0 type 0

Mount ”/dev/sda1” to ”/mnt”

# mount -t vfat /dev/sda1 /mnt

You can try to do R/W on the flash disk.

Test USB Network Adaptor

To enable ethernet over usb:

 USB support  --->
        USB Network Adaptors --->
             <*> USB RTL8150 based ethernet device support (EXPERIMENTAL)

Assume your Linux host is Suse 9.1

  1. Compile uClinux and download image to Bf537 stamp board.
  2. After kernel is start up. Plug in the USB Network Adaptor.
  3. Run “ifconfig -a”. There is an ethernet interface named eth1 added.
  4. Plug the ethernet cable.
  5. Configure eth1 interface.
    dhcp eth1 &
  6. Run any network application normally. For example:
    Linux:~ # ping
    PING ( 56(84) bytes of data.
    64 bytes from icmp_seq=1 ttl=64 time=2.11 ms
    64 bytes from icmp_seq=2 ttl=64 time=0.256 ms
    64 bytes from icmp_seq=3 ttl=64 time=0.302 ms
    64 bytes from icmp_seq=4 ttl=64 time=0.196 ms
    64 bytes from icmp_seq=5 ttl=64 time=0.323 ms
    64 bytes from icmp_seq=6 ttl=64 time=0.151 ms
    --- ping statistics ---
    6 packets transmitted, 6 received, 0% packet loss, time 5002ms
    rtt min/avg/max/mdev = 0.151/0.556/2.111/0.698 ms

Performance Test

ISP1362 / USB SD Card Reader

  • System Setting
Board Version CCLK SCLK Kernel Version Toolchain Version SD Card
BF537 STAMP-2.1 - Rev 0.2 500MHz 100MHz 2.6.28-rc2-ADI-2009R1-pre-svn5938 gcc 4.1.2 (svn) Transend SDHC 8GB class 6
Test Case 1: Bonnie++ on Ext2
root:/> mkfs.ext2 /dev/sda1
root:/> mount /dev/sda1 /mnt/
root:/> bonnie++ -u root -d /mnt/
  • Result:
Version  1.94       ------Sequential Output------ --Sequential Input- --Random- 
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- 
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP 
blackfin       300M    45  99   615   5   320   1   120  99   645   2  49.6   2 
Latency               272ms   10500ms    2136ms     104ms     304ms     664ms   
Version  1.94       ------Sequential Create------ --------Random Create-------- 
blackfin            -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- 
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP 
                 16   208  94  6703 100  1450  36   210  94  7327  99   615  73 
Latency             55999us    4000us    4000us   44000us    4000us    4000us 
  • Compared with result on Linux PC, using the same SD card and USB card reader:
root:/> mkfs.ext2 /dev/sdc1
root:/> mount /dev/sdc1 /mnt/
root:/> bonnie++ -u root -d /mnt/
Version  1.94       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
adam-desktop     2G   673  96 12603   2  7349   1  1312  99 18889   1  72.9   0
Latency             15833us    1028ms    1540ms   16366us     708ms     402ms
Version  1.94       ------Sequential Create------ --------Random Create--------
adam-desktop        -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  2074  60 +++++ +++ 13069   9  2998  86 +++++ +++  6660  57
Latency              6164us    6353us    6568us    6345us      58us     475us