[ECOS] Possible bit-rot in hal_if.c

Robin Randhawa robin.randhawa@gmail.com
Thu Oct 26 11:59:00 GMT 2006

Hi Chris and thanks for the mail!

On Thu, 2006-10-26 at 12:24 +0100, Chris Zimman wrote:
> The Galileo (and later Marvell) bridges were notoriously bug ridden with
> the early versions having something like 30+ pages of errata.  Maybe
> this is why CAS = 2 is only marked as being supported in this version.

Ah yes, I've just been through a rather painful episode with the 64120
series. They have quite a reputation! I was looking at very random linux
crashes on a 4Kc-malta - stuff like random rsync failures, ext3 journal
aborts and interestingly the ethernet controller's linux driver would
report a hardware loopback test failure too.

After torturing the DMA engines and giving up hope, it turned out that a
single crucial bit was not being set in the SDRAM Controller
configuration by this particular bootloader [ let's call it X ]. This
resulted in PCI-DMA transfers occasionally reading junk.

The CAS issue was another one, CL3 SDRAM wouldn't work because a
recommended procedure wasn't being performed during controller init. Now
I can use CL2 or 3 SDRAMs.

In the course of this investigation, I've gone through the manuals and
errata sheets of the GT64120A-B-1 through 4 and can safely say that at
least these controllers can work with SDRAM modules with CAS Latencies 2
and 3. However, there might have been problems with earlier revisions

What I wanted to do was basically propagate the same changes into
RedBoot but I seem to get the impression that Redboot (and perhaps the
rest of eCos as well) for the malta have been lying unused perhaps ? I
didn't expect a build failure!!! Is anyone using eCos and/or Redboot
with current CVS ?

> That code hasn't been touched for quite a while.  I think U-Boot has
> support for this platform as well.  Maybe you can garner something
> useful from there?

Oh yes, I did poke in there. Unfortunately u-boot supports only much
later and very different models of system controllers from

I'm trying to boot Linux now and that seems to be failing with :
"** command abort - illegal memory access?"

Thanks for the response though!


> --Chris
> -----Original Message-----
> From: ecos-discuss-owner@ecos.sourceware.org
> [mailto:ecos-discuss-owner@ecos.sourceware.org] On Behalf Of Robin
> Randhawa
> Sent: 26 October 2006 09:17
> To: ecos-discuss@sourceware.org
> Subject: [ECOS] Possible bit-rot in hal_if.c
> Greetings again.
> In addition to the build failure mentioned in my previous mail, I find
> that redboot fails to detect the SDRAM size correctly on this platform.
> I am using a single 64MB SDRAM Module with a CAS Latency of 2 and
> redboot always seems to detect only 32MB. Shouldn't redboot be probing
> for the maximum amount of memory while setting up the SDRAM Controller
> for things like CAS to RAS delays, refresh rates etc ?
> I'm trying to figure out the Galileo GT64120 system controller
> initialisation code for the malta and I find that for some reason SDRAM
> modules having CAS Latencies of anything other than 2 are unsupported.
> The system controller manual mentions that values of 2 and 3 should be
> fine. Any reason why this was done ?
> I've used multiple SDRAM Modules which I've verified as usable under
> yamon on this board so that rules out flaky SDRAM.
> I'm wondering whether I am getting the build failure because a platform
> of some, er, vintage, like the 4Kc on the malta isn't a part of some
> automated build regression and is forgotten in the mists of time ?
> Any help would be appreciated.
> Cheers,
> Robin
> -------------------------------------------
> Greetings.
> I was trying to build a redboot_ROM image for a MIPS 4Kc processor on a
> malta platform using a latest checkout of anoncvs. I've hit a build
> failure which I'll describe here.
> I'm using the recommended tools as follows :
> $ ecosconfig new malta_mips32_4kc redboot
> $ ecosconfig import
> $ECOS_REPOSITORY/hal/mips/malta/current/misc/redboot_ROM.ecm
> $ ecosconfig check
> $ ecosconfig tree
> $ make
> I get a build failure at this point :
> mipsisa32-elf-gcc -c
> -I/data/software/ecos_work/mips/build/redboot_ROM/install/include
> -I/data/software/ecos_work/master_tree/ecos/packages/hal/common/current
> -I/data/software/ecos_work/master_tree/ecos/packages/hal/common/current/
> src
> -I/data/software/ecos_work/master_tree/ecos/packages/hal/common/current/
> tests -I.
> -I/data/software/ecos_work/master_tree/ecos/packages/hal/common/current/
> src/ -finline-limit=7000 -mips32 -EL -msoft-float -Wall -Wpointer-arith
> -Wstrict-prototypes -Winline -Wundef  -g -O2 -ffunction-sections
> -fdata-sections  -fno-exceptions   -G0 -Wp,-MD,src/hal_if.tmp -o
> src/hal_common_hal_if.o
> /data/software/ecos_work/master_tree/ecos/packages/hal/common/current/sr
> c/hal_if.c
> /data/software/ecos_work/master_tree/ecos/packages/hal/common/current/sr
> c/hal_if.c:539:27: macro "HAL_ICACHE_INVALIDATE" requires 2 arguments,
> but only 1 given
> /data/software/ecos_work/master_tree/ecos/packages/hal/common/current/sr
> c/hal_if.c: In function `flush_icache':
> /data/software/ecos_work/master_tree/ecos/packages/hal/common/current/sr
> c/hal_if.c:539: `HAL_ICACHE_INVALIDATE' undeclared (first use in this
> function)
> /data/software/ecos_work/master_tree/ecos/packages/hal/common/current/sr
> c/hal_if.c:539: (Each undeclared identifier is reported only once
> /data/software/ecos_work/master_tree/ecos/packages/hal/common/current/sr
> c/hal_if.c:539: for each function it appears in.)
> make[1]: *** [src/hal_if.o.d] Error 1
> make[1]: Leaving directory
> `/data/software/ecos_work/mips/build/redboot_ROM/hal/common/current'
> make: *** [build] Error 2
> The HAL_ICACHE_INVALIDATE macro is being called without arguments. I
> would imagine it should be called as follows :
> HAL_ICACHE_INVALIDATE ( __p, __nbytes );
> Could this be corroborated please ?
> Cheers and thanks,
> Robin
> -- 
> Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
> and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

More information about the Ecos-discuss mailing list