On Tue, Jan 26, 2016 at 10:27 AM, Olliver Schinagl <o.schin...@ultimaker.com> wrote: > Hey Joe, > > > On 26-01-16 01:45, Joe Hershberger wrote: >> >> On Mon, Dec 14, 2015 at 6:41 AM, Olliver Schinagl >> <o.schin...@ultimaker.com> wrote: >>> >>> This patch adds a little tool that takes a generic MAC address and >>> generates a CRC byte for it. The output is the full MAC address without >>> any separators, ready written into an EEPROM. >>> >>> Signed-off-by: Olliver Schinagl <o.schin...@ultimaker.com> >>> --- >>> tools/Makefile | 4 ++++ >>> tools/gen_mac_addr.c | 51 >>> +++++++++++++++++++++++++++++++++++++++++++++++++++ >>> 2 files changed, 55 insertions(+) >>> create mode 100644 tools/gen_mac_addr.c >>> >>> diff --git a/tools/Makefile b/tools/Makefile >>> index 4a50744..6191c26 100644 >>> --- a/tools/Makefile >>> +++ b/tools/Makefile >>> @@ -43,6 +43,10 @@ envcrc-objs := envcrc.o lib/crc32.o >>> common/env_embedded.o lib/sha1.o >>> hostprogs-$(CONFIG_CMD_NET) += gen_eth_addr >>> HOSTCFLAGS_gen_eth_addr.o := -pedantic >>> >>> +hostprogs-$(CONFIG_CMD_NET) += gen_mac_addr >>> +gen_mac_addr-objs := gen_mac_addr.o lib/crc8.o >>> +HOSTCFLAGS_gen_mac_addr.o := -pedantic >>> + >>> hostprogs-$(CONFIG_CMD_LOADS) += img2srec >>> HOSTCFLAGS_img2srec.o := -pedantic >>> >>> diff --git a/tools/gen_mac_addr.c b/tools/gen_mac_addr.c >>> new file mode 100644 >>> index 0000000..bd8688f >>> --- /dev/null >>> +++ b/tools/gen_mac_addr.c >> >> This is not "generating a mac address", right? Its point is to create >> a CRC for the user-supplied MAC address. >> >> Perhaps a better name would be "gen_ethaddr_rom_crc". > > Yes, it takes a mac address as input and generates a macaddress + crc as > output. > > e.g. 11:22:33:44:55:66 -> 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0xcc > > But maybe it should get some flags to output either both (as described here) > or just the crc based on the input, and then a few flags to either output it > in hex format or as an int?
What ever features you think will be useful for the users of this dev board I guess. I'm not sure if this is a platform (the included eeprom) that would carry over into other products. >> >>> @@ -0,0 +1,51 @@ >>> +/* >>> + * (C) Copyright 2016 >>> + * Olliver Schinagl <o.schin...@ultimaker.com> >>> + * >>> + * SPDX-License-Identifier: GPL-2.0+ >>> + */ >>> + >>> +#include <ctype.h> >>> +#include <stdint.h> >>> +#include <stdio.h> >>> +#include <stdlib.h> >>> +#include <string.h> >>> +#include <u-boot/crc.h> >>> + >>> + >>> +int main(int argc, char *argv[]) >>> +{ >>> + uint_fast8_t i; >>> + uint8_t mac_addr[7] = { 0x00 }; >>> + >>> + if (argc < 2) { >>> + puts("Please supply a MAC address."); >>> + return -1; >>> + } >>> + >>> + if (!((strlen(argv[1]) == 12) || (strlen(argv[1]) == 17))) { >>> + puts("Please supply a valid MAC address with optionaly\n" >>> + "dashes (-) or colons (:) as seperators."); >>> + return -1; >>> + } >> >> You could use the eth_validate_ethaddr_str() function here instead of this >> code. > > A right, well when I first wrote this, I think this didn't exist there yet. > I'll replace it and use it instead. >> >> >>> + >>> + i = 0; >>> + while (*argv[1] != '\0') { >>> + char nibble[2] = { 0x00, '\n' }; /* for strtol */ >>> + >>> + nibble[0] = *argv[1]++; >>> + if (isxdigit(nibble[0])) { >>> + if (isupper(nibble[0])) >>> + nibble[0] = tolower(nibble[0]); >>> + mac_addr[i >> 1] |= strtol(nibble, NULL, 16) << >>> ((i % 2) ? 0 : 4) & ((i % 2) ? 0x0f : 0xf0); >>> + i++; >>> + } >>> + } >> >> Instead of all this you could just compile in (maybe it already is?) >> the eth_parse_enetaddr() function that U-Boot uses for this very >> purpose. > > I'll see if I can have access to this function and then rewrite this to use > that. > >> >>> + mac_addr[6] = crc8(mac_addr, 6); >>> + >>> + for (i = 0; i < 7; i++) >>> + printf("%.2x", mac_addr[i]); >>> + putchar('\n'); >>> + >>> + return 0; >>> +} >>> -- >>> 2.6.2 >>> >>> _______________________________________________ >>> U-Boot mailing list >>> U-Boot@lists.denx.de >>> http://lists.denx.de/mailman/listinfo/u-boot > > > -- > Met vriendelijke groeten, Kind regards, 与亲切的问候 > > Olliver Schinagl > Software Engineer > Research & Development > Ultimaker B.V. > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot