Files
linux-kernel-module-cheat/buildroot_config_fragment
2017-08-06 10:19:37 +01:00

104 lines
2.7 KiB
Plaintext

BR2_GLOBAL_PATCH_DIR="../global_patch_dir"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="../kernel_config_fragment"
BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="../busybox_config_fragment"
BR2_PACKAGE_KERNEL_MODULE=y
BR2_PACKAGE_OVERRIDE_FILE="../buildroot_override"
BR2_PACKAGE_STRACE=y
BR2_ROOTFS_OVERLAY="../rootfs_overlay"
BR2_ROOTFS_USERS_TABLES="../user_table"
## Host GDB
BR2_GDB_VERSION="7.11.1"
BR2_GDB_VERSION_7_10=n
BR2_GDB_VERSION_7_11=y
BR2_GDB_VERSION_7_12=n
BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_HOST_GDB_PYTHON=y
BR2_PACKAGE_HOST_GDB_SIM=y
BR2_PACKAGE_HOST_GDB_TUI=y
## QEMU.
BR2_PACKAGE_HOST_QEMU=y
# False because otherwise we need the host to be as recent as guest.
BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE=n
BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
BR2_PACKAGE_HOST_QEMU_VDE2=y
## Target GDB
# This is preparation for target GDB / gdbserver.
# But those options require a toolchain with threads like glibc,
# which I'm afraid will make compilation slower, so let's leave it
# at that for now since our focus is kernel debug.
#BR2_DEBUG_1=n
#BR2_DEBUG_2=n
#BR2_DEBUG_3=y
#BR2_ENABLE_DEBUG=y
#BR2_OPTIMIZE_0=y
# ftrace
BR2_PACKAGE_TRACE_CMD=y
# GPIO: lsgpio, gpio-event-mon, gpio-hammer
BR2_PACKAGE_LINUX_TOOLS=y
BR2_PACKAGE_LINUX_TOOLS_GPIO=y
# DTC
BR2_PACKAGE_DTC=y
BR2_PACKAGE_DTC_PROGRAMS=y
BR2_PACKAGE_HOST_DTC=y
# On ARM, with our lkmc_platform_device:
#
# devmem2 0x101e9000 w 0x12345678
#
# Then on QEMU monitor, notice that the registers don't actually change value:
#
# xp/4 0x101e9000
#
# Uses /dev/mem.
#
# Upstream: http://free-electrons.com/pub/mirror/devmem2.c
#
# See also:
#
# - https://superuser.com/questions/71389/what-is-dev-mem/1214662#1214662
# - https://unix.stackexchange.com/questions/4948/shell-command-to-read-device-registers
# - man mem
#
# TODO: why with mmap MAP_PRIVATE (used in my previous custom naive version),
# the entire register page is read?;
#
# TODO: have a look at: https://github.com/kaiwan/device-memory-readwrite
#
BR2_PACKAGE_DEVMEM2=y
# Provides setpci and a lspci more advanced than Busybox's
#
# setpci can read and write to PCI configuration registers.
#
# Read is possible from Linux with:
#
# hexdump /sys/bus/pci/devices/0000:00:05.0/config
#
# and /dev/mem can of course do both reads and writes,
# but setpci provies nice human readable register names, e.g.:
#
# setpci --dumpregs
#
# then and then get the values with either bus or device id:
#
# setpci -s 0000:00:05.0 BASE_ADDRESS_0
# setpci -d 1234:11e9 BASE_ADDRESS_0
#
# Note however that BASE_ADDRESS_0 also appears when you do:
#
# lspci -v
#
# Then you can try messing with that address with:
#
# devmem2 0xfeb52000 w 0x12345678
#
# which for our pci_min device fires interrupts.
#
BR2_PACKAGE_PCIUTILS=y