
Hello,
To debug this we wrote a routine to enable the RISC timer on the CPM.
We verify it that this timer is actually getting counted down. This tells us that CPM is running.
However in the file cpm/mpc8260/serial_scc.c as soon as following line of code is executed
tbdf->cdb_sc |= BD_SC_READY;
the RISC timers stops counting.
So somehow it appears that the transmit buffer descriptor that we are setting up for CPM to transmit data on SCC1 appears to be "invalid"?
The CPM-RAM address that can be used is defined in include/asm-ppc/cpm_8260.h (definition of CPM_DATAONLY_BASE) so we moved its location around to 0x3000, also changing CPM_DATA_ONLY_SIZE also, but it had no effect.
I am sending question to folks at Motorola but if someone has encountered this before, please do let me know what could be the possible reason, that CPM gets stuck momemnt we mark tx descriptor is valid. Since the CPM at this point processing the RISC timer, I think CPM is getting the clocked correctly...
-Subodh Nijsure
-----Original Message----- From: Wolfgang Denk To: Subodh Nijsure Cc: U-Boot Mailing List Sent: 5/16/04 1:09 PM Subject: Re: [U-Boot-Users] CPM on 8250 board seems stuck.
In message F0C0133D6BE53342B2A78DE5D200E0A0074577@ssmail2.corp.skystream.com you wrote:
When I step through the code using BDI, I see is the code is stuck in
a
while loop in serial_putc waiting for the Buffer descriptor ready bit to get cleared in putc function.
while ( tbdf->cbd_sc & BD_SC_READY ) ;
...
It appears to me that CPM is "dead". Now how do I prove things either
way,
that it is not dead or its is working. Any CLUES I would really
appreciate
them.
Most probably the CPM is _not_ dead.
This is a typical case where you should lean back and think about the problem. So you programmed an UART, and wait for it to complete send- ing a character. When will this complete? After the last bit and the stop bit(s) have been clocked out. How long will this take? Well, this obviously depends on the clock. Why might it hang forever? Ummm... Maybe there is no clock???
Maybe there is no clock???
Check your BRG setup (probably OK, since not board dependent), and double-check your clock routing!
Anybody here that has done 8250 board, and booted u-boot on it, care
to
share your config.h file?
Why don't you just use one of the files in the include/configs directory? Checking for example the MAINTAINERS file will reveal at least two MPC8250 based boards.
Best regards,
Wolfgang Denk