c50dsk.jpg

About

This is about software for using the TMS320C5x DSP Starter Kit (DSK) with GNU/Linux.

Somewhere in the 90's I got myself this little Board with DOS software that came on a 5 1/4 inch floppy.


Software

The Software consists of an assembler, a debugger (source code included!) and some pieces of example code.

The old DOS debugger was written in borland-cpp and uses a strange mixture of assembler/c to communicate over RS-232. As a result the old debugger does not run in a DOS box or emulation on any recent operating system.

To create something like the old DOS dsk5d we need at least

  • communication over RS-232
  • resetting, initializing the DSK
  • dumping and modifying program and data memory
  • register views
  • loading dsk-format programs
  • setting breakpoints
  • different modes of program execution
  • disassembling memory

Development

I started with a command line program to set up the main communication routines. Later on I embedded these routines in a GTK-program. With the time I discovered "glade" I decided to do a complete rewrite as I am still learning...

The way the DSK debugger kernel and the DOS software are communicating can be seen in the borland source code available at ftp://ftp.ti.com/pub/tms320bbs/c5xdskfiles/

Some other fine links:

Status

task status
RS-232 communication routines done
reset via CTS line done
initialising DSK done
read D/P memory done
fill D/P memory done
load DSK-files done
read registers done
put registers in text widget! done
execution to address 75%
breakpoints 25%
execution to breakpoint 75%
disassembler 75%
TRAP management 50%
single step execution 75%
automatic update of reg-widget done
display data from load-dialog 0%

Screenshot

  • here is a snapshot of the software in action.

Download

As of Jan 2003 there is only a very early version to offer. It is very basic and somewhat buggy.

Stay tuned as this is under heavy development.

  • gc50-0.2.tar.gz (03 Jan 2003):
    • Bugfix in representation of ARx registers
    • Changes in GUI (still under development)
    • execution to address implemented
    • reverse assembler works

  • gc50-0.3.tar.gz:
    • even more changes in the GUI
    • Status registers added (APR etc.)
    • query for connection status added
    • execute to breakpoint / stop works

  • gc50-0.4.tar.gz (04 Jan 2003):
    • single stepping added
    • automatic update of registers
    • automatic dump/update after reset

*Update*

A little while ago I was contacted by Madis Lehtla who asked a couple of questions about this (old an pretty much unsupported) hack. I was quite delighted when he sent me this:


HI,

I suceeded to port this application to GTK2, GLADE3 and Windows MinGW?. I attach everything in signle ZIP file (no experience with gzip). You may make it somehow available via Your webpage in Your preferred format.

Serial port is set in dskserial.h and is set to "\\\\.\\COM10" for MinGW? and "/dev/ttyUSB0" for POSIX systems. This allows using USB-serial adapters. Tested under 64-bit Ubuntu, MinGW? 32-bit Windows (EXE also included, but renamed for e-mail). Running binary requires GTK+ run-time DLL files when GTK+ is not installed. These DLL's can be downloaded: http://www.gtk.org/download-windows.html

Following packages are needed for compiling under Windows: http://www.mingw.org/ http://www.gtk.org/download-windows.html

Version number not changed yet (should be changed in configure.in and config.h). Automatic generation of "config.h" was commented out from "configure.in", because autoheader require definiton of PACKAGE_SOURCE_DIR, PACKAGE_DATA_DIR. It's a bit unclear how to do it correctly.

Changes: 2011-03-01 13:35
  1. ) Changes in all source files and autoconf makefiles for porting to GTK2 and GLADE 3.7.1
  2. ) interface.c, interface.h, support.c, support.h removed because GLADE3 does not generate C code,
  3. ) File "gc50.glade" is loaded directly when application is executed
  4. ) Serial port read timeout set to 0.5s
  5. ) Return codes added to serial communication routines for error detection
  6. ) Functions in dskserial.c and dskserial.h changed to use user defined type fd_t for compatiblity with some non-POSIX systems.
  7. ) Conditional compiling of dskserial.c allows direct access of serial port without intermediate POSIX layer (MinGW? serial port)

Known bugs (probably exist in previous versions):
  1. ) Some opcode/data combinations in DSP memory may cause disassembler to crash
  2. ) Serial communication may fail in some conditions, please reset DSP by pressing RESET

With Best Regards,

Madis Lehtla

So here is the updated package by Madis. Please mind that I have not tested it myself as I don't have the DSP starter kit anymore.

Good job, Madis!
Topic revision: r12 - 01 Mar 2011, MatthiasWientapper
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback