mbox series

[0/1] gpio: add simple logic analyzer using polling

Message ID 20210901194549.3999-1-wsa+renesas@sang-engineering.com
Headers show
Series gpio: add simple logic analyzer using polling | expand

Message

Wolfram Sang Sept. 1, 2021, 7:45 p.m. UTC
The bravery continues with the next update and first non-RFC version of
the in-kernel logic analyzer based on GPIO polling with local irqs
disabled. It has been been tested locally and remotely. It provided
satisfactory results. Besides the driver, there is also a script which
isolates a CPU to achieve the best possible result. I am aware of the
latency limitations. However, the intention is for debugging only, not
mass production. Especially for remote debugging and to get a first
impression, this has already been useful. Documentation is within the
patch, to get a better idea what this is all about.

Changes since RFC v2:

* took most of the suggestions from Andy's review. For the things I did
  not take, I added comments when appropriate.
* A *lot* of cleanups to the shell script guided by checkers, mainly
  'shellcheck'. This is mainly to ensure that the scripts works on most
  minimal shells. Tested are 'busybox ash', 'dash', and 'bash'.
* a *lot* more error checking and reporting in the script
* I found fatal_signal_pending(), so the sampling process is now
  finally killable \o/
* script sets CPUfreq now to "performance" for the isolated CPU
* the acquisition_delay is now measured before each sampling and not
  only during probe because the probing core is likely not the one
  used for sampling later

Thanks to Andy for many suggestions.

A branch with preparation for the Renesas Salvator-XS (R-Car H3 ES2.0
and M3-N tested) and Falcon boards (R-Car V3U) is here:

git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/gpio-logic-analyzer-v3

The documentation is also available online on the elinux wiki:
https://elinux.org/Kernel_GPIO_Logic_analyzer

Looking forward to comments and especially further tests with different
use cases than mine.

Thanks and all the best,

   Wolfram


Wolfram Sang (1):
  gpio: add sloppy logic analyzer using polling

 .../dev-tools/gpio-sloppy-logic-analyzer.rst  |  71 ++++
 Documentation/dev-tools/index.rst             |   1 +
 drivers/gpio/Kconfig                          |  17 +
 drivers/gpio/Makefile                         |   1 +
 drivers/gpio/gpio-sloppy-logic-analyzer.c     | 340 ++++++++++++++++++
 tools/gpio/gpio-sloppy-logic-analyzer         | 214 +++++++++++
 6 files changed, 644 insertions(+)
 create mode 100644 Documentation/dev-tools/gpio-sloppy-logic-analyzer.rst
 create mode 100644 drivers/gpio/gpio-sloppy-logic-analyzer.c
 create mode 100755 tools/gpio/gpio-sloppy-logic-analyzer