
Hi,
On 5 June 2018 at 06:17, Alexey Brodkin Alexey.Brodkin@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@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@e0022000.stdou 000000b0: 74 3d 73 65 72 69 61 6c 30 40 65 30 30 32 32 30 t=serial0@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@synopsys.com Cc: Anatolij Gustschin agust@denx.de Cc: Mario Six mario.six@gdsys.cc Cc: Simon Glass sjg@chromium.org Cc: Tom Rini trini@konsulko.com Cc: Stefan Roese sr@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