16525 East Laser Drive
Fountain Hills, AZ 85268
Phone (480) 837-5200
Technologic Systems' Logo

Home > Software > Solutions for ARM > TS-7400 Software

 

TS-7400 Software Features

arrow

The Linux OS for the TS-7400 is powered with unique out-of-the-box software utilities and solutions that accelerate embedded productivity, including:

 

Flexible Booting Options

The TS-7400 board has Linux installed by default on onboard flash. Upon bootup, The board will boot within 1.1 seconds to a Linux prompt on UART #0 (/dev/ttyAM0), powered with various Busybox commands. At this point, if you type 'exit' from the serial shell, the TS-7400 will then attempt a full Debian Linux bootup from the SD card on partition #3. If the SD card is not present or the EXT2 filesystem does not pass a basic sanity test or the special file "/notrootfs" exists, a demonstration version of a miniature Linux distribution contained on the onboard flash itself is instead booted.

Should you wish to automatically bypass the fastboot and proceed directly into starting the version of Linux of choice, you can do so by using the various linuxrc scripts included by default on the TS-7400 fastboot shell. These scripts allow mounting of a root filesystem via:

  • onboard NAND Flash
  • SD Card
  • USB Flash Drive or USB Hard Drive
  • NFS

For example, in order to automatically mount the SD Card Linux root filesystem after power up, you can use the following command issued to the fastboot shell:

ln -sf /linuxrc-sdroot /linuxrc; save

For the onboard flash the command is:

ln -sf /linuxrc-mtdroot /linuxrc; save

For the USB flash dongle or USB hard drive:

ln -sf /linuxrc-usbroot /linuxrc; save

For a network filesystem (NFS root):

ln -sf /linuxrc-nfsroot /linuxrc; save

To get back to the fastboot shell, you can do so by placing the file "/fastboot" in the root directory of the new filesystem mounted:

touch /fastboot

Or just issue the following command to the fastboot shell:

ln -sf /linuxrc-fastboot /linuxrc; save

The '/linuxrc' file is a shell script that is the very first thing run by the kernel on startup. Several sample startup scripts are included and can either be used directly ("ln -sf /linuxrc-XXX /linuxrc" command) or modified to include custom bootup logic. These shell scripts were designed to be as fast and simple as possible (approximately 45 lines of code) for easy customer modifications. It is anticipated that this shell script be modified from the default to implement things in the customer's product such as backup configurations, software field updates, conditional booting/verification of SD cards, etc. Technologic Systems professional services is available should you need help in implementing a specific feature.

Software Update via USB Flash Drive in Default Configuration

Although Technologic Systems production staff can load the flash with customer supplied software, it is often more convenient to have a local production process for installing or updating the files and programs that make your product unique. The default software installation of the TS-7400 enables this by providing a hook to allow customer code to "hijack" the normal fast-boot bootup process. The default linuxrc (linuxrc-fastboot) will run a program "/bin/check-usb-update" in the background after bootup has completed. This program looks for a script "/tsinit" on the USB mass storage device (USB thumb-drive, or USB hard drive) connected to the bottom USB slot. If this script exists, it is then run automatically as the Linux "root" user-ID. A sample /tsinit script that copies a program "myprogram" to onboard flash, and then changes the default bootup to the SD card follows:

#!/bin/sh

ln -sf /linuxrc-sdroot /linuxrc
mount /dev/mtdblock/3 /onboardflash
cp /mnt/root/myprogram /onboardflash/bin
umount /onboardflash
save
reboot

While the "tsinit" script is run, the red LED will be on. After it is complete, the red LED will go off. A customer can mass-update many TS-7400's quickly and easily by using a USB flash dongle with a custom "tsinit" and data files and applying power with the USB dongle on, wait for the LED to go off, then proceed to the next board. The "tsinit" script will begin to execute approximately 3 seconds after power-on.

Changing / Updating the TS-BOOTROM

Normally, the TS-7400 boot firmware is loaded with the TS-FLASHBOOT bootup program. This program bootstraps the CPU by loading the first 512 bytes from the NAND flash and jumping into it. This program then loads the kernel and initrd from the NAND flash. Once the kernel has booted and mounted the initrd, it can "pivot_root" and give the illusion it actually booted directly from SD, NAND, NFS, etc file systems. Should you wish to actually load the kernel and fastboot initrd from an SD card, the TS-FLASHBOOT bootup program must be replaced with TS-SDBOOT. This can be done with the "tsbootrom-update" program available at:

Usage and command line help for this command follows:

Usage: tsbootrom-update [OPTION] ...
Updates TS-BOOTROM bootup program stored on EEPROM

General options:
-n Do not actually write EEPROM
-s, --sdboot Write TS-SDBOOT bootup program
-f, --flashboot Write TS-FLASHBOOT bootup program
-u, --burninboot Write TS-BURNINBOOT bootup program
-p, --spiflashboot Write TS-SPIFLASHBOOT bootup program
-b, --blastboard Write to blast board EEPROM instead of SBC
-h, --help This help

EEPROM security block options:
-m, --mac=X Write X as ethernet MAC address
-l, --verifylen=N Checksum includes first N 512 byte sectors
-d, --device=FILE Use FILE to re-compute checksum value
-V, --verifydat=N Use N as pre-computed checksum value
-L, --lockdat=X Use X for the SD unlock data token from
previous "sdlock --set" command
-k, --verifylock Do not boot to an unlocked SD card
-c, --noconsole Disable serial console bootup messages

TS-production specific options:
-a, --alloc-mac Get MAC address from /var/ts-production/mac

The TS bootup programs will by default print a banner message on bootup to the serial port displaying its build date, etc. If you wish to use all serial ports for your application and do not wish to have a serial console, the tsbootrom-update program can be used to silence early bootstrap banner messages preventing confusion of any potential external device UART#0 may be connected to.

Other bootstrap programs are available for purchase from Technologic Systems should you need them and custom programming is available as one of our services. For instance, the TS-ETHBOOT bootup program may be used to completely boot Linux from the network without NAND flash or SD card installed.

Hardware Control through Linux Shell Scripts

Technologic Systems provide a package of shell functions which enable control to some of the TS-7000 hardware functions without having to write/compile C code. These shell functions allow you to access various functions such as DIO, ADCs from the command line or in your own shell scripts. The ts7xxx.subr file, which includes the implementation of all shell functions, is available at:

There are two new commands added to the provided TS busybox to support these shell functions. These commands are "peekpoke" which is used to provide direct access to memory, and ADCread, which will provide a continuous stream of analog to digital readings (either on one channel or all channels) to stdout in text format. Both of these commands provide more info on what options are available if you type them without any arguments.

The Shell Functions include:

  • dio_dir_get <n>: get the current direction (0=input,1=output) of DIO #n (n in 0..15)
  • dio_dir_set <n> <dir>: set the direction of DIO #n to the specified direction (0=input,1=output)
  • dio_data_get <n>: get the current value (0=Low,1=High) of DIO #n
  • dio_data_set <n> <val>: set the current value (0=Low,1=High) of DIO #n (specified pin should be set to be an output already)
  • usb_init: call this function to turn the USB ports on and initialize them
  • usb_off: call this function to turn off the USB ports
  • usb_numports: prints the number of USB ports on the board. this may be greater then the actual number of physical ports. the first port is port 0
  • usb_port_devexists <port>: prints '1' if something is plugged into the specified port, or '0' otherwise.
  • eth_off: turns off the ethernet port and phy
  • eth_on: turns on the ethernet port and phy
  • led0 <state>: sets the state of the green LED (0=OFF,1=ON)
  • led1 <state>: sets the state of the red LED (0=OFF,1=ON)
  • cpu_speed_max: set the CPU and bus speed to their maximum (normal) values, e.g. 200Mhz/100Mhz.
  • cpu_speed_166: set the CPU speed to 166Mhz and the bus speed to 66Mhz.
  • cpu_speed_42: set the CPU speed and bus speed to 41.5Mhz. This is the slowest speed that Ethernet will work at.
  • cpu_speed_min: set the CPU and bus speed to their minimum values (14.7456Mhz)
  • temp_read: returns the current Celsius temperature reading from the TMP124 chip.

For more information on Linux solutions, contact a Technologic Systems engineer.

Contact us!

Search the KB