University of Waterloo Coldfire Resource - Bugs
Here is a list of bugs & hints for the Coldfire Eval board:
- P&E Micro Assembler Bugs - IASMCF / CASMCF version 3.10
This version seems to have fixed the bugs in version 3.05; although
I have not done exhaustive testing yet - Jan 5, 2000
- P&E Micro Assembler Bugs - IASMCF / CASMCF version 3.05
- MAC instructions are not supported at all.
- NOT instruction is incorrect in the same way as the NEG bug. [CASMCFZ - reported by R. Montgomery, Oct 5, 1999]
- Read-only directory If IASMCF is started in a read-only directory
you will have to kill the program; otherwise it will leave you in an infinite loop of hitting ESC.
- BSET generates opcode 08F900nn an invalid opcode for unsupported instruction
- BCLR generates invalid opcode for unsupported instruction
- NEG (negate) instruction It generates
the incorrect opcode (0x444?) instead of (0x448?).
- CMPI.L, MULU.L assembles illegal instructions such as:
CMPI.L #NUM,(A0) and MULU.L #NUM,D0
- MULS.L incorrect opcodes for MULS.L ie it uses
the same opcode as MULU.L
- P&E Micro BDM Debugger Bugs - ICDCF Debugger version 1.01 Build E
- AND.L instruction is incorrectly disassembled. AND.L #00F8FF,D0
assembles as c0bc 0000 f8ff and is disassembled by the debugger as
AND.L #0,D0 followed by an illegal instruction
- Incorrectly displays some disassembled code. ie sub.l #1,D0 is 90BC0000 0001 in hex and when disassembled the debugger shows
sub.l #0,D0
- If the symbol table is loaded then it seems to be impossible to disassemble
the code (showcode command) from any label or from the address of a defined
label.
- P&E Micro PROG-CF software. - PROGCF version 3.16
If you are using it
to program the Coldfire flash ROM I'd suggest the following procedure:
- Always run the Reset Chip command after connecting the cable.
- Always run Erase Module before trying to program the module
- For the SBC5206 the base address is 0xFFE0 0000 and the CFP file is called
AM9_010W.CFP
- DEBUG Monitor Version 1.2.3 Bugs
- The Coldfire monitor allows you to change the baud rate (it is written into the flash RAM) and this gets to be a real pain in a student environment since someone always plays with it!
- MULU incorrectly assembled with word sized data (it generates long word data). ie
mulu.w #0x0f,D1
It also disassembles incorrectly as
00010008: C2FC MULU.W ,D1
0001000A: 0000 DC.W 0x0000
0001000C: 000F DC.W 0x000F
At times it assembles and disassembles
correctly and other times it disassembles taking 32 bits of data even
thought the instruction most definately takes 16 bits of data. At times like
that it executes just fine (using only 16 bits of data).
- MULS.W seems to be correctly assembled but they don't work properly. ie Tracing thru a single instructiondoes:
00010000 C3FC 0000 0001 MULS.W #0x1,D1
destroyes D1 and the program counter increments by 4 bytes not 6!!
- Various assemblers like the P&E Micro one will allow you to generate code
starting at address 0. However, the Version 1.2.3 monitor does not complain
if your S-RECs load data at < 0x10 000. This means that various things will
be overwritten and the monitor will generate very strange errors.
- In the version 1.2.3 monitor the file "dbug.dwn2" is compiled for the
debug flash area while "dbug.dwn3" is compiled for the user area. Hash marks
now show during download; aprox. 1 per 100 lines of the S-record file.
Here is the v1.2.3 dBUG image for downloading via
the BDM cable. This is basically the Motorola dbug.dwn2 file with the addresses
changed to start at 0xFFE0 0000.
- The version 1.1 to 1.2.3 monitors that come with the Coldfire Eval board
(5206) have a bug in the breakpoint command. If you exit back to the monitor with
a trap #15, function 0 then the breakpoints in the program are not replaced
with the original instructions and you'll have to hand-patch your code or
re-download your program.
The only way to exit the program and have the break points replaced is thru
an illegal instruction such as "4AFC".
- Power Supply Problems
Power supply problems will make your computer unreliable.
You should do the following:
- A small program in a tight loop will draw 550mA. You NEED a power
supply that provides > 600 mA. If you are going to plug in the ethernet
card I'd suggest a 1A supply minimum.
- The voltage regulator will run extreamly hot (overheat?) with a 12V
adapter. Mine runs very hot with a 9V 1A power adapter. You should bolt the 5V regulator to the circuit board with heatsink compound to help it dissipate heat and run cooler.