I occasionally have a need for small, embedded processor boards for projects.
At the very low-end I use the PIC processors, including the tiny and dirt-cheap 8-bit, 8-pin PIC10F220.
I had been using the Digi (Rabbit Semiconductor) MiniCore RCM5700
which is a fine, and inexpensive, Ethernet-capable board, but I wanted something a little more substantial. The 50 MHz processor and 128K RAM were a bit limiting. And I'm not a huge fan of the proprietary Dynamic C environment you need to program in.
I decided to go with the Technologic Systems TS-7500
. This runs a 250 MHz ARM9 processor, 64 MB RAM and runs Linux off a micro SD card. Much better.
While there are a plenty of embedded Linux solutions out there, and some that are cheaper, I selected this one because it has a user-programmable 5K LUT Lattice XP2 FPGA on the board. The provide the source to do things like serial ports in the FPGA, but since the FPGA pins are directly connected to the expansion connector, you can do pretty much anything you want with it!
Another selling point is the TS-ENC750 aluminum enclosure and baseboard
. It includes RS-232, RS-485, 8 buffered inputs, 3 buffered outputs and 3 relays. And it can be powered by either 5V or power over Ethernet. It's a little expensive, but could be handy for all sorts of projects. It's surprisingly tiny!
One nice touch is that those screw terminals are on a detachable connector. So once you wire it up in place, you can detach the entire unit by pulling out three connectors instead of having to unscrew up to 26 different wires and then put them back when reinstalling!
Of course I had to open it up and see what's inside. Remove the screws from the side with the connector to open it up.
I also had a reason for doing this: I wanted to back up the SD card that came with it. Hint: when looking at the board with the connectors facing you, push the SD carrier to your right and it will pop up. The dev kit comes with a handy USB card reader. I plugged it into my Mac, but I attached the USB device to a Linux virtual machine. I followed the backup instructions in the manual
and it worked great. I could also have done this directly on the Mac since it supports dd as well.
# dd if=/dev/sdb of=backup.dd bs=32k &&
60352+0 records in
60352+0 records out
1977614336 bytes (2.0 GB) copied,
114.892 s, 17.2 MB/s
It appears that partition 1 is the master boot record, 2 is the kernel, 3 is the initrd and 4 is the Debian JFS file system.
Mounting it in Linux is easy:
# mkdir /mnt/sd
# mount /dev/sdb4 /mnt/sd
And when you're done to unmount:
# umount /mnt/sd
I used a Serial to USB converter for my Mac, since, well, no computers come with serial ports anymore. I had some trouble getting "screen" to work on the Mac, so I added the USB serial device to my Linux virtual machine and used picocom, which worked great.
picocom -b 115200 /dev/ttyUSB0
Note: To exit picocom, Ctrl-A then Ctrl-X.
The cable that comes with the development kit ("CB7-05") with a DB-9F to DB9-F is a null-modem cable, by the way.
And this is what I got on the serial port, neat!
>> TS-BOOTROM - built Dec 1 2010 10:19:10
>> Copyright (c) 2009, Technologic Systems
>> Booting from onboard flash...
>> Booted from: onboard flash Booted in: 2.44 seconds
>> SBC Model number: TS-7500 SBC Sub-model number: 0
>> CPU clock rate: 250MHz RAM size: 64MB
>> MAC number: 00:D0:69:45:54:BA SBC FPGA Version: 5
>> Temperature Sensor: 26.1 degC MODE1 bootstrap: OFF
>> RTC present: NO Date and Time: Jan 1 1970 00:00:03
>> MODE2 bootstrap: OFF SD card size: 1886MB
>> Onboard SPI flash type: Macronix Onboard SPI flash size: 4MB
>> Offboard SPI flash type: Macronix Offboard SPI flash size: 4MB
>> XUARTs detected: 8 CAN present: NO
>> Linux kernel version: 184.108.40.206 Linux kernel date: Jun 8 2011
>> Bootrom date: Dec 1 2010 INITRD date: Nov 29 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: not present
>> MBR date: Jul 14 2009
Type 'tshelp' for help
It's not particularly well documented, but when I got it from the
factory the jumpers JP1 and JP2 were not installed. This causes the
board to boot off the internal 4MB SPI flash. In order to use the full
Linux distribution on the SD card you have to install JP1 then type
"exit" at the prompt (unless you switch the start script, which I'll do
And sure enough, it boots right up and I got a login prompt! There is a root login with no password, need to fix that with a quick "passwd" command
I want to fix the IP address because the default of 192.168.0.50 isn't helpful. It's a standard Debian install, so a quick edit of /etc/network/interfaces is all that was necessary. And a
And sure enough, I can now ssh firstname.lastname@example.org and it works! Now it's time to go back and set things up so I can boot directly into the real Linux. Reboot into the busybox. Follow the instructions in the manual to do:
rm linuxrc; ln -s /linxrc-sdroot /linuxrc; save
The last thing to do is reboot to make sure we boot into the real Linux correctly. Also copy over the ssh key files into /root/.ssh/authorized_keys2 so I can log in using keys instead of having to type a password. It's safer to do this while you still have the serial port connected in case something goes wrong.
And that's it! It's a fully functioning tiny computer. You can now safely disconnect the serial port and put the cover back on the box!