Skip to contentSkip to conversation

: tools: fix fw_printenv tool to compile again

PATCH New Markus Klotzbücher 4 participants 13 messages Nov 26, 2007 – Jan 9, 2008 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

This patch updates the fw_printenv/fw_setenv userspace tool to include the correct mtd header in order to compile again. Along with this a number of warnings are fixed.

tools/env/fw_env.c +24 -26
index f723b5b..2b055bb 100644
@@ -31,16 +31,14 @@
 #include <sys/ioctl.h>
 #include <sys/stat.h>
 #include <unistd.h>
-#include <linux/mtd/mtd.h>
+#include <mtd/mtd-user.h>
 #include "fw_env.h"
 
-typedef unsigned char uchar;
-
 #define	CMD_GETENV	"fw_printenv"
 #define	CMD_SETENV	"fw_setenv"
 
 typedef struct envdev_s {
-	uchar devname[16];		/* Device name */
+	char devname[16];		/* Device name */
 	ulong devoff;			/* Device offset */
 	ulong env_size;			/* environment size */
 	ulong erase_size;		/* device erase size */
@@ -60,22 +58,22 @@ static int curdev;
 
 typedef struct environment_s {
 	ulong crc;			/* CRC32 over data bytes    */
-	uchar flags;			/* active or obsolete */
-	uchar *data;
+	unsigned char flags;		/* active or obsolete */
+	char *data;
 } env_t;
 
 static env_t environment;
 
 static int HaveRedundEnv = 0;
 
-static uchar active_flag = 1;
-static uchar obsolete_flag = 0;
+static unsigned char active_flag = 1;
+static unsigned char obsolete_flag = 0;
 
 
 #define XMK_STR(x)	#x
 #define MK_STR(x)	XMK_STR(x)
 
-static uchar default_environment[] = {
+static char default_environment[] = {
 #if defined(CONFIG_BOOTARGS)
 	"bootargs=" CONFIG_BOOTARGS "\0"
 #endif
@@ -155,7 +153,7 @@ static uchar default_environment[] = {
 };
 
 static int flash_io (int mode);
-static uchar *envmatch (uchar * s1, uchar * s2);
+static char *envmatch (char * s1, char * s2);
 static int env_init (void);
 static int parse_config (void);
 
@@ -175,15 +173,15 @@ static inline ulong getenvsize (void)
  * Search the environment for a variable.
  * Return the value, if found, or NULL, if not found.
  */
-unsigned char *fw_getenv (unsigned char *name)
+char *fw_getenv (char *name)
 {
-	uchar *env, *nxt;
+	char *env, *nxt;
 
 	if (env_init ())
 		return (NULL);
 
 	for (env = environment.data; *env; env = nxt + 1) {
-		uchar *val;
+		char *val;
 
 		for (nxt = env; *nxt; ++nxt) {
 			if (nxt >= &environment.data[ENV_SIZE]) {
@@ -206,7 +204,7 @@ unsigned char *fw_getenv (unsigned char *name)
  */
 void fw_printenv (int argc, char *argv[])
 {
-	uchar *env, *nxt;
+	char *env, *nxt;
 	int i, n_flag;
 
 	if (env_init ())
@@ -241,8 +239,8 @@ void fw_printenv (int argc, char *argv[])
 	}
 
 	for (i = 1; i < argc; ++i) {	/* print single env variables   */
-		uchar *name = argv[i];
-		uchar *val = NULL;
+		char *name = argv[i];
+		char *val = NULL;
 
 		for (env = environment.data; *env; env = nxt + 1) {
 
@@ -279,9 +277,9 @@ void fw_printenv (int argc, char *argv[])
 int fw_setenv (int argc, char *argv[])
 {
 	int i, len;
-	uchar *env, *nxt;
-	uchar *oldval = NULL;
-	uchar *name;
+	char *env, *nxt;
+	char *oldval = NULL;
+	char *name;
 
 	if (argc < 2) {
 		return (EINVAL);
@@ -361,7 +359,7 @@ int fw_setenv (int argc, char *argv[])
 	while ((*env = *name++) != '\0')
 		env++;
 	for (i = 2; i < argc; ++i) {
-		uchar *val = argv[i];
+		char *val = argv[i];
 
 		*env = (i == 2) ? '=' : ' ';
 		while ((*++env = *val++) != '\0');
@@ -373,7 +371,7 @@ int fw_setenv (int argc, char *argv[])
   WRITE_FLASH:
 
 	/* Update CRC */
-	environment.crc = crc32 (0, environment.data, ENV_SIZE);
+	environment.crc = crc32 (0, (uint8_t*) environment.data, ENV_SIZE);
 
 	/* write environment back to flash */
 	if (flash_io (O_RDWR)) {
@@ -569,7 +567,7 @@ static int flash_io (int mode)
  * If the names match, return the value of s2, else NULL.
  */
 
-static uchar *envmatch (uchar * s1, uchar * s2)
+static char *envmatch (char * s1, char * s2)
 {
 
 	while (*s1 == *s2++)
@@ -586,10 +584,10 @@ static uchar *envmatch (uchar * s1, uchar * s2)
 static int env_init (void)
 {
 	int crc1, crc1_ok;
-	uchar *addr1;
+	char *addr1;
 
 	int crc2, crc2_ok;
-	uchar flag1, flag2, *addr2;
+	char flag1, flag2, *addr2;
 
 	if (parse_config ())		/* should fill envdevices */
 		return 1;
@@ -608,7 +606,7 @@ static int env_init (void)
 		return (errno);
 	}
 
-	crc1_ok = ((crc1 = crc32 (0, environment.data, ENV_SIZE))
+	crc1_ok = ((crc1 = crc32 (0, (uint8_t *) environment.data, ENV_SIZE))
 			   == environment.crc);
 	if (!HaveRedundEnv) {
 		if (!crc1_ok) {
@@ -632,7 +630,7 @@ static int env_init (void)
 			return (errno);
 		}
 
-		crc2_ok = ((crc2 = crc32 (0, environment.data, ENV_SIZE))
+		crc2_ok = ((crc2 = crc32 (0, (uint8_t *) environment.data, ENV_SIZE))
 				   == environment.crc);
 		flag2 = environment.flags;
 
tools/env/fw_env.h +3 -3
index 13c45a2..58607de 100644
@@ -47,8 +47,8 @@
 	"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; " 	\
 	"bootm"
 
-extern		void  fw_printenv(int argc, char *argv[]);
-extern unsigned char *fw_getenv  (unsigned char *name);
-extern		int   fw_setenv  (int argc, char *argv[]);
+extern void  fw_printenv(int argc, char *argv[]);
+extern char *fw_getenv  (char *name);
+extern int fw_setenv  (int argc, char *argv[]);
 
 extern unsigned	long  crc32	 (unsigned long, const unsigned char *, unsigned);

Best regards

Markus Klotzb?cher

--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: [email protected]

#1 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

Markus,

Quoted 4 lines · Markus Klotzb?cher

This patch updates the fw_printenv/fw_setenv userspace tool to include the correct mtd header in order to compile again. Along with this a number of warnings are fixed.

Looks a lot like this one:

http://article.gmane.org/gmane.comp.boot-loaders.u-boot/26484

IIRC, Wolfgang rejected it because it was Linux 2.6-specific...

regards,
Ben

#2 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

In reply to Markus Klotzbücher
Quoted 6 lines · In message <[email protected]> you wrote:

This patch updates the fw_printenv/fw_setenv userspace tool to include the correct mtd header in order to compile again. Along with this a number of warnings are fixed.

Hm... this is only the "correct mtd header" if you are building for somewhat recent versions of the Linux kernel - if you want to support his on older versions (using older versions of MTD code) this will break.

I suggest we optionally provide a build option to allow to use the old include files for systems that still need it (as a separate make target, for example).

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Intuition, however illogical, is recognized as a command prerogative.
	-- Kirk, "Obsession", stardate 3620.7
#3 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

Dear Ben, Wolfang,

Quoted 6 lines · Wolfgang Denk

In message <[email protected]> you wrote:

Hm... this is only the "correct mtd header" if you are building for somewhat recent versions of the Linux kernel - if you want to support his on older versions (using older versions of MTD code) this will break.

I see.

Quoted 3 lines

I suggest we optionally provide a build option to allow to use the old include files for systems that still need it (as a separate make target, for example).

How about the following:

This patch updates the fw_printenv/fw_setenv userspace tool to include the correct MTD header in order to compile against current kernel headers. Backward compatibility is preserved by introducing an option MTD_VERSION which can be set to "old" for compilation using the old MTD headers. Along with this a number of warnings are fixed.

Makefile +1 -1
index ac4b430..f34b05d 100644
@@ -318,7 +318,7 @@ updater:
 		$(MAKE) -C tools/updater all || exit 1
 
 env:
-		$(MAKE) -C tools/env all || exit 1
+		$(MAKE) -C tools/env all MTD_VERSION=${MTD_VERSION} || exit 1
 
 depend dep:	version
 		for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir _depend ; done
tools/env/Makefile +4 -0
index 1f16768..ea2d5b5 100644
@@ -28,6 +28,10 @@ HEADERS	:= fw_env.h
 
 CPPFLAGS := -Wall -DUSE_HOSTCC
 
+ifeq ($(MTD_VERSION),old)
+CPPFLAGS += -DMTD_OLD
+endif
+
 all:	$(obj)fw_printenv
 
 $(obj)fw_printenv:	$(SRCS) $(HEADERS)
tools/env/README +4 -0
index d8386f7..f8a644e 100644
@@ -6,6 +6,10 @@ For the run-time utiltity configuration uncomment the line
 #define CONFIG_FILE  "/etc/fw_env.config"
 in fw_env.h.
 
+For building against older versions of the MTD headers (meaning before
+v2.6.8-rc1) it is required to pass the argument "MTD_VERSION=old" to
+make.
+
 See comments in the fw_env.config file for definitions for the
 particular board.
 
tools/env/fw_env.c +30 -26

159 lines not on this page · raw message

tools/env/fw_env.h +3 -3
index 13c45a2..58607de 100644
@@ -47,8 +47,8 @@
 	"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; " 	\
 	"bootm"
 
-extern		void  fw_printenv(int argc, char *argv[]);
-extern unsigned char *fw_getenv  (unsigned char *name);
-extern		int   fw_setenv  (int argc, char *argv[]);
+extern void  fw_printenv(int argc, char *argv[]);
+extern char *fw_getenv  (char *name);
+extern int fw_setenv  (int argc, char *argv[]);
 
 extern unsigned	long  crc32	 (unsigned long, const unsigned char *, unsigned);

Viele Gr??e / Best regards

Markus Klotzb?cher

--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: [email protected]

#4 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

Quoted 21 lines · Markus Klotzb?cher

Dear Ben, Wolfang,

Quoted 7 lines · Wolfgang Denk

In message <[email protected]> you wrote:

Hm... this is only the "correct mtd header" if you are building for somewhat recent versions of the Linux kernel - if you want to support his on older versions (using older versions of MTD code) this will break.

I see.

Quoted 4 lines

I suggest we optionally provide a build option to allow to use the old include files for systems that still need it (as a separate make target, for example).

Quoted 8 lines

How about the following:

This patch updates the fw_printenv/fw_setenv userspace tool to include the correct MTD header in order to compile against current kernel headers. Backward compatibility is preserved by introducing an option MTD_VERSION which can be set to "old" for compilation using the old MTD headers. Along with this a number of warnings are fixed.

Sounds good to me. It'd be cooler if make could detect the presence/absence of <linux/mtd-user.h>, but I'm not enough of a build system whiz to know how to do that.

A couple of additional requests:

1. Can you also please add the other part of my patch that creates/destroys the 'fw_setenv' symbolic link? It's a bit annoying that the documentation mentions the 'fw_setenv' utility, but it doesn't really exist without a bit of help.

2. Please include changes to the relevant documentation (README + wiki) so that people know to when and how to set MTD_VERSION. This may prevent a few 'RTFM' e-mails.

regards,
Ben

#5 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

Hi Ben,

Quoted 9 lines · Ben Warren
Quoted 8 lines · Markus Klotzb?cher

How about the following:

This patch updates the fw_printenv/fw_setenv userspace tool to include the correct MTD header in order to compile against current kernel headers. Backward compatibility is preserved by introducing an option MTD_VERSION which can be set to "old" for compilation using the old MTD headers. Along with this a number of warnings are fixed.

Quoted 3 lines

Sounds good to me. It'd be cooler if make could detect the presence/absence of <linux/mtd-user.h>, but I'm not enough of a build system whiz to know how to do that.

I'm afraid nor am I. Suggestions welcome.

Quoted 6 lines

A couple of additional requests:

1. Can you also please add the other part of my patch that creates/destroys the 'fw_setenv' symbolic link? It's a bit annoying that the documentation mentions the 'fw_setenv' utility, but it doesn't really exist without a bit of help.

Agreed that this confusing, but does a symbolic link really help? Wouldn't it be better to simply describe the rationale in the documentation instead?

Quoted 3 lines

2. Please include changes to the relevant documentation (README + wiki) so that people know to when and how to set MTD_VERSION. This may prevent a few 'RTFM' e-mails.

The patch I posted updates the README in tools/env/ and I'll update the wiki as soon as the patch is accepted. I wonder though, if the env/tools/README shouldn't be move into the main README. It's rather hidden where it is right now.

Viele Gr??e / Best regards

Markus Klotzb?cher

--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de

#6 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

Quoted 32 lines · Markus Klotzb?cher

Hi Ben,

Quoted 11 lines · Ben Warren
Quoted 9 lines · Markus Klotzb?cher

How about the following:

This patch updates the fw_printenv/fw_setenv userspace tool to include the correct MTD header in order to compile against current kernel headers. Backward compatibility is preserved by introducing an option MTD_VERSION which can be set to "old" for compilation using the old MTD headers. Along with this a number of warnings are fixed.

Quoted 4 lines

Sounds good to me. It'd be cooler if make could detect the presence/absence of <linux/mtd-user.h>, but I'm not enough of a build system whiz to know how to do that.

I'm afraid nor am I. Suggestions welcome.

Quoted 7 lines

A couple of additional requests:

1. Can you also please add the other part of my patch that creates/destroys the 'fw_setenv' symbolic link? It's a bit annoying that the documentation mentions the 'fw_setenv' utility, but it doesn't really exist without a bit of help.

Quoted 5 lines

Agreed that this confusing, but does a symbolic link really help? Wouldn't it be better to simply describe the rationale in the documentation instead?

I like the symbolic link, because when done you end up with an executable called 'fw_setenv' and move it to the file system with 'cp -a'. I don't care too much though, as long as it's documented somewhere where people will see it. Personally, I went through a "where the eff is the fw_setenv utility that's mentioned in the documentation" and eventually looked in the source code and noticed that it uses argv[0]... Sparing others this grief would be nice.

Quoted 11 lines
Quoted 4 lines

2. Please include changes to the relevant documentation (README + wiki) so that people know to when and how to set MTD_VERSION. This may prevent a few 'RTFM' e-mails.

The patch I posted updates the README in tools/env/ and I'll update the wiki as soon as the patch is accepted. I wonder though, if the env/tools/README shouldn't be move into the main README. It's rather hidden where it is right now.

Yeah, either there or in /doc. It's badly hidden now.

Quoted 5 lines

Viele Gr??e / Best regards

Markus Klotzb?cher

cheers,
B-)

#7 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

In reply to Markus Klotzbücher
Quoted 13 lines · Markus Klotzb?cher

Hi Ben,

Quoted 9 lines · Ben Warren
Quoted 8 lines · Markus Klotzb?cher

How about the following:

This patch updates the fw_printenv/fw_setenv userspace tool to include the correct MTD header in order to compile against current kernel headers. Backward compatibility is preserved by introducing an option MTD_VERSION which can be set to "old" for compilation using the old MTD headers. Along with this a number of warnings are fixed.

Quoted 5 lines
Quoted 3 lines

Sounds good to me. It'd be cooler if make could detect the presence/absence of <linux/mtd-user.h>, but I'm not enough of a build system whiz to know how to do that.

I'm afraid nor am I. Suggestions welcome.

I'm not sure it is a reasonable suggestion, but something like...

ifeq ($(strip $(wildcard /usr/include/mtd/mtd-user.h)),)
MTD_VERSION=old
else
MTD_VERSION=new
endif

This is using a hardcoded path for <linux/mtd-user.h> (odd, my system has it in a different place than Markus referenced - probably my ignorance or configuration). This may be acceptable, or there may be a better way to do this. (Use VPATH? Things get complicated doing that.)

[snip]

Quoted 3 lines

Viele Gr??e / Best regards

Markus Klotzb?cher

Best regards,
gvb

#8 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

Quoted 8 lines · In message <[email protected]> you wrote:

I'm not sure it is a reasonable suggestion, but something like...

ifeq ($(strip $(wildcard /usr/include/mtd/mtd-user.h)),)
MTD_VERSION=old
else
MTD_VERSION=new
endif

Doesn't work. Who says my target uses the same MTD version as my build host?

Best regards,

Wolfgang Denk

Signature · 7 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
... The things love can drive a man to -- the  ecstasies,  the  mise-
ries,  the broken rules, the desperate chances, the glorious failures
and the glorious victories.
	-- McCoy, "Requiem for Methuselah", stardate 5843.7
#9 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

In reply to Ben Warren
Quoted 4 lines · In message <[email protected]> you wrote:

Sounds good to me. It'd be cooler if make could detect the presence/absence of <linux/mtd-user.h>, but I'm not enough of a build system whiz to know how to do that.

Where should he detect this? On the build host? Who says the target uses the same kernel / MTD version? Who says you always want to build for the same kernel / MTD version?

I think auto-detection is basicly impossible (at least without making the build depending on the knowledge of a "corresponding" Linux
kernel tree, and I think Markus' new approach is more
straightforward.

Quoted 8 lines

1. Can you also please add the other part of my patch that creates/destroys the 'fw_setenv' symbolic link? It's a bit annoying that the documentation mentions the 'fw_setenv' utility, but it doesn't really exist without a bit of help.

2. Please include changes to the relevant documentation (README + wiki) so that people know to when and how to set MTD_VERSION. This may prevent a few 'RTFM' e-mails.

Agreed for README. The wiki cannot be "patched" like this. We can Markus only make promise that he will update the information there, too.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Doubt isn't the opposite of faith; it is an element of faith.
- Paul Tillich, German theologian and historian
#10 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

Quoted 7 lines · Wolfgang Denk
Quoted 4 lines · In message <[email protected]> you wrote:

Sounds good to me. It'd be cooler if make could detect the presence/absence of <linux/mtd-user.h>, but I'm not enough of a build system whiz to know how to do that.

Quoted 10 lines

Where should he detect this? On the build host? Who says the target uses the same kernel / MTD version? Who says you always want to build for the same kernel / MTD version?

I think auto-detection is basicly impossible (at least without making the build depending on the knowledge of a "corresponding" Linux
kernel tree, and I think Markus' new approach is more
straightforward.

Right. I said it would be cool, not necessarily possible. This brings up a problem with this utility - the version of headers that it's built against is at the mercy of however the cross compiler's set up, not
necessarily against the one the user really wants. Maybe we should
force the user to define a path, and #error if it isn't defined. This path could be added to C_INCLUDE_PATH and then we could do all sorts of Makefile trickery. Just a thought...

Quoted 5 lines
Quoted 5 lines

1. Can you also please add the other part of my patch that creates/destroys the 'fw_setenv' symbolic link? It's a bit annoying that the documentation mentions the 'fw_setenv' utility, but it doesn't really exist without a bit of help.

Quoted 11 lines
Quoted 4 lines

2. Please include changes to the relevant documentation (README + wiki) so that people know to when and how to set MTD_VERSION. This may prevent a few 'RTFM' e-mails.

Agreed for README. The wiki cannot be "patched" like this. We can Markus only make promise that he will update the information there, too.

Sounds good. Promises are fun.

regards,
Ben

#11 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

In reply to Markus Klotzbücher

Dear Markus,

Quoted 7 lines · in message <[email protected]> you wrote:
Quoted 4 lines

I suggest we optionally provide a build option to allow to use the old include files for systems that still need it (as a separate make target, for example).

How about the following:

Quoted 7 lines

This patch updates the fw_printenv/fw_setenv userspace tool to include the correct MTD header in order to compile against current kernel headers. Backward compatibility is preserved by introducing an option MTD_VERSION which can be set to "old" for compilation using the old MTD headers. Along with this a number of warnings are fixed.

Applied. Thanks again.

Would you please also update the wiki docs? TIA...

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Who is the oldest inhabitant of this village?"
"We haven't got one; we had one, but he died three weeks ago."
#12 lore raw

PATCH 1/1 : tools: fix fw_printenv tool to compile again

Quoted 8 lines · Wolfgang Denk
Quoted 6 lines · in message <[email protected]> you wrote:

This patch updates the fw_printenv/fw_setenv userspace tool to include the correct MTD header in order to compile against current kernel headers. Backward compatibility is preserved by introducing an option MTD_VERSION which can be set to "old" for compilation using the old MTD headers. Along with this a number of warnings are fixed.

Quoted 5 lines
Quoted 1 line

Applied. Thanks again.

Would you please also update the wiki docs? TIA...

Sure, I updated the following site in the wiki:

http://www.denx.de/wiki/DULG/HowCanIAccessUBootEnvironmentVariablesInLinux

Is this the only page or did I miss something?

Best regards

Markus Klotzb?cher

--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de