Evo T30: Development Environment 




Development Environment | Development Process |


This is an outline description of my development/test approach with NetXfer based thin clients. I make extensive use of a set of tools I've written. If you haven't already done so I suggest you read about them here.


We have the option of executing code on the thin client in three ways:

  1. Downloaded by NetXfer with a minimal BIOS in place. (By use of the 'p' key on power-on).
  2. Downloaded by a NetXfer clone (netboot) with the more sophisticated BIOS in place.
  3. From flash with the more sophisticated BIOS in place.

Approach (1) is only useful if you have little information on the thin client and need to find out more details about the hardware and how it is configured. To this end there are a series of 'look and print' routines that you'll find in the display section of the tools directory. These work best if the thin client has a serial port that you can direct the output to.

Approach (2) is the main development phase that lets you try things out without having to go through a 'flash-and-reboot' cycle.

Approach (3) is when you think it's all done and want to commit it to flash - although you can stay with (2) if you want a PXE type of approach with the thin client always booting from the network.

Phase 1 - What's here?

There are a collection of routines in the tools/display directory that I've written over time. These print out various bits information about what hardware is there and the content of various configuration registers. The routines change over time - for example there was code in there to flip bits on various IO ports so that I could find which port(s) were controlling the green and amber LEDS on the front panel. Now I know where they are that code has either been deleted or commented out. The code acts as a useful starting point if you have a problem that you think may be due to the way the BIOS has (or has not) initialised a particular device.

Build display.bin in the tools/display directory.

Package it up for NetXfer:

 makebootp -L display.bin -o ~/ftp/

Run it: Power up the thin client and hit the 'p' key to invoke NetXfer. This will download the code and immediately execute it - it is not programmed into the flash memory.

To see how the environment changes under the other BIOS we need to install the code into the flash memory and run it from there. This just requires one addition to our build command:

 makebootp -L display.bin -o ~/ftp/ -f FIRMWAREFILE.bin

...where FIRMWAREFILE.bin is the standard Wyse/Compaq firmware file for the thin client. (eg F576_Wye74.bin for a Wyse WT3125SE).

Install in flash: Power up the thin client and hit the 'p' key to invoke NetXfer. This time the code, rather being executed, will be programmed into the onboard flash memory. It will run the next time you press the 'power on' button on the thin client.

Get ready for phase 2

To make life easier during the development cycle we want a simple PXE-style network boot to test our new builds. This is provided by netboot which needs to be installed in the thin client's flash memory. Hopefully the program is fine as it stands and phase 1 hasn't revealed anything that needs attention - if it has you'll need to make any necessary changes to the initialisation code and then rebuild it.

Build the bootp.bin file:

 makebootp -L netboot.bin -o ~/ftp/ -f FIRMWAREFILE.bin

Install in flash: Power up the thin client and hit the 'p' key to invoke NetXfer. The netboot program will be programmed into the onboard flash memory and will be run every time you press the 'power on' button on the thin client. You have the option of adding a new splash screen at this time as well.

Phase 2 - Development

My way of working is with a model specific directory (eg T20) which holds all sources relevant to the thin client. Having (re)compiled the kernel, edited the command line or made an adjustment to the initrd it's just a case of:

 makebootp -k linux-3.0.3/arch/x86/boot/bzImage -r newcore.gz -c cmdline -o ~/ftp/ have a new bootp.bin file sitting in the ftp directory ready for the thin client to download and run.

Phase 3 - Complete

When all is well you can either leave things as they are (network booting), or flash the final version into the thin client. In the latter case it's just adding one or two extra switches to the previous build command:

 makebootp -k linux-3.0.3/arch/x86/boot/bzImage -r newcore.gz -c cmdline -o ~/ftp/ -f FIRMWARE.bin -b newbitmap.bmp

...and then back to powering-up the thin client client and using the 'p' key to invoke the standard NetXfer loader.


Any comments? email me.    Last update January 2012