[U-Boot] [PATCH v3] lib: Add hexdump

Simon Glass sjg at chromium.org
Fri Jun 8 21:59:36 UTC 2018


Hi,

On 5 June 2018 at 06:17, Alexey Brodkin <Alexey.Brodkin at synopsys.com> wrote:
> Often during debugging session it's very interesting to see
> what data we were dealing with. For example what we write or read
> to/from memory or peripherals.
>
> This change introduces functions that allow to dump binary
> data with one simple function invocation like:
> ------------------->8----------------
> print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, buf, len);
> ------------------->8----------------
>
> which gives us the following:
> ------------------->8----------------
> 00000000: f2 b7 c9 88 62 61 75 64 72 61 74 65 3d 31 31 35  ....baudrate=115
> 00000010: 32 30 30 00 62 6f 6f 74 61 72 67 73 3d 63 6f 6e  200.bootargs=con
> 00000020: 73 6f 6c 65 3d 74 74 79 53 33 2c 31 31 35 32 30  sole=ttyS3,11520
> 00000030: 30 6e 38 00 62 6f 6f 74 64 65 6c 61 79 3d 33 00  0n8.bootdelay=3.
> 00000040: 62 6f 6f 74 66 69 6c 65 3d 75 49 6d 61 67 65 00  bootfile=uImage.
> 00000050: 66 64 74 63 6f 6e 74 72 6f 6c 61 64 64 72 3d 39  fdtcontroladdr=9
> 00000060: 66 66 62 31 62 61 30 00 6c 6f 61 64 61 64 64 72  ffb1ba0.loadaddr
> 00000070: 3d 30 78 38 32 30 30 30 30 30 30 00 73 74 64 65  =0x82000000.stde
> 00000080: 72 72 3d 73 65 72 69 61 6c 30 40 65 30 30 32 32  rr=serial0 at e0022
> 00000090: 30 30 30 00 73 74 64 69 6e 3d 73 65 72 69 61 6c  000.stdin=serial
> 000000a0: 30 40 65 30 30 32 32 30 30 30 00 73 74 64 6f 75  0 at e0022000.stdou
> 000000b0: 74 3d 73 65 72 69 61 6c 30 40 65 30 30 32 32 30  t=serial0 at e00220
> 000000c0: 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00..............
> ...
> ------------------->8----------------
>
> Source of hexdump.c was copied from Linux kernel v4.7-rc2.
>
> Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com>
> Cc: Anatolij Gustschin <agust at denx.de>
> Cc: Mario Six <mario.six at gdsys.cc>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: Stefan Roese <sr at denx.de>
>
> ---
>
> Build-tested by Travis CI, see https://travis-ci.org/abrodkin/u-boot.
>
> Changes v2 -> v3:
>  * Remove hexdump.h from common.h
>  * Drop verbose level argument from print_hex_dump()
>  * Update users of print_hex_dump() accordingly
>
> Changes v1 -> v2:
>  * Move hexdump definitions to a separate header.
>  * Move helper funcions to the header so they might be used even if
>    CONFIG_HEXDUMP is not enabled and if not used they will not occupy
>    extra bytes of memory being "static inline" ones.
>  * While at it replace its own hex_asc[], hex_asc_{lo|hi}() and
>    pack_hex_byte() in lib/vsprintf.c with generic ones from hexdump.
>  * In print_hex_dump() revert back first parametr for debug level,
>    otherwise existing users of the function will be broken.
>
>  drivers/mtd/ubi/attach.c            |   2 +-
>  drivers/mtd/ubi/debug.c             |   7 +-
>  drivers/mtd/ubi/debug.h             |   6 +-
>  drivers/mtd/ubi/io.c                |   7 +-
>  drivers/usb/gadget/f_mass_storage.c |   1 +
>  drivers/usb/gadget/storage_common.c |   4 +-
>  examples/api/Makefile               |   1 +
>  fs/ubifs/debug.c                    |   6 +-
>  fs/ubifs/scan.c                     |   3 +-
>  include/hexdump.h                   |  91 +++++++++++
>  include/linux/compat.h              |   1 -
>  lib/Kconfig                         |   5 +
>  lib/Makefile                        |   1 +
>  lib/hexdump.c                       | 245 ++++++++++++++++++++++++++++
>  lib/vsprintf.c                      |  18 +-
>  15 files changed, 369 insertions(+), 29 deletions(-)
>  create mode 100644 include/hexdump.h
>  create mode 100644 lib/hexdump.c

This code looks good but please add a test in test/

You could use print_ut.c as an example

Regards,
Simon


More information about the U-Boot mailing list