Skip to contentSkip to conversation

U-Boot version string in kernel/userspace

U-Boot-Users Gregoire Banderet 6 participants 7 messages Jan 21, 2008 – Jan 22, 2008

lore
Share & tools
lore
#0 lore raw

Hi,

Waht's the best way to get the U-Boot version string (the one returned by U-Boot cmd "version") from userspace?
Arg passed to the kernel?
U-Boot env variables and use fw_getenv?
...?

-- Greg

#1 lore raw
Quoted 6 lines · Gregoire Banderet

Hi,

Waht's the best way to get the U-Boot version string (the one returned by U-Boot cmd "version") from userspace?
Arg passed to the kernel?
U-Boot env variables and use fw_getenv?

U-Boot disappears when the kernel loads, so the only cross-platform option is to pass a command-line parameter to the kernel. Such a change would probably not be accepted into the mainline, however.

Signature · 2 lines
Timur Tabi
Linux kernel developer at Freescale
#3 lore raw
In reply to Gregoire Banderet

Hi Gregoire,

Quoted 8 lines · Gregoire Banderet

Hi,

Waht's the best way to get the U-Boot version string (the one returned by U-Boot cmd "version") from userspace?
Arg passed to the kernel?
U-Boot env variables and use fw_getenv?
...?

Yeah, I'd get it via the fw_getenv utility. There's an environment variable called 'ver', that should be accessible. I say 'should', because I've never looked at it before and don't currently have access to a Linux-booted board to verify. I have used fw_getenv/fw_setenv extensively to read and write other variables and have never had any problems.

regards,
Ben

#2 lore raw
In reply to Timur Tabi
Quoted 9 lines · In message <[email protected]> you wrote:
Quoted 5 lines

Waht's the best way to get the U-Boot version string (the one returned by U-Boot cmd "version") from userspace?
Arg passed to the kernel?
U-Boot env variables and use fw_getenv?

U-Boot disappears when the kernel loads, so the only cross-platform option is to pass a command-line parameter to the kernel. Such a change would probably not be accepted into the mainline, however.

First, reading the kernel command line can be done in user space - no need to change the kernel to do that.

Second, using the command line is not the only way to access envrionment data. Assuming the environment is stored in flash (or similar), you can of course read (and write) it from Linux, too.

Best regards,

Wolfgang Denk

Signature · 6 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
...when fits of creativity run strong, more than  one  programmer  or
writer  has  been  known to abandon the desktop for the more spacious
floor.                                             - Fred Brooks, Jr.
#4 lore raw
In reply to Gregoire Banderet

Hello!

Quoted 4 lines · Gregoire Banderet

Waht's the best way to get the U-Boot version string (the one returned by U-Boot cmd "version") from userspace?
Arg passed to the kernel?
U-Boot env variables and use fw_getenv?

fw_getenv works fine for userspace programs. But I find it quite usefull to forward U-Boot configuration parameters to Linux kernel space via ATAGs, especially regarding different hardware versions and vice versa. Accessing the data which has been provided by ATAGs can be very fast because the ATAG data can be copied to global structures which can be accessed by the kernel and also be kernel modules. Typical applications are information about slightly different hardware versions, like GPIO mapping or polarity.

With best regards
Andreas

Signature · 5 lines
Dipl.-Phys. Andreas Schweigstill
Schweigstill IT | Embedded Systems
Schauenburgerstra?e 116, D-24118 Kiel, Germany
Phone: (+49) 431 5606-435, Fax: (+49) 431 5606-436
Mobile: (+49) 171 6921973, Web: http://www.schweigstill.de/
#5 lore raw
Quoted 9 lines · In message <[email protected]> you wrote:

fw_getenv works fine for userspace programs. But I find it quite usefull to forward U-Boot configuration parameters to Linux kernel space via ATAGs, especially regarding different hardware versions and vice versa. Accessing the data which has been provided by ATAGs can be very fast because the ATAG data can be copied to global structures which can be accessed by the kernel and also be kernel modules. Typical applications are information about slightly different hardware versions, like GPIO mapping or polarity.

I agree that this may make sense on ARM systems - to me it would also make sense to pass the MAC address as an ATAG. The problem is that you will probably run into problems if youy try pushing such code into the mainline kernel. RMK will likely block it.

Best regards,

Wolfgang Denk

Signature · 6 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
"It ain't so much the things we don't know that get  us  in  trouble.
It's  the  things  we know that ain't so." - Artemus Ward aka Charles
Farrar Brown
#6 lore raw
Quoted 4 lines · Wolfgang Denk

I agree that this may make sense on ARM systems - to me it would also make sense to pass the MAC address as an ATAG. The problem is that you will probably run into problems if youy try pushing such code into the mainline kernel. RMK will likely block it.

And for good reasons. He has explained it many times on alkml.

Robert

Signature · 5 lines
 Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry
   Handelsregister:  Amtsgericht Hildesheim, HRA 2686
     Hannoversche Str. 2, 31134 Hildesheim, Germany
   Phone: +49-5121-206917-0 |  Fax: +49-5121-206917-9