Future Directions

Basic Fixes

endless Accounts

  • I2C: currently i2c is only forced into kernel on pi. bring it to other kernels to -> poky/meta/classes-recipe/linux-kernel-base.bbclass maybe?

  • I2C: likewise, KERNEL_MODULE_AUTOLOAD is only done in meta-endless/recipes-tweaks/pi-kernel/linux-raspberrypi%.bbappend. bring it to all kernels (and make sure we compile i2c-dev on all kernels)

    # udevadm info /dev/i2c-*
    ...
    P: /devices/pci0000:00/0000:00:02.0/i2c-10/i2c-dev/i2c-10
    M: i2c-10
    R: 10
    U: i2c-dev
    D: c 89:10
    N: i2c-10
    L: 0
    E: DEVPATH=/devices/pci0000:00/0000:00:02.0/i2c-10/i2c-dev/i2c-10
    E: DEVNAME=/dev/i2c-10
    E: MAJOR=89
    E: MINOR=10
    E: SUBSYSTEM=i2c-dev
    ...
    

    meta-endless/recipes-core/admin/endless-accounts/files/endless-i2c.rules

    KERNEL=="i2c-*", GROUP="i2c", MODE="0660"
    
  • udev rules

    • put in /usr/lib/udev/rules.d (preinstalled, not configured on-site)

    • assign /sys/class/gpio (and /dev/gpiochipXXX?) to group gpio

CI Tests: TFTP/NFS Boot

  • Provide recipe(s) and a containing image for CI testing

  • Kernel and root filesystem on endless server (which user?)

  • Automatically boot SUT

Recipe: endless Demo Application

You know, that Python thing: The Raspberry Pi Application

  • meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.7.1.bb: inherit pypi setuptools

  • Application (base recipe), including systemd unit file

  • Config file recipe(s). Start with one “demo” config which is packaged in a “demo” image

  • See Packaging and installing own Python program for/on Yocto

Recipe: Crazy Car (Future)

Pi: Maximize Image At First Boot

Add systemd unit that enlarges rootfs to take available SD card space (at first boot only, ideally)

$ parted /dev/mmcblk0 'resizepart 2 100%'
$ resize2fs /dev/mmcblk0p2

Image Documentation

  • i2c and spi configured in /boot/config.txt

  • sysfs GPIO number space

    # echo 25 > /sys/class/gpio/export
    [...ts...] export_store: invalid GPIO 25
    write error: Invalid argument
    
    # cat /sysclass/gpio/gpiochip512/base
    512
    
    # echo $((512+25)) > /sys/class/gpio/export