TS-7553: Difference between revisions
No edit summary |
|||
Line 16: | Line 16: | ||
= Overview = | = Overview = | ||
The TS-7553 was released Mar. 2010 and is a smaller form factor and cost reduced version of the TS-7552 without the extra USB ports and 8-28V switching power supply. It was designed to be mated with an inexpensive plastic enclosure and serve as a standalone general purpose embedded server. | The TS-7553 was released Mar. 2010 and is a smaller form factor and cost reduced version of the TS-7552 without the extra USB ports and 8-28V switching power supply. It was designed to be mated with an inexpensive plastic enclosure and serve as a standalone general purpose embedded server. | ||
= Getting Started = | = Getting Started = | ||
Line 60: | Line 27: | ||
= Boot Process = | = Boot Process = | ||
This board uses the [[TS-BOOTROM]] to load the OS. The SD Boot jumper, as well as the [[TS-9448]] will decide where the system boots. | This board uses the [[TS-BOOTROM]] to load the OS. The SD Boot jumper, as well as the [[TS-9448]] will decide where the system boots. | ||
Line 100: | Line 70: | ||
{{:75XX Debian}} | {{:75XX Debian}} | ||
= Kernel Overview = | |||
{{:75xx Kernel}} | {{:75xx Kernel}} | ||
Revision as of 12:33, 23 July 2011
Released Mar. 2010 | |
Documentation | |
---|---|
Schematic | |
Mechanical Drawing | |
FTP Path |
Overview
The TS-7553 was released Mar. 2010 and is a smaller form factor and cost reduced version of the TS-7552 without the extra USB ports and 8-28V switching power supply. It was designed to be mated with an inexpensive plastic enclosure and serve as a standalone general purpose embedded server.
Getting Started
Get a console
If you have a TS-9448, you can connect that to the 26 pin header and use the 10 pin header (labelled "Console") which will by default be the console port. If you do not have a TS-9448, you can hold the reset button for 5 seconds (until the red led lights up) and let go to switch the console port to the onboard COM port using the standard 8n1, no flow control, 115200 baud rate.
You can also telnet to the board with the default network configuration, though this will omit the TS-BOOTROM messages.
Fastboot/initrd
After the board is first booted you will be at this shell:
>> TS-BOOTROM - built Oct 12 2011 13:35:38 >> Copyright (c) 2009, Technologic Systems >> Booting from SD card... . . . >> Booted from: SD card Booted in: 3.93 seconds >> SBC Model number: TS-XXXX SBC Sub-model number: 0 >> CPU clock rate: 250MHz RAM size: 64MB >> NAND Flash size: 256MB NAND Flash Type: 0xdcec (Samsung) >> MAC number: 00:D0:69:4F:6F:04 SBC FPGA Version: 7 >> Temperature Sensor: 37.500 degC MODE1 bootstrap: ON >> RTC present: YES Date and Time: Jan 1 1970 00:00:03 >> MODE2 bootstrap: OFF SD card size: 1886MB >> Offboard SPI flash type: Micron Offboard SPI flash size: 8MB >> XUARTs detected: 3 CAN present: NO >> Linux kernel version: 2.6.24.4 Linux kernel date: Jun 8 2011 >> Bootrom date: Oct 12 2011 INITRD date: Dec 27 2011 >> ts7500ctl date: Jun 8 2011 sdctl date: Jun 8 2011 >> canctl date: Jun 8 2011 nandctl date: Aug 15 2011 >> spiflashctl date: Aug 15 2011 xuartctl date: Aug 15 2011 >> dioctl date: Feb 10 2011 spictl date: Jan 24 2011 >> dmxctl date: Jun 8 2011 busybox date: Jun 30 2010 (v1.14.2) >> ts7500.subr date: Jun 10 2011 daqctl date: Aug 15 2011 >> linuxrc date: Aug 31 2011 rootfs date: Jan 1 1970 >> MBR date: Jul 14 2009 Type 'tshelp' for help #
Note: | Your version dates may be different depending on ship date and the image used. |
This is a busybox shell which presents you with a very minimalistic system. This filesystem is loaded into memory, so none of the changes will be saved unless you type 'save', or mount a filesystem as read write. This can also provide a simple mechanism for running your application in an entirely read only environment. The linuxrc script will be the first thing executed as soon as the kernel is loaded. This sets the default IP address, loads a reloadable FPGA bitstream if one is present, starts the userspace ctl applications, and more. Read the linuxrc for more information.
While busybox itself doesn't contain much functionality, it does mount the Debian partition under /mnt/root/. It will also add common paths and load libraries from the Debian system. Many of the Debian applications will work by default. If an application relies on certain paths being in certain places, or running services, you should instead boot to Debian to run them.
This shell when started on the COM port is what is blocking a Debian boot. If you close it by typing 'exit', the boot process will continue. If you are connected through telnet, this will instead open up its own instance of the shell so typing 'exit' will only end that session. Through any connection method you can relink the linuxrc script to always boot into Debian.
The initrd has these boot scripts available:
Script | Function |
---|---|
linuxrc-fastboot (default) | Boots immediately to a shell in ramdisk. This will mount whichever boot medium you have selected to /mnt/root/. When you type 'exit', it will boot to that medium. |
linuxrc-nandmount | Same as the linuxrc-fastboot script, but will mount and boot the debian partition from NAND. |
linuxrc-sdmount | Same as the linuxrc-fastboot script, but will mount and boot the debian partition from SD. |
linuxrc-sdroot | Boots immediately to the Debian stored on either SD or NAND depending on which device you have currently selected. |
linuxrc-sdroot-readonly | Same as linuxrc-sdroot, except it will mount the Debian partition read only while creating a unionfs with a ramdisk. Changes will only happen in memory and not on disk. |
linuxrc-usbroot | Mounts the first partition of the first detected USB mass storage device and boots there. |
Note: | Keep in mind the boot medium is selected by the pinout on your baseboard, not through software. |
For example, to set the linuxrc to boot immediately to Debian on SD or NAND, you would run this:
rm linuxrc; ln -s /linuxrc-sdroot /linuxrc; save
To use any of the other boot scripts, you can simply replace 'linuxrc-sdroot' with the script name mentioned above. Once you have booted to Debian you can return to the initrd by creating the file "fastboot" in root.
touch /fastboot
To automatically boot back to Debian you will need to remove this file.
The small default initrd is only 2Mbyte but there is space for approximately 800 Kbyte of additional user applications. The binaries on the initrd are dynamically linked against embedded Linux's "uclibc" library instead of the more common Linux C library "glibc". "uclibc" is a smaller version of the standard C library optimized for embedded systems and requires a different set of GCC compiler tools which are available here.
The compiled instance of busybox includes several internal commands listed below:
# /bin/busybox --help BusyBox v1.14.2 (2009-08-07 14:43:48 MST) multi-call binary Copyright (C) 1998-2008 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice. Usage: busybox [function] [arguments]... or: function [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as! Currently defined functions: [, [[, ash, basename, cat, chgrp, chmod, chown, chroot, cmp, cp, cpio, cttyhack, cut, date, dd, depmod, devmem, df, dirname, dmesg, du, echo, egrep, env, expr, false, fdisk, fgrep, find, grep, gunzip, gzip, halt, head, hostname, hush, ifconfig, insmod, kill, killall, ln, login, ls, lsmod, md5sum, mdev, mkdir, mknod, modprobe, more, mount, msh, mv, netstat, ping, pivot_root, poweroff, printf, ps, pwd, reboot, rm, rmdir, rmmod, route, rx, sed, setconsole, setsid, sh, sleep, stty, sync, tail, tar, telnetd, test, tftp, top, tr, true, udhcpc, umount, unzip, usleep, uudecode, uuencode, vi, wget, xargs, yes, zcat
Also on the initrd are the TS specific applications: sdctl, spiflashctl, nandctl, daqctl, ts7500ctl, canctl, and xuartctl. We also provide the ts7500.subr which provides the following functions:
cvtime() usbload() sdsave() spiflashsave() save() sd2spiflash() spiflash2sd() setdiopin() getdiopin() setrelay() setout() getin() tshelp() gettemp()
By default, linuxrc will not insert the necessary modules into the kernel to mount and use USB devices within the initrd/busybox environment if there is no USB device present upon bootup (USB support is enabled by default within the Debian environment). The quickest way to get a USB device (like a USB thumb drive) to mount in the initrd/busybox environment is to ensure that it is plugged in before the SBC is powered up. In order to get hot-swappable USB devices regardless of device presence at bootup time, you must "modprobe" the necessary modules. This has been done for you in the ts7500.subr file with the usbload() function.
Boot Process
This board uses the TS-BOOTROM to load the OS. The SD Boot jumper, as well as the TS-9448 will decide where the system boots.
Boot Selection With TS-9448
Switch Pos. | SDBOOT Jumper | Boot Behavior |
---|---|---|
Down | Off | XNAND |
None | On | Offboard SPI Flash |
Up | Off | MicroSD |
Note: JP1 will cause the bootloader to only boot to SPI Flash
Boot Selection Without TS-9448
SDBOOT Jumper | Boot Behavior |
---|---|
Off | XNAND |
On | MicroSD |
Operating System
Our boards boot a standard Debian installation which provides a large amount of software that you can install with relatively little effort. See the Debian page for more general information on installing/removing software, and further documentation.
For this series we provide Debian Etch and Debian Lenny. Further Debian releases have switched to EABI binaries (see EABI vs OABI), so we will not release Debian Squeeze or later for this board. The Cavium CNS2132 CPU supports the calls needed for EABI, but the Debian EABI binaries require thumb support which the Cavium does not support. If you require any specific software to be newer, you will have to manually build a later version.
We provide our distributions separate from the disk images. You can find them on this folder on the ftp. You will need a linux system to extract it:
# Replace the mmcblk0p4 device with the SD card
# on your workstation
mount /dev/mmcblk0p4 /mnt/sd/
cd /mnt/sd/
tar --numeric-owner -xvf /path/to/debian-lenny-arm-latest.tar.gz
cd ../
umount /mnt/sd/
You can download the Debian Etch and Debian Lenny minimal install for x86 from here and install it on a PC or virtual machine to become more familiar with a debian environment.
Note: | As of March 27th 2012 Debian Lenny has moved to archive. To use apt-get your will need to edit /etc/apt/sources.list to contain only the line "deb http://archive.debian.org/debian lenny main". |
Kernel Overview
The TS kernel is built from the same Linux sources Cavium Networks has tested and used on their CPU evaluation boards. There are no Technologic Systems specific drivers or kernel support implemented. Instead, there has been userspace driver support implemented for the SPI NOR flash, MicroSD cards, XNAND drive, battery-backed real-time clock, XUART serial port channels, watchdog, and GPIO pins. This allows easy migration to newer kernels when either Cavium or the mainline Linux kernel community creates them. In the past, constant Linux-internal API redesign required rewriting and revisiting custom drivers with each new kernel revision, in effect locking customers in to whatever kernel version was released and tested during initial product release. Being free to update to newer kernels in the future allows easier support of the new USB devices as those drivers tend to only be developed for the newest kernel sources.
We provide 2.6.24 as the supported kernel.
We also have 2.6.36, though USB device does not work (host does). This is provided as is.
Connectors
26 Pin Header
TS-7552/TS-7553 also includes a .1" pin spacing external header for board to board interfacing. The external interfaces uses a total of 26 pins.
Diagram
______________________________________ | 2 4 6 8 10 12 14 16 18 20 22 24 26| * | 1 3 5 7 9 11 13 15 17 19 21 23 25| \--------------------------------------/
Pinout
Pin # | Name | Function |
---|---|---|
1 | JTAG_DOUT | |
2 | JTAG_TMS | 4.7k pull-up |
3 | GND | Ground |
4 | JTAG_DIN | 4.7k pull-up |
5 | MODE2 | Latched boot up mode 2, 4.7k pull-up |
6 | JTAG_CLK | 2.2k pull-up |
7 | CONSOLE_TXD | Console TX, latched boot up mode 1, 4.7k pull-up |
8 | CONSOLE_RXD | Console RX, 4.7k pull-up |
9 | SPI_MISO | SPI master-in slave-out |
10 | 3.3V | 3.3V power |
11 | SPI_CS1 | SPICS#1 output |
12 | SPI_MOSI | SPI master-out slave-in |
13 | SDA | I2C/DIO-driven by CPU, 2.2k pull-up |
14 | DIO_14 | SPI clock output |
15 | SCL | I2C/DIO-driven by CPU, 2.2k pull-up |
16 | WD_RESET | Watchdog or system reset output |
17 | DIO_17 | DIO,SPICS#0 output, weak FPGA pull-up |
18 | DIO_18 | DIO,SPICS#2 output, weak FPGA pull-up |
19 | DIO_19 | DIO, SPICS#3 output, weak FPGA pull-up, XUART#4 TX |
20 | DIO_20 | DIO, weak FPGA pull-up, XUART#4 RX |
21 | DIO_21 | DIO, weak FPGA pull-up, XUART#5 TX |
22 | DIO_22 | DIO, weak FPGA pull-up, XUART#5 RX |
23 | DIO_23 | DIO, weak FPGA pull-up, XUART#6 TX |
24 | DIO_24 | DIO, weak FPGA pull-up, XUART#6 RX |
25 | DIO_25 | DIO, weak FPGA pull-up, XUART#7 TX |
26 | DIO_26 | DIO, weak FPGA pull-up, XUART#7; RX +5V |
Note: As of Rev.A1 of TS-7553, Pin 26 (DIO_26) will permanently be +5V instead of "DIO, weak FPGA pull-up".
None of the DIO pins are 5V tolerant. They are 3.3V LVCMOS I/O buffers with approximately 12mA current drive capability.
DB9 Port
Diagram
============= \\1 2 3 4 5// \\6 7 8 9// =========
Pinout
Pin # | Name | Function |
---|---|---|
1 | RS485_0+ | RS485 serial TX/RX + (XUART #2) |
2 | XUART#0_RX | RS232 serial RXD for XUART #0 |
3 | XUART#0_TX | RS232 serial TXD for XUART #0 |
4 | CAN_H | CAN bus high (or second RS485 port +) |
5 | GND | Ground |
6 | RS485_0- | RS485 serial TX/RX - (XUART #2) |
7 | XUART#1_TX | RS232 serial TXD for XUART #1 |
8 | XUART#1_RX | RS232 serial RXD for XUART #1 |
9 | CAN_L | CAN bus low (or second RS485 port -) |
The CAN bus has optional termination resistor enabled by JP2 jumper. The termination resistor is 124 ohms across the CAN_H and CAN_L pins.
USB Header
The 5x1 pin header labeled USB3 is wired in parallel with the left-most USB host connector. It may be also used as an internal USB port. The 5x1 pin header:
Diagram
___________ | 1 2 3 4 5 | \-----------/ *
Pinout
Pin # | Name | Function |
---|---|---|
1 | FRAME | Same as ground |
2 | GND | Ground |
3 | USB+ | |
4 | USB- | |
5 | USB_5V | USB 5V power |
XBEE Connector
The dual in-line 10-pin headers are spaced for an XBee or XBee-PRO module. There is an XUART connected to this port as well as DIO pins. The XBee module can be communicated with through the provided UART and DIO pins. See the XBee page for more information.
Diagram
---- ---- | 1| |20| | 2| |19| | 3| |18| | 4| |17| | 5| |16| | 6| |15| | 7| |14| | 8| |13| | 9| |12| |10| |11| ---- ----
Pinout
Pin # | Name | Function |
---|---|---|
1 | VCC | 3.3V |
2 | DOUT | XUART#3 RX |
3 | DIN | XUART#3 TX |
4 | NC | |
5 | RESET# | CPU_RESET# line, pull low to reset TS-7553 |
6 | NC | |
7 | NC | |
8 | NC | |
9 | DTR# | Connected to DIO_25 |
10 | GND | |
11 | DIO4 | Connected to DIO_21 |
12 | CTS | XUART#3 CTS pin, use mode=hwcts in xuartctl to enable this |
13 | NC | |
14 | NC | |
15 | DIO5 | Connected to DIO_22 |
16 | RTS#/DIO6 | Connected to DIO_26 |
17 | DIO3 | Connected to DIO_20 |
18 | DIO2 | Connected to DIO_19 |
19 | DIO1 | Connected to DIO_18 |
20 | DIO0 | Connected to DIO_17 |
COM Ports
The XUART ports will be controlled with xuartctl. By default they will not have devices in /dev/.
Name | Type | Location |
---|---|---|
XUART0 | RS232 | pins 3 (TX) and 2 (RX) of the #DB9 Port. |
XUART1 | RS232 | pins 7 (TX) and 8 (RX) of the #DB9 Port. |
XUART2 | RS485 | pins 1 (TX/RX +) and 6 (TS/RX -) of the #DB9 Port. |
XUART3 | RS232 | pins 3 (TX) and 2 (RX) of the #XBEE Connector. |
XUART4 | TTL | pin 20 (RX) and 19 (TX) on the #26 Pin Header |
XUART5 | TTL | pin 22 (RX) and 21 (TX) on the #26 Pin Header |
XUART6 | TTL | pin 24 (RX) and 23 (TX) on the #26 Pin Header |
Enclosures
The TS-7553 supports the TS-ENC820.
FPGA Programming
Note: | We do not provide support for the opencores under our free support, however we do offer custom FPGA programming services. If interested, please contact us. |
The opencore FPGA sources are available here.
We have prepared the opencore projects which gives you the ability to reprogram the FPGA while either preserving or removing our functionality as you choose. The code sources are in verilog, and we use Lattice Diamond to generate the JEDEC file. You can download Lattice Diamond from their site. You can request a free license, and it will run in either Windows or Linux (only Redhat is supported). In the sources you can find the functionality switches in the <boardname>_top.v file:
parameter sdcard_opt = 1'b1;
parameter spi_opt = 1'b1;
parameter nandflash_opt = 1'b1;
parameter can_opt = 1'b1; /*If CAN is enabled, only two XUARTs can be used*/
/* software currently requires these to be enabled/disabled contiguously. */
parameter xuart0_opt = 1'b1;
parameter xuart1_opt = 1'b1;
parameter xuart2_opt = 1'b0;
parameter xuart3_opt = 1'b0;
parameter xuart4_opt = 1'b0;
parameter xuart5_opt = 1'b0;
parameter xuart6_opt = 1'b0;
parameter xuart7_opt = 1'b0;
You can use these switches to enable and disable functionality. We do not enable everything at the same time because of space constraints on the FPGA. So for example, to disable CAN and enable the rest of the XUARTS:
parameter sdcard_opt = 1'b1;
parameter spi_opt = 1'b1;
parameter nandflash_opt = 1'b1;
parameter can_opt = 1'b0; /*If CAN is enabled, only two XUARTs can be used*/
/* software currently requires these to be enabled/disabled contiguously. */
parameter xuart0_opt = 1'b1;
parameter xuart1_opt = 1'b1;
parameter xuart2_opt = 1'b1;
parameter xuart3_opt = 1'b1;
parameter xuart4_opt = 1'b1;
parameter xuart5_opt = 1'b1;
parameter xuart6_opt = 1'b1;
parameter xuart7_opt = 1'b1;
For more advanced changes you may look to opencores.org which has many examples of FPGA cores. To build the FPGA with your new changes, go to the 'Processes' tab and double-click 'JEDEC File'. This will build a jedec file in the project directory. On a linux system, either x86 compatible or ARM, we provide an application called jed2vme.
We also have the sources here.
WARNING: | Do not use the 'jed2vme' provided by Lattice. Their version writes to flash and as the opencores do not contain the bootrom so this will brick your board. |
jed2vme can be used like this:
jed2vme bitstream.jed | gzip > bitstream.vme.gz
To execute this on your board run this:
ts7500ctl --loadfpga=bitstream.vme
# or
ts7500ctl --loadfpga=bitstream.vme.gz
As space is constrained in the initrd it is suggested to gzip the file as shown in the jed2vme example. To load this bitstream automatically you can place it in the root of the initrd and name it '/ts7500_bitstream.vme.gz'. The linuxrc script will by default load this bitstream immediately on startup (before the fastboot shell). You should first test it manually to make sure it loads ok.
The FPGA contains flash memory which contains Technologic System's default FPGA flash load. Using an SRAM bitstream generated by our "jed2vme" with "ts7500ctl --loadfpga" will not overwrite the flash memory of the FPGA and will only load the SRAM contents of the FPGA, making for an unbrickable system.
FPGA FAQ
Should I implement x in the FPGA or Linux?
The FPGA will allow you to do certain things very quickly with no overhead of the linux system. Debugging options are extremely limited. For ease of development, only implement functionality in the FPGA if you have to.
Can I implement more than 8 XUARTS?
The XUART core only supports 8. However if you have requirements that demand more there are other options for implementing more, but depend very much on your requirements. Please contact us for more information.
I made a change in X, and now Y is behaving strangely?
Make sure you check to make sure you meet timing restraints. When they are not met then any or all of the cores may not behave as expected.
Product Notes
FCC Advisory
This equipment generates, uses, and can radiate radio frequency energy and if not installed and used properly (that is, in strict accordance with the manufacturer's instructions), may cause interference to radio and television reception. It has been type tested and found to comply with the limits for a Class A digital device in accordance with the specifications in Part 15 of FCC Rules, which are designed to provide reasonable protection against such interference when operated in a commercial environment. Operation of this equipment in a residential area is likely to cause interference, in which case the owner will be required to correct the interference at his own expense.
If this equipment does cause interference, which can be determined by turning the unit on and off, the user is encouraged to try the following measures to correct the interference:
Reorient the receiving antenna. Relocate the unit with respect to the receiver. Plug the unit into a different outlet so that the unit and receiver are on different branch circuits. Ensure that mounting screws and connector attachment screws are tightly secured. Ensure that good quality, shielded, and grounded cables are used for all data communications. If necessary, the user should consult the dealer or an experienced radio/television technician for additional suggestions. The following booklets prepared by the Federal Communications Commission (FCC) may also prove helpful:
How to Identify and Resolve Radio-TV Interference Problems (Stock No. 004-000-000345-4) Interface Handbook (Stock No. 004-000-004505-7) These booklets may be purchased from the Superintendent of Documents, U.S. Government Printing Office, Washington, DC 20402.
Limited Warranty
See our Terms and Conditions for more details.