gpio: move documentation to README, document that it broke on -M virt

This commit is contained in:
Ciro Santilli
2018-05-22 08:06:32 +01:00
parent 26ecfacd57
commit 207306fa31
7 changed files with 43 additions and 20 deletions

View File

@@ -3555,6 +3555,36 @@ Looks like a recompile is needed to modify the image...
* https://superuser.com/questions/736423/changing-kernel-bootsplash-image
* https://unix.stackexchange.com/questions/153975/how-to-change-boot-logo-in-linux-mint
=== GPIO
TODO: this was working before we moved `arm` from `-M versatilepb` to `-M virt` around af210a76711b7fa4554dcc2abd0ddacfc810dfd4. Either make it work on `-M virt` if that is possible, or document precisely how to make it work with `versatilepb`, or hopefully `vexpress` which is newer.
QEMU does not have a very nice mechanism to observe GPIO activity: https://raspberrypi.stackexchange.com/questions/56373/is-it-possible-to-get-the-state-of-the-leds-and-gpios-in-a-qemu-emulation-like-t/69267#69267
The best you can do is to hack our link:build[] script to add:
....
HOST_QEMU_OPTS='--extra-cflags=-DDEBUG_PL061=1'
....
where link:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0190b/index.html[PL061] is the dominating ARM Holdings hardware that handles GPIO.
Then compile with:
....
./build -aa -b br2_gpio -c kernel_config_fragment/gpio -l
....
then test it out with:
....
/gpio.sh
....
Buildroot's Linux tools package provides some GPIO CLI tools: `lsgpio`, `gpio-event-mon`, `gpio-hammer`, TODO document them here.
Those broke MIPS build in 2017-02: https://bugs.busybox.net/show_bug.cgi?id=10276 and so we force disable them in our MIPS build currently.
=== Linux kernel hardening
Make it harder to get hacked and easier to notice that you were, at the cost of some (small?) runtime overhead.

6
br2
View File

@@ -62,12 +62,6 @@ BR2_PTHREAD_DEBUG=y
# ftrace
BR2_PACKAGE_TRACE_CMD=y
# GPIO: lsgpio, gpio-event-mon, gpio-hammer
# Breask MIPS build in 2017-02:
# https://bugs.busybox.net/show_bug.cgi?id=10276
BR2_PACKAGE_LINUX_TOOLS=y
BR2_PACKAGE_LINUX_TOOLS_GPIO=y
# DTC
BR2_PACKAGE_DTC=y
BR2_PACKAGE_DTC_PROGRAMS=y

2
br2_gpio Normal file
View File

@@ -0,0 +1,2 @@
BR2_PACKAGE_LINUX_TOOLS=y
BR2_PACKAGE_LINUX_TOOLS_GPIO=y

8
build
View File

@@ -160,14 +160,12 @@ BR2_ROOTFS_POST_SCRIPT_ARGS=\"${post_script_args}\"
touch "${kernel_config_fragment_dir}/min"
fi
if [ "$arch" = 'mips64' ]; then
# Workaround for:
# http://lists.busybox.net/pipermail/buildroot/2017-August/201053.html
# Workaround for: https://bugs.busybox.net/show_bug.cgi?id=10276
sed -Ei 's/^BR2_PACKAGE_LINUX_TOOLS_GPIO/BR2_PACKAGE_LINUX_TOOLS_GPIO=n/' "$config_file"
fi
make O="$buildroot_out_dir" olddefconfig
if [ "$arch" = 'mips64' ]; then
# Workaround for:
# http://lists.busybox.net/pipermail/buildroot/2017-August/201053.html
# Workaround for: https://bugs.busybox.net/show_bug.cgi?id=10276
sed -Ei 's/^BR2_PACKAGE_LINUX_TOOLS_GPIO/BR2_PACKAGE_LINUX_TOOLS_GPIO=n/' "$config_file"
fi
make O="$buildroot_out_dir" olddefconfig
@@ -192,7 +190,7 @@ env \\
-u LD_LIBRARY_PATH \\
make \\
O='${buildroot_out_dir}' \\
HOST_QEMU_OPTS='--enable-debug --extra-cflags=-DDEBUG_PL061=1 --enable-trace-backends=simple ${qemu_sdl}' \\
HOST_QEMU_OPTS='--enable-debug --enable-trace-backends=simple ${qemu_sdl}' \\
V='${v}' \\
${extra_make_args} \
all \\

View File

@@ -79,6 +79,8 @@ CONFIG_VIRTIO_NET=y
# Misc
CONFIG_DUMMY_IRQ=m
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
# Requirement for LOGO.
CONFIG_FB=y
CONFIG_LOGO=y
## Networking
@@ -158,8 +160,9 @@ CONFIG_UIO_PCI_GENERIC=m
# case 0x08: /* LED */
# printf("LED val = %llx\n", (unsigned long long)val);
#
# to obeserve when the callback is made. But beware that one of the LEDs
# to observe when the callback is made. But beware that one of the LEDs
# has a heartbeat trigger by default (specified on dts), so it will produce a lot of output.
#
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLASS_FLASH=y
CONFIG_LEDS_SYSCON=y
@@ -173,12 +176,6 @@ CONFIG_LEDS_TRIGGER_ONESHOT=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_NEW_LEDS=y
# GPIO
CONFIG_ARM_AMBA=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_PL061=y
# Like CONFIG_X86_PTDUMP for ARM.
CONFIG_ARM64_PTDUMP=y

View File

@@ -0,0 +1,4 @@
CONFIG_ARM_AMBA=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_PL061=y

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# ARM only.
# https://raspberrypi.stackexchange.com/questions/56373/is-it-possible-to-get-the-state-of-the-leds-and-gpios-in-a-qemu-emulation-like-t/69267#69267
set -e
cd /sys/class/gpio
echo 480 > export