mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-23 02:05:57 +01:00
LED failed attempt, GPIO working
This commit is contained in:
@@ -47,10 +47,12 @@ If you are feeling fancy, you can also insert modules with:
|
||||
|
||||
modprobe hello
|
||||
|
||||
and if you are feeling raw, you can use:
|
||||
If you are feeling raw, you can use:
|
||||
|
||||
/myinsmod.out /hello.ko
|
||||
|
||||
Kernel modules built in-tree with `CONFIG_SOME_MOD=m`, are available via `modprobe`.
|
||||
|
||||
We use `printk` a lot, and it shows on the QEMU terminal by default. If that annoys you (e.g. you want to see stdout separately), do:
|
||||
|
||||
dmesg -n 1
|
||||
|
||||
@@ -57,3 +57,38 @@ CONFIG_TRACER_SNAPSHOT=y
|
||||
# https://stackoverflow.com/questions/20069620/print-kernels-page-table-entries
|
||||
# cat /sys/kernel/debug/kernel_page_tables
|
||||
CONFIG_X86_PTDUMP=y
|
||||
|
||||
# LEDs.
|
||||
#
|
||||
# modprobe led-class
|
||||
# modprobe leds-versatile
|
||||
# ls /sys/class/leds
|
||||
#
|
||||
# TODO: the LEDs don't appear there. There are some entires under:
|
||||
#
|
||||
# /sys/devices/platform/10000000.core-module/10000000.core-module:led@08.0/
|
||||
#
|
||||
# but they don't have brightness file.
|
||||
#
|
||||
# https://raspberrypi.stackexchange.com/questions/697/how-do-i-control-the-system-leds-using-my-software
|
||||
#
|
||||
# Relevant QEMU files:
|
||||
#
|
||||
# - hw/arm/versatilepb.c
|
||||
# - hw/misc/arm_sysctl.c
|
||||
#
|
||||
# Relevant kernel files:
|
||||
#
|
||||
# - arch/arm/boot/dts/versatile-pb.dts
|
||||
# - drivers/leds/led-class.c
|
||||
# - drivers/leds/leds-versatile.c
|
||||
#
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_VERSATILE=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
|
||||
# GPIO.
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_PL061=y
|
||||
|
||||
@@ -22,7 +22,9 @@
|
||||
1. [work_from_work](work_from_work.c)
|
||||
1. [irq](irq.c)
|
||||
1. Module dependencies
|
||||
1. [dep.c](dep.c)
|
||||
1. [dep2.c](dep2.c)
|
||||
1. [dep](dep.c)
|
||||
1. [dep2](dep2.c)
|
||||
1. [character_device](character_device.c)
|
||||
1. Hardware device drivers
|
||||
1. [pci](pci.c)
|
||||
1. [user](user/)
|
||||
|
||||
@@ -6,3 +6,7 @@ We use it to for things like:
|
||||
|
||||
- customized configuration files
|
||||
- userland module test scripts
|
||||
|
||||
Most tests correspond clearly to a given kernel module, but the following ones don't, e.g. they correspond to mainline tree features:
|
||||
|
||||
- [gpio](gpio.sh)
|
||||
|
||||
27
rootfs_overlay/gpio.sh
Executable file
27
rootfs_overlay/gpio.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
cd /sys/class/gpio
|
||||
echo 480 > export
|
||||
echo 481 > export
|
||||
echo 482 > export
|
||||
echo 488 > export
|
||||
echo 496 > export
|
||||
echo out > gpio480/direction
|
||||
echo out > gpio481/direction
|
||||
echo out > gpio482/direction
|
||||
echo out > gpio488/direction
|
||||
echo out > gpio496/direction
|
||||
v=1
|
||||
while true; do
|
||||
echo $v > gpio480/value
|
||||
echo $v > gpio481/value
|
||||
echo $v > gpio482/value
|
||||
echo $v > gpio488/value
|
||||
echo $v > gpio496/value
|
||||
if [ $v -eq 1 ]; then
|
||||
v=0
|
||||
else
|
||||
v=1
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
3
run
3
run
@@ -40,7 +40,8 @@ env \
|
||||
make \
|
||||
O="$outdir" \
|
||||
BR2_JLEVEL="$(($(nproc) - 2))" \
|
||||
HOST_QEMU_OPTS="--enable-debug --enable-sdl --with-sdlabi=2.0" \
|
||||
HOST_QEMU_OPTS="--enable-debug --enable-sdl --extra-cflags='-DDEBUG_PL061=1' --with-sdlabi=2.0" \
|
||||
host-qemu-reconfigure \
|
||||
host-qemu-rebuild \
|
||||
kernel_module-rebuild \
|
||||
all \
|
||||
|
||||
Reference in New Issue
Block a user