[U-Boot] setting u-boot params based on serial number

Wolfgang Denk wd at denx.de
Fri Oct 23 20:03:49 CEST 2009


Dear "David Collier",

In message <memo.20091023175206.2092W at postmaster+dexdyne.com.cix.co.uk> you wrote:
> 
> I have a batch of boards in production.
> 
> say serial numbers 1 to 50
> 
> I want to set the 2 mac address, and the ip address so that the last few
> digits match the serial number.
> 
> can I do this easily with some sort of u-boot script? Or can I run an app
> I write myself in C or whatever, and get it to do setenv commands?

You can do this using the "setexpr" command, with the restriction that
you cannot easily get leading zeros in the strings to fill tem up for
the requested length, but for the usage you mention it does not
matter. Also, you cannot easily convert to hex number, if that would
be needed.

Example:

	=> print serial#
	serial#=12851192

Extract last 2 digits into vatiable "tmp" (note: serial# must consist
of digits only):

	=> setex tmp ${serial#} % 100
	=> print tmp 
	tmp=92

Set MAC and IP address as requested:

	=> setenv ip_base 192.168.3.
	=> setenv mac_base ce:94:6b:3a:db:

	=> setenv ipaddr ${ip_base}${tmp}
	=> print ipaddr
	ipxxx=192.168.3.92
	=> setenv ethaddr ${mac_base}${tmp}
	=> print ethaddr
	ethaddr=ce:94:6b:3a:db:92

> AVR32, if it matters

It does not matter. This works on all boards / architectures. You just
have to enable CONFIG_CMD_SETEXPR in your board configuration.


Best regards,

Wolfgang Denk

-- 
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 good Christian should beware of mathematicians and all those who
make empty prophecies. The danger already exists that  mathematicians
have  made a covenant with the devil to darken the spirit and confine
man in the bonds of Hell."                          - Saint Augustine


More information about the U-Boot mailing list