StrongARM-based Intrinsyc Cerfboard and Compact Flash craziness

john.orlando_at_gmail.com
Date: 10/31/05


Date: 31 Oct 2005 07:04:05 -0800

Hello,
We have been working a project that utilizes a StrongARM-based
Cerfboard from Intrinsyc (SA1110 version of the StrongARM). For those
of you not familiar with it, the Cerfboard is a small embedded module
that runs Linux (specifically, a distro called I-Linux that Intrinsyc
provides). This board has Compact Flash, 10/100 ethernet, and a few
other goodies. Anyway...

Recently, we have started using the Compact Flash slot that is
available on the board. We noticed that at times, the board would
completely freeze when attempting to go through the cardctl
insert/mount procedure to gain access to the Compact Flash. We wrote a
script that would do the following:

Forever
  cardctl insert
  mount /mnt/cf
  cp file to CF
  rm file from CF
  umount /mnt/cf
  cardctl eject
  print iteration count

We then let this run forever, watching the output on our serial
console. Sometimes, the board will crash after anything between 0 and
40 iterations (random). There is no response from any i/o device
(serial console, ethernet, etc). However, upon scoping the SDRAM
lines, there is still activity here, albeit much less than before the
crash occurs (by about an order of magnitude).

Sometimes, the board runs forever just fine...

...HERE IS WHERE THE CRAZINESS PART STARTS

One of our technicians noticed that if the script is started in the
FIRST nine minutes after power-up, the script will fail anywhere
between 0 and 40 iterations. If we start the script AFTER nine minutes
(its not PRECISELY nine minutes, but close), it NEVER EVER FAILS! We
have had it run thousands of times without any problems, as long as we
wait nine minutes before starting.

Here are the specifics of our setup:

Kernel: 2.4.9-ac10-rmk2-np1-cerf2
Card Services: 3.1.22
CPU: SA1110 rev 8
Distro: I-Linux 4.4
Execution speed: 192 MHz (through PLL)

There are no applications running on this board, other than the script.

>>From a hardware standpoint, we do notice that after the nine minute
mark the address/data bus in general appear much less active. Seems as
though prior to nine minutes, there are address/data accesses on the
SA1110 busses about once per 1.5 uS or so, in burst-chunks of about 14
at a time, with about 6 uS between burst chunks. After the nine minute
mark, the burst pace is about once every 14 uS, still in groups of 14
at a time, with a time-betwee-burst chunk also increased linearly.

Has anyone ever seen anything like this? Any ideas what magic happens
at the nine minute mark? We have been eliminating hardware slowly, and
are starting to think it is kernel/driver related. As a test, we
grabbed an XScale-based Cerfboard running 2.4.18 kernel, and same Card
Services. We ran the script on this board and it doesn't exhibit the
problem (though the hardware is obviously also different).

If you've read this far, much appreciated. We've been pulling our hair
out regarding this one. I don't think Intrinsyic still supports this
board, but we're following up with them just in case.

Thanks in advance for any help that can be provided.

Balding,
John O.