Chapter 4 Software Development
page 4-21
A bus monitor also comes in handy during host driver development when the personal computer
hangs, making it impossible to pinpoint the exact circumstances producing the failure.
Bus monitor data is also highly effective in tracing host controller operation and evaluating the
final product.
As of August 1999, the following bus monitors are commercially available.
Products: CATC USB Chief Bus & Protocol Analyzers
CATC USB Inspector Bus & Protocol Analyzer
Developer: Computer Access Technology Corporation (CATC)
http://www.catc.com/

Japanese distributor: Toyo Technica Co., Ltd.

http://www.toyo.co.jp/
Product: Genoa Technology USB Expert Protocol Analyzer
Product: Genoa Technology, Incorporated.
http://www.gentech.com/

Japanese distributor: Bits Co., Ltd.

http://www.bits.co.jp/
(2) Microcontroller emulator
The JOB60851 Starter Kit provides printf(), scanf(), and other C standard I/O library functions
for confirmation of operation and simple debugging of programs running on its MSM66Q573
microcontroller. Thorough debugging with program tracing and other facilities for illuminating
firmware problems, however, requires an emulator (in-circuit emulator, ROM emulator, etc.)
for the target microcontroller. Look for such tools from the microcontroller vendor and third-
party sources.
4-3-8. Note on Porting
JOB60851 programming uses a version of the C programming language extended for embedded
applications. The following is a list of extension requiring special attention when porting the sample
firmware to other microcontrollers and compilers. For further details on these language extension,
refer to the compiler manual (Cc665s.pdf) and programming guide (Pg665s.pdf) on the CD-ROM.
(1) #pragma ABSOLUTE variable_name address
This pragma permits specification of the final absolute address for a variable at the C source
code level.
(2) #pragma ACAL function_name
This pragma calls the specified function with the more efficient ACAL instruction instead of the
normal CAL instruction--provided that the function starts at an address between 1000h and
17ffh. Delete or disable these pragmas when porting the source code to a different
microcontroller.
(3) #pragma INTERRUPT function_name vector
This pragma makes the specified function into an interrupt service routine by assigning its entry
point to a vector table entry. This microcontroller has separate interrupt vectors for various
internal and external interrupts. The sample firmware, however, uses only external interrupts
from the USB controller.