We invite you to participate in the next Linux workshop organized by SoMLabs and Elhurt!
Participants will have the opportunity to learn in practice, among other things, the basics of creating drivers for new devices in Linux based on practical examples. The examples will be run on the StarCB-6ULL/StarSOM-6ULL hardware platform developed and produced by SoMLabs.
Purpose of the training
During the workshop, participants will have the opportunity to write driver code for devices connected to the I2C bus.
The individual exercises have been prepared to be successive stages of the project developing support for the devices with additional functions.
Each of the drivers will be compiled and run on the StarSOM-6ULL platform as a kernel module, allowing dynamic modification of the support for each device.
You will be able to perform the exercises by modifying the sources yourself or by using ready-made files containing the necessary changes.
The workshop is designed for engineers who want to learn:
the basics of writing drivers in Linux,
methods of accessing the device from the user context,
methods of communicating with a device from a user application,
device tree modification options for new devices.
The examples prepared for the workshop were prepared for designers and developers who want to write their own drivers for devices running on Linux and modify the system to create their own hardware and software solutions.
“Participation in the workshop will give engineers a chance to work with hardware. It will be possible to perform many activities on your own, to try out specific solutions in practice. The workshop is also a good opportunity to talk to people who know the Yocto system very well. It will certainly be very fruitful to meet with specialists, but also true enthusiasts.”
– Andrzej Moczulski, Senior Application Engineer at Elhurt
Equipment used during the training
The workshop will be conducted on SoMLabs’ hardware platform based on the NXP i.MX6ULL microprocessor. It is a hardware set consisting of:
StarSOM-6ULL – SoM module with i.MX6ULL microprocessor, eMMC Flash memory, DDR3L RAM, Ethernet cable interface and (optionally) integrated WiFI/BT-BLE radio module,
StarCB-6ULL-STD – a carrier board designed to evaluate the basic capabilities of the SoM module and the microprocessor used in it.
The role of peripherals will be played by KAmod modules with I2C interfaces, equipped with: temperature sensor and LED driver. They will be attached to the StarCB-6ULL-STD via wires.
The equipment necessary for the exercises will be provided by the organizers to the participants.
Locations:
Gdańsk – 3.10.2022
Warszawa – 4.10.2022
Poznań – 5.10.2022
Wrocław – 6.10.2022
Kraków – 7.10.2022
In the event of a large number of applications, the organizers reserve the right to select from among the applications the persons invited to the workshop. In previous years, the lists of participants filled up very fast and, unfortunately, not all interested people were able to meet with us.
The organizer will inform the candidates about the results of the recruitment by e-mail. Additional information and materials will be sent after the recruitment is completed.
Those who do not qualify in the first call for training will be placed on a reserve list.
The workshop will be held from 9 a.m. to 3 p.m. (with coffee breaks and lunch).
In case pandemic restrictions are announced, the workshop may be canceled or the number of participants may be reduced.
Agenda
Introduction
Yocto basics
– system generation for SoMLabs devices
– discussion of changes for the workshop
– StarSOM module programming
Device tree modifications
– adding a device to the device tree
– compiling device tree files on the StarSOM-6ULL platform
Device drivers
– compiling and adding kernel modules
– creating a new device class
– adding a new device
– writing and reading a driver file
– implementing ioctl calls
– accessing a device from a user application
– creating sysfs attributes
– GPIO interrupt handling
– notification of applications using poll mechanism
2 Workshops
Lab #0
– Compiling kernel modules in Linux.
– Loading and removing kernel modules.
– Installing kernel modules.
Lab #1
– Creating a new device class with default sysfs attributes.
Lab #2
– Implementation of the KAmodPCA9533 device driver.
– Decompiling the dtb file and adding a new device in the device tree.
Lab #3
– Implementation of device file write and read operations.
Lab #4
– Implementation of an IOCTL call for a new device.
– Using IOCTL calls in a user application.
Lab #5
– Implementation of the KAmodLM75A device driver.
– Implementing sysfs attributes for a device.
– Adding a new device in the device tree.
Lab #6
– GPIO interrupt implementation in the device driver.
– Implementation of sysfs attribute for POLL call.
– Configuring the GPIO interrupt in the device tree.
– Using POLL calls in a user application.