[U-Boot-Users] Start of new ARM920T target
Marc Singer
elf at buici.com
Fri Jul 18 02:30:51 CEST 2003
I respect your objections. This was not intended as a *real* patch.
I wanted you to look at the Makefile portion to see if you approved.
As for Perl, I think I can write the script using sh. Perl was just
too darn quick and easy.
BTW, the RTC_DEBUG macro isn't mine. I'll see where it came from.
On Fri, Jul 18, 2003 at 01:34:31AM +0200, Wolfgang Denk wrote:
> Now for the technical discussion: I don't see much advantage when
> using your mkconfigx script. IMHO it has several problems:
> * It will incorrectly include files that have been commented out
> using C comments, "#if 0" or similar clauses.
That's an interesting objection.
> * It is based on the assumption that only CONFIG_* definitions are
> relevant; it would be nice if this was the case, but actually there
> is at least a couple of CFG_* variables, and some boards use
> (locally) even completely different names
Though this is true, the point is to enable conditional compilation
and *not* to allow every configuration option to control Makefiles.
> You modify include/asm-arm/processor.h in an unexpacted way
> (inserting "#undef arm"). Please don't add such code to system header
> files. Ther eis obviously a problem somewhere in your toolchain
> and/or on tyour system. Please fix the cause, not the symptoms.
This is to work around a bug. Someone was #define'ing it and breaking
a struture. I think that the true culprit is the code that #define's
a symbol that isn't all upper case.
> May I please ask you to clean up the patch as far as the KEV7A400 dev
> board is concerned, and resubmit it. Please omit the mkconfigx stuff
> (and other "goodies" like .gdbinit).
Of course. There's lots of work to do before it is useful.
-*-
Let me elaborate on mkconfigx.
First, I wrote this script to handle the new feature in order to make
it easy to enable or disable it. It would be very easy to make it
execute only for boards or CPUs that use this configuration feature.
Or, when a particular tool was available.
I look only for CONFIG_ constants on purpose. We can have a simple
rule: only CONFIG_ constants that define the value '1' will be parsed
by mkconfigx.
I'm not sure I'd want to solve the #if 0 problem. Yes, someone could
get something that they don't want. On the other handle, it is
reasonable to change the definition to '0' from '1' when a feature
isn't desired.
The strength of this kind of configuration comes from the fact that it
allows the Makefiles to be the arbitrator of what code is included and
what is excluded. I've been using it a lot while tweaking the ARM920
builds to accomodate the architectural differences between the Samsung
parts and the Sharp parts. There are far too many #ifdefs in the
existing ARM920 code making it difficult to figure out what belongs
where. This configuration method lets us move the decisions about
what belongs where to the Makefile.
So, instead of putting at the top of a source file:
#if defined (CPUA) | defined (CPUB) | ...
/* code */
#endif
We put in the makefile
src-$(CONFIG_CPUA) +=start_type_1.S timer_type1.c ...
src-$(CONFIG_CPUB) +=start_type_2.S timer_type1.c ...
src-$(CONFIG_CPUC) +=start_type_1.S timer_type2.c ...
and move the code to separate files. There are many places where code
shares a file for no good reason. I'm looking to put truly ARM920
code in ARM920 triggered sources, and so on.
Cheers.
More information about the U-Boot
mailing list