From: Olliver Schinagl <o.schinagl@ultimaker.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 5/5] tools: Add tool to add crc8 to a mac address
Date: Tue, 26 Jan 2016 17:36:42 +0100 [thread overview]
Message-ID: <56A7A09A.1080905@ultimaker.com> (raw)
In-Reply-To: <CANr=Z=aKyNFFeSqsgPf4zfre7czWzLWefO6-NUjwZHsfa+CKPA@mail.gmail.com>
Hey Joe,
On 26-01-16 17:31, Joe Hershberger wrote:
> On Tue, Jan 26, 2016 at 10:27 AM, Olliver Schinagl
> <o.schinagl@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.schinagl@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.schinagl@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.
Why not? It just reads a mac address and generates a crc8-appended mac
address (or just the crc8) everybody that uses a mac address to be
stored somewhere (even if the env is pre-generated) could use this. I
don't think it is limited to our platform since it does something very
generic.
>
>>>> @@ -0,0 +1,51 @@
>>>> +/*
>>>> + * (C) Copyright 2016
>>>> + * Olliver Schinagl <o.schinagl@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 at 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.
>>
--
Met vriendelijke groeten, Kind regards, ??????
Olliver Schinagl
Software Engineer
Research & Development
Ultimaker B.V.
next prev parent reply other threads:[~2016-01-26 16:36 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-14 12:41 [U-Boot] [PATCH v2 0/5] Retrieve MAC address from EEPROM Olliver Schinagl
2015-12-14 12:41 ` [U-Boot] [PATCH v2 1/5] net: Add ability to set MAC address via EEPROM to Kconfig Olliver Schinagl
2016-01-25 22:59 ` Joe Hershberger
2015-12-14 12:41 ` [U-Boot] [PATCH v2 2/5] sunxi: net: Allow the sunxi to set the MAC from an EEPROM Olliver Schinagl
2016-01-26 0:32 ` Joe Hershberger
2016-01-26 16:10 ` Olliver Schinagl
2016-01-26 16:23 ` Joe Hershberger
2016-01-26 16:35 ` Olliver Schinagl
2016-01-26 17:57 ` Joe Hershberger
2015-12-14 12:41 ` [U-Boot] [PATCH v2 3/5] sunxi: net: Enable eeprom on OLinuXino Lime2 boards Olliver Schinagl
2016-01-26 0:34 ` Joe Hershberger
2016-01-26 16:11 ` Olliver Schinagl
2015-12-14 12:41 ` [U-Boot] [PATCH v2 4/5] tools: Allow crc8 to be used Olliver Schinagl
2016-01-26 0:36 ` Joe Hershberger
2015-12-14 12:41 ` [U-Boot] [PATCH v2 5/5] tools: Add tool to add crc8 to a mac address Olliver Schinagl
2016-01-26 0:45 ` Joe Hershberger
2016-01-26 13:15 ` Albert ARIBAUD
2016-01-26 14:56 ` Joe Hershberger
2016-01-26 16:31 ` Olliver Schinagl
2016-01-26 18:01 ` Joe Hershberger
2016-01-26 16:27 ` Olliver Schinagl
2016-01-26 16:31 ` Joe Hershberger
2016-01-26 16:36 ` Olliver Schinagl [this message]
2016-01-26 17:58 ` Joe Hershberger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56A7A09A.1080905@ultimaker.com \
--to=o.schinagl@ultimaker.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox