SlideShare a Scribd company logo
The Serial Device Bus
Johan Hovold
Hovold Consulting AB
johan@hovoldconsulting.com
johan@kernel.org
September 29, 2017
Introduction
• UARTs and RS-232 have been around since 1960s
• USB, PCIe, Firewire, Thunderbolt
• Common interface for Bluetooth, NFC, FM Radio and GPS
• TTY-layer abstracts serial connection
• Character-device interface (e.g. /dev/ttyS1)
• But no (good) way to model associated resources (PM)
• GPIOs and interrupts
• Regulators
• Clocks
• Audio interface
• Kernel support limited to line-discipline ”drivers”
• Requires user-space to configure and initialise
Outline
• TTY Layer
• Problems with line-discipline drivers
• Serdev implementation
• Serdev interfaces
• Serdev limitations
• Future work
TTY Layer
• Character device
• Line disciplines
• I/O processing
• Canonical mode
• Echos
• Errors
• Signals on input
• TTY-ports
• Input buffering
• Abstraction layer (e.g. open())
• TTY-drivers
User Space Drivers
• Description
• In user space
• Port
• Associated resources
• GPIOs and interrupts (accessible)
• Regulators
• Clocks
• Power management
• Firmware loading
Kernel Drivers
• Interaction with other subsystems
• Line-discipline drivers (e.g. bluetooth, input, nfc, ppp)
• Registers further devices (e.g. hci0)
• User-space daemons to initialise port and switch line-discipline
• ldattach
• inputattach
• hciattach
• Remains registered while port (and ldisc) is open
• Firmware infrastructure available
• But still issues with other resources and PM
HCI registration example
int ldisc = N_HCI;
int proto = HCI_UART_BCM;
fd = open("/dev/ttyO1", ...);
/* configure line settings */
ioctl(fd , TIOCSETD , &ldisc);
ioctl(fd , HCIUARTSETPROTO , proto);
Kernel Drivers
Kernel Drivers
Kernel Drivers
Problems with ldisc drivers
• Description (what, where, how?) and discovery
• Encoded in user space rather than firmware (DT, ACPI)
• User-space daemons
• Description and lookup of associated resources
• GPIOs and interrupts (e.g. reset, wakeup)
• Pinctrl
• Regulators
• Clocks
• Power management
• GPIOs, regulators, clocks...
• Open port may prevent underlying device from runtime suspending
• Firmware loading
• GPIO (e.g. reset) interaction
The Serial Device Bus
• The Serial Device Bus (serdev)
• By Rob Herring (Linaro)
• Bus for UART-attached devices
• Replace ti-st driver and UIM daemon
• Earlier efforts (power management)
• Merged in 4.11
• Enabled for serial core only in 4.12 (due to lifetime issues)
Serdev Overview
• New ”serial” bus type
• Serdev controllers
• Serdev clients (a.k.a. slaves or devices)
• Serdev TTY-port controller
• The only controller implementation
• Registered by TTY-driver when there are clients
• Controller replaces TTY character device
• Clients described by firmware (Device Tree)
Serdev Drivers
Serdev Drivers
Serdev Implementation
• TTY-port clients
• Default client (ldisc)
• Serdev TTY-port client (controller)
• Register controller and slaves when registering TTY-port
struct tty_port {
...
struct tty_port_client_operations *client_ops;
void *client_data;
};
struct tty_port_client_operations {
int (* receive_buf)(...);
void (* write_wakeup)(...);
};
Device Tree Bindings
• Child of serial-port node
• compatible property
• max-speed property (optional)
• Additional resources
&uart1 {
bluetooth {
compatible = "ti ,wl1835 -st";
enable -gpios = <&gpio1 7 0>;
clocks = <&clk32k_wl18xx >;
clock -names = "ext_clock";
};
};
Sysfs Example
/sys/bus/platform/devices/
|-- 44 e09000.serial
| |-- driver -> .../ omap_uart
| ‘-- tty
| ‘-- tty0
‘-- 48022000. serial
|-- driver -> .../ omap_uart
‘-- serial0
‘-- serial0 -0
|--bluetooth
| ‘-- hci0
|-- subsystem -> .../ bus/serial
‘-- driver -> .../hci -ti
Driver Interface
• Resembles line-discipline operations
• open and close
• terminal settings
• write
• modem control
• read (callback)
• write wakeup (callback)
• A few additional helpers
Driver Interface Functions
int serdev_device_open (...);
void serdev_device_close (...);
unsigned serdev_device_set_baudrate (...);
void serdev_device_set_flow_control (...);
int serdev_device_write_buf (...);
void serdev_device_wait_until_sent (...);
int serdev_device_get_tiocm (...);
int serdev_device_set_tiocm (...);
void serdev_device_write_flush (...);
int serdev_device_write_room (...);
• No write serialisation
• No operation ordering enforced
Driver Interface Callbacks
struct serdev_device_ops {
int (* receive_buf)(...);
void (* write_wakeup)(...);
};
Slave Driver Example
static struct serdev_device_driver slave_driver = {
.driver = {
.name = "serdev -slave",
. of_match_table = slave_of_match ,
},
.probe = slave_probe ,
.remove = slave_remove ,
};
module_serdev_device_driver (slave_driver);
Slave Driver Probe Example
static struct serdev_device_ops slave_ops {
.receive_buf = slave_receive_buf ,
.write_wakeup = slave_write_wake_up ,
};
static int slave_probe(struct serdev_device *serdev)
{
...
priv ->serdev = serdev;
serdev_device_set_drvdata (serdev , priv);
serdev_device_set_client_ops (serdev , &slave_ops);
serdev_device_open (serdev);
serdev_device_set_baudrate (serdev , 115200);
device_add (&priv ->dev);
return 0;
}
Merged Drivers
• Bluetooth
• hci serdev (library based on hci ldisc.c)
• hci bcm (4.14)
• hci ll (4.12)
• hci nokia (4.12)
• Ethernet
• qca uart (4.13)
A Word on hci bcm
• Precursor to serdev
• Hack for additional resources and PM
• Platform companion device
• Described by ACPI or platform code
• Child of serial device
• Manages GPIOs and clocks
• Registered in driver list at probe
• Looked up in list from HCI callbacks
• Matches on parent device
• Serdev ACPI support?
• Regression risk
Limitations
• Serial-core only
• No hotplug
• Device-tree only
• Single slave
• Raw mode only (error flags discarded)
Hotplug
• Implemented in TTY layer using file operations and hangups
• But serdev does not use file abstraction
• Requires changes to TTY layer
• Partial reason for initial revert
• PCI hotplug...
• Description of dynamic buses
• Only USB has rudimentary support for Device Tree
• Device tree overlays
• No in-kernel user-space interface for overlays
• Example
• Pulse Eight HDMI CEC USB device (ACM, serio driver)
Quirks
• Line-discipline allocated (and used)
• Controller always registered
• No character device (feature)
• No bus PM (power.ignore children ?)
• No operation ordering
• Code duplication and backwards compatibility
• Ungraceful handling of second slave
• Inconsistent naming
• serdev vs. serial bus
• serdev device
• device, client, slave
In the Works
• ACPI support
• ”[RFC 0/3] ACPI serdev support” (September 7)
• BCM2E39 Bluetooth device (regression?)
In the Works
• ACPI support
• ”[RFC 0/3] ACPI serdev support” (September 7)
• BCM2E39 Bluetooth device (regression?)
• Mux support
• ”[PATCH 0/6] serdev multiplexing support” (August 16)
• Utilising new mux subsystem
• Adds reg property (mux index)
• Has issues (no flushing, and no locking?!)
• max9260 I2C-controller slave driver
• Basic parity support (no error handling)
In the Works
• ACPI support
• ”[RFC 0/3] ACPI serdev support” (September 7)
• BCM2E39 Bluetooth device (regression?)
• Mux support
• ”[PATCH 0/6] serdev multiplexing support” (August 16)
• Utilising new mux subsystem
• Adds reg property (mux index)
• Has issues (no flushing, and no locking?!)
• max9260 I2C-controller slave driver
• Basic parity support (no error handling)
• RAVE slave driver
• ”[PATCH v7 1/1] platform: Add driver for RAVE Supervisory Processor”
(September 6)
In the Works
• ACPI support
• ”[RFC 0/3] ACPI serdev support” (September 7)
• BCM2E39 Bluetooth device (regression?)
• Mux support
• ”[PATCH 0/6] serdev multiplexing support” (August 16)
• Utilising new mux subsystem
• Adds reg property (mux index)
• Has issues (no flushing, and no locking?!)
• max9260 I2C-controller slave driver
• Basic parity support (no error handling)
• RAVE slave driver
• ”[PATCH v7 1/1] platform: Add driver for RAVE Supervisory Processor”
(September 6)
• w2sg and w2cbw GPS and WiFi/BT slave drivers
• ”[RFC 0/3] misc: new serdev based drivers for w2sg00x4 GPS module and
w2cbw003 wifi/bluetooth” (May 21)
Future Work
• Address quirks and limitations, including
• ACPI
• Hotplug
• Enable for more TTY drivers (USB serial)
• Mux and RS-485?
• Bus PM?
• Convert line-discipline drivers
• NFC
• CAN
• ti-st driver
• Some serio drivers (pulse8-cec)?
Further Reading
• include/linux/serdev.h
• drivers/tty/serdev/
• core.c
• serdev-ttyport.c
• Documentation/devicetree/bindings/
• serial/slave-device.txt
• net/broadcom-bluetooth.txt
• net/nokia-bluetooth.txt
• net/qca,qca7000.txt
• net/ti,wilink-st.txt
• ”The need for TTY slave devices” by Neil Brown
• https://lwn.net/Articles/700489/
Thanks!
johan@hovoldconsulting.com
johan@kernel.org

More Related Content

What's hot

Linux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, futureLinux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, future
Neil Armstrong
 
ELC North America 2021 Introduction to pin muxing and gpio control under linux
ELC  North America 2021 Introduction to pin muxing and gpio control under linuxELC  North America 2021 Introduction to pin muxing and gpio control under linux
ELC North America 2021 Introduction to pin muxing and gpio control under linux
Neil Armstrong
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Anne Nicolas
 
Interacting with Intel Edison
Interacting with Intel EdisonInteracting with Intel Edison
Interacting with Intel Edison
FITC
 
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
Claudio Scordino - Handling mixed criticality on embedded multi-core systemsClaudio Scordino - Handling mixed criticality on embedded multi-core systems
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
linuxlab_conf
 
Lee 2020 what the clock !
Lee 2020  what the clock !Lee 2020  what the clock !
Lee 2020 what the clock !
Neil Armstrong
 
Kernel Recipes 2013 - Conditional boot
Kernel Recipes 2013 - Conditional bootKernel Recipes 2013 - Conditional boot
Kernel Recipes 2013 - Conditional boot
Anne Nicolas
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer Kit
Sulamita Garcia
 
LAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome Keynote
Linaro
 
Tools for FPGA Development
Tools for FPGA DevelopmentTools for FPGA Development
Tools for FPGA Development
Brahim HAMADICHAREF
 
Redteaming HID attacks
Redteaming HID attacksRedteaming HID attacks
Redteaming HID attacks
Juan Espin
 
Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratch
linuxlab_conf
 
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
Neil Armstrong
 
Upstream Allwinner ARM SoC (sunxi) Support
Upstream Allwinner ARM SoC (sunxi) SupportUpstream Allwinner ARM SoC (sunxi) Support
Upstream Allwinner ARM SoC (sunxi) Support
Chen-Yu Tsai
 
BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE
Linaro
 
Allwinner Kernel Upstreaming Experiences
Allwinner Kernel Upstreaming ExperiencesAllwinner Kernel Upstreaming Experiences
Allwinner Kernel Upstreaming Experiences
Chen-Yu Tsai
 
Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102
Linaro
 
Using SoC Vendor HALs in the Zephyr Project - SFO17-112
Using SoC Vendor HALs in the Zephyr Project - SFO17-112Using SoC Vendor HALs in the Zephyr Project - SFO17-112
Using SoC Vendor HALs in the Zephyr Project - SFO17-112
Linaro
 
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bspELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
Neil Armstrong
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Anne Nicolas
 

What's hot (20)

Linux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, futureLinux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, future
 
ELC North America 2021 Introduction to pin muxing and gpio control under linux
ELC  North America 2021 Introduction to pin muxing and gpio control under linuxELC  North America 2021 Introduction to pin muxing and gpio control under linux
ELC North America 2021 Introduction to pin muxing and gpio control under linux
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Interacting with Intel Edison
Interacting with Intel EdisonInteracting with Intel Edison
Interacting with Intel Edison
 
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
Claudio Scordino - Handling mixed criticality on embedded multi-core systemsClaudio Scordino - Handling mixed criticality on embedded multi-core systems
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
 
Lee 2020 what the clock !
Lee 2020  what the clock !Lee 2020  what the clock !
Lee 2020 what the clock !
 
Kernel Recipes 2013 - Conditional boot
Kernel Recipes 2013 - Conditional bootKernel Recipes 2013 - Conditional boot
Kernel Recipes 2013 - Conditional boot
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer Kit
 
LAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome Keynote
 
Tools for FPGA Development
Tools for FPGA DevelopmentTools for FPGA Development
Tools for FPGA Development
 
Redteaming HID attacks
Redteaming HID attacksRedteaming HID attacks
Redteaming HID attacks
 
Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratch
 
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
 
Upstream Allwinner ARM SoC (sunxi) Support
Upstream Allwinner ARM SoC (sunxi) SupportUpstream Allwinner ARM SoC (sunxi) Support
Upstream Allwinner ARM SoC (sunxi) Support
 
BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE
 
Allwinner Kernel Upstreaming Experiences
Allwinner Kernel Upstreaming ExperiencesAllwinner Kernel Upstreaming Experiences
Allwinner Kernel Upstreaming Experiences
 
Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102
 
Using SoC Vendor HALs in the Zephyr Project - SFO17-112
Using SoC Vendor HALs in the Zephyr Project - SFO17-112Using SoC Vendor HALs in the Zephyr Project - SFO17-112
Using SoC Vendor HALs in the Zephyr Project - SFO17-112
 
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bspELC-NA 2020: War story - Using mainline linux for an Android TV bsp
ELC-NA 2020: War story - Using mainline linux for an Android TV bsp
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 

Similar to Kernel Recipes 2017 - The Serial Device Bus - Johan Hovold

Identifying and Supporting 'X-compatible' Hardware Blocks
Identifying and Supporting 'X-compatible' Hardware BlocksIdentifying and Supporting 'X-compatible' Hardware Blocks
Identifying and Supporting 'X-compatible' Hardware Blocks
Chen-Yu Tsai
 
Hands on Java8 and RaspberryPi
Hands on Java8 and RaspberryPiHands on Java8 and RaspberryPi
Hands on Java8 and RaspberryPiPance Cavkovski
 
Neutrondev ppt
Neutrondev pptNeutrondev ppt
Neutrondev pptmarunewby
 
Tech Days 2015: Embedded Product Update
Tech Days 2015: Embedded Product UpdateTech Days 2015: Embedded Product Update
Tech Days 2015: Embedded Product Update
AdaCore
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
orkaplan
 
VMworld 2016: vSphere 6.x Host Resource Deep Dive
VMworld 2016: vSphere 6.x Host Resource Deep DiveVMworld 2016: vSphere 6.x Host Resource Deep Dive
VMworld 2016: vSphere 6.x Host Resource Deep Dive
VMworld
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Samsung Open Source Group
 
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsSerge Stinckwich
 
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, OracleXPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
The Linux Foundation
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Samsung Open Source Group
 
Harmonia open iris_basic_v0.1
Harmonia open iris_basic_v0.1Harmonia open iris_basic_v0.1
Harmonia open iris_basic_v0.1
Yongyoon Shin
 
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linaro
 
HiPEAC-Keynote.pptx
HiPEAC-Keynote.pptxHiPEAC-Keynote.pptx
HiPEAC-Keynote.pptx
Behzad Salami
 
Open vSwitch Introduction
Open vSwitch IntroductionOpen vSwitch Introduction
Open vSwitch Introduction
HungWei Chiu
 
LinuxConJapan2014_makita_0_MACVLAN.pdf
LinuxConJapan2014_makita_0_MACVLAN.pdfLinuxConJapan2014_makita_0_MACVLAN.pdf
LinuxConJapan2014_makita_0_MACVLAN.pdf
DanielHanganu2
 
KazooCon 2014 - Playing Kazoo Dudka Style
KazooCon 2014 - Playing Kazoo Dudka StyleKazooCon 2014 - Playing Kazoo Dudka Style
KazooCon 2014 - Playing Kazoo Dudka Style
2600Hz
 
DPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesDPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith Wiles
Jim St. Leger
 
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Codemotion Tel Aviv
 
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationWebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
Amir Zmora
 
Codasip application class RISC-V processor solutions
Codasip application class RISC-V processor solutionsCodasip application class RISC-V processor solutions
Codasip application class RISC-V processor solutions
RISC-V International
 

Similar to Kernel Recipes 2017 - The Serial Device Bus - Johan Hovold (20)

Identifying and Supporting 'X-compatible' Hardware Blocks
Identifying and Supporting 'X-compatible' Hardware BlocksIdentifying and Supporting 'X-compatible' Hardware Blocks
Identifying and Supporting 'X-compatible' Hardware Blocks
 
Hands on Java8 and RaspberryPi
Hands on Java8 and RaspberryPiHands on Java8 and RaspberryPi
Hands on Java8 and RaspberryPi
 
Neutrondev ppt
Neutrondev pptNeutrondev ppt
Neutrondev ppt
 
Tech Days 2015: Embedded Product Update
Tech Days 2015: Embedded Product UpdateTech Days 2015: Embedded Product Update
Tech Days 2015: Embedded Product Update
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
VMworld 2016: vSphere 6.x Host Resource Deep Dive
VMworld 2016: vSphere 6.x Host Resource Deep DiveVMworld 2016: vSphere 6.x Host Resource Deep Dive
VMworld 2016: vSphere 6.x Host Resource Deep Dive
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
 
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
 
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, OracleXPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
 
Harmonia open iris_basic_v0.1
Harmonia open iris_basic_v0.1Harmonia open iris_basic_v0.1
Harmonia open iris_basic_v0.1
 
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
 
HiPEAC-Keynote.pptx
HiPEAC-Keynote.pptxHiPEAC-Keynote.pptx
HiPEAC-Keynote.pptx
 
Open vSwitch Introduction
Open vSwitch IntroductionOpen vSwitch Introduction
Open vSwitch Introduction
 
LinuxConJapan2014_makita_0_MACVLAN.pdf
LinuxConJapan2014_makita_0_MACVLAN.pdfLinuxConJapan2014_makita_0_MACVLAN.pdf
LinuxConJapan2014_makita_0_MACVLAN.pdf
 
KazooCon 2014 - Playing Kazoo Dudka Style
KazooCon 2014 - Playing Kazoo Dudka StyleKazooCon 2014 - Playing Kazoo Dudka Style
KazooCon 2014 - Playing Kazoo Dudka Style
 
DPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesDPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith Wiles
 
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
 
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationWebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
 
Codasip application class RISC-V processor solutions
Codasip application class RISC-V processor solutionsCodasip application class RISC-V processor solutions
Codasip application class RISC-V processor solutions
 

More from Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
Anne Nicolas
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Anne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Anne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
Anne Nicolas
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Anne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Anne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Anne Nicolas
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
Anne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Anne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
Anne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
Anne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
Anne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
Anne Nicolas
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Anne Nicolas
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
Anne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Anne Nicolas
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easy
Anne Nicolas
 
Kernel Recipes 2019 - CVEs are dead, long live the CVE!
Kernel Recipes 2019 - CVEs are dead, long live the CVE!Kernel Recipes 2019 - CVEs are dead, long live the CVE!
Kernel Recipes 2019 - CVEs are dead, long live the CVE!
Anne Nicolas
 

More from Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easy
 
Kernel Recipes 2019 - CVEs are dead, long live the CVE!
Kernel Recipes 2019 - CVEs are dead, long live the CVE!Kernel Recipes 2019 - CVEs are dead, long live the CVE!
Kernel Recipes 2019 - CVEs are dead, long live the CVE!
 

Recently uploaded

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 

Recently uploaded (20)

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 

Kernel Recipes 2017 - The Serial Device Bus - Johan Hovold

  • 1. The Serial Device Bus Johan Hovold Hovold Consulting AB johan@hovoldconsulting.com johan@kernel.org September 29, 2017
  • 2. Introduction • UARTs and RS-232 have been around since 1960s • USB, PCIe, Firewire, Thunderbolt • Common interface for Bluetooth, NFC, FM Radio and GPS • TTY-layer abstracts serial connection • Character-device interface (e.g. /dev/ttyS1) • But no (good) way to model associated resources (PM) • GPIOs and interrupts • Regulators • Clocks • Audio interface • Kernel support limited to line-discipline ”drivers” • Requires user-space to configure and initialise
  • 3. Outline • TTY Layer • Problems with line-discipline drivers • Serdev implementation • Serdev interfaces • Serdev limitations • Future work
  • 4. TTY Layer • Character device • Line disciplines • I/O processing • Canonical mode • Echos • Errors • Signals on input • TTY-ports • Input buffering • Abstraction layer (e.g. open()) • TTY-drivers
  • 5. User Space Drivers • Description • In user space • Port • Associated resources • GPIOs and interrupts (accessible) • Regulators • Clocks • Power management • Firmware loading
  • 6. Kernel Drivers • Interaction with other subsystems • Line-discipline drivers (e.g. bluetooth, input, nfc, ppp) • Registers further devices (e.g. hci0) • User-space daemons to initialise port and switch line-discipline • ldattach • inputattach • hciattach • Remains registered while port (and ldisc) is open • Firmware infrastructure available • But still issues with other resources and PM
  • 7. HCI registration example int ldisc = N_HCI; int proto = HCI_UART_BCM; fd = open("/dev/ttyO1", ...); /* configure line settings */ ioctl(fd , TIOCSETD , &ldisc); ioctl(fd , HCIUARTSETPROTO , proto);
  • 11. Problems with ldisc drivers • Description (what, where, how?) and discovery • Encoded in user space rather than firmware (DT, ACPI) • User-space daemons • Description and lookup of associated resources • GPIOs and interrupts (e.g. reset, wakeup) • Pinctrl • Regulators • Clocks • Power management • GPIOs, regulators, clocks... • Open port may prevent underlying device from runtime suspending • Firmware loading • GPIO (e.g. reset) interaction
  • 12. The Serial Device Bus • The Serial Device Bus (serdev) • By Rob Herring (Linaro) • Bus for UART-attached devices • Replace ti-st driver and UIM daemon • Earlier efforts (power management) • Merged in 4.11 • Enabled for serial core only in 4.12 (due to lifetime issues)
  • 13. Serdev Overview • New ”serial” bus type • Serdev controllers • Serdev clients (a.k.a. slaves or devices) • Serdev TTY-port controller • The only controller implementation • Registered by TTY-driver when there are clients • Controller replaces TTY character device • Clients described by firmware (Device Tree)
  • 16. Serdev Implementation • TTY-port clients • Default client (ldisc) • Serdev TTY-port client (controller) • Register controller and slaves when registering TTY-port struct tty_port { ... struct tty_port_client_operations *client_ops; void *client_data; }; struct tty_port_client_operations { int (* receive_buf)(...); void (* write_wakeup)(...); };
  • 17. Device Tree Bindings • Child of serial-port node • compatible property • max-speed property (optional) • Additional resources &uart1 { bluetooth { compatible = "ti ,wl1835 -st"; enable -gpios = <&gpio1 7 0>; clocks = <&clk32k_wl18xx >; clock -names = "ext_clock"; }; };
  • 18. Sysfs Example /sys/bus/platform/devices/ |-- 44 e09000.serial | |-- driver -> .../ omap_uart | ‘-- tty | ‘-- tty0 ‘-- 48022000. serial |-- driver -> .../ omap_uart ‘-- serial0 ‘-- serial0 -0 |--bluetooth | ‘-- hci0 |-- subsystem -> .../ bus/serial ‘-- driver -> .../hci -ti
  • 19. Driver Interface • Resembles line-discipline operations • open and close • terminal settings • write • modem control • read (callback) • write wakeup (callback) • A few additional helpers
  • 20. Driver Interface Functions int serdev_device_open (...); void serdev_device_close (...); unsigned serdev_device_set_baudrate (...); void serdev_device_set_flow_control (...); int serdev_device_write_buf (...); void serdev_device_wait_until_sent (...); int serdev_device_get_tiocm (...); int serdev_device_set_tiocm (...); void serdev_device_write_flush (...); int serdev_device_write_room (...); • No write serialisation • No operation ordering enforced
  • 21. Driver Interface Callbacks struct serdev_device_ops { int (* receive_buf)(...); void (* write_wakeup)(...); };
  • 22. Slave Driver Example static struct serdev_device_driver slave_driver = { .driver = { .name = "serdev -slave", . of_match_table = slave_of_match , }, .probe = slave_probe , .remove = slave_remove , }; module_serdev_device_driver (slave_driver);
  • 23. Slave Driver Probe Example static struct serdev_device_ops slave_ops { .receive_buf = slave_receive_buf , .write_wakeup = slave_write_wake_up , }; static int slave_probe(struct serdev_device *serdev) { ... priv ->serdev = serdev; serdev_device_set_drvdata (serdev , priv); serdev_device_set_client_ops (serdev , &slave_ops); serdev_device_open (serdev); serdev_device_set_baudrate (serdev , 115200); device_add (&priv ->dev); return 0; }
  • 24. Merged Drivers • Bluetooth • hci serdev (library based on hci ldisc.c) • hci bcm (4.14) • hci ll (4.12) • hci nokia (4.12) • Ethernet • qca uart (4.13)
  • 25. A Word on hci bcm • Precursor to serdev • Hack for additional resources and PM • Platform companion device • Described by ACPI or platform code • Child of serial device • Manages GPIOs and clocks • Registered in driver list at probe • Looked up in list from HCI callbacks • Matches on parent device • Serdev ACPI support? • Regression risk
  • 26. Limitations • Serial-core only • No hotplug • Device-tree only • Single slave • Raw mode only (error flags discarded)
  • 27. Hotplug • Implemented in TTY layer using file operations and hangups • But serdev does not use file abstraction • Requires changes to TTY layer • Partial reason for initial revert • PCI hotplug... • Description of dynamic buses • Only USB has rudimentary support for Device Tree • Device tree overlays • No in-kernel user-space interface for overlays • Example • Pulse Eight HDMI CEC USB device (ACM, serio driver)
  • 28. Quirks • Line-discipline allocated (and used) • Controller always registered • No character device (feature) • No bus PM (power.ignore children ?) • No operation ordering • Code duplication and backwards compatibility • Ungraceful handling of second slave • Inconsistent naming • serdev vs. serial bus • serdev device • device, client, slave
  • 29. In the Works • ACPI support • ”[RFC 0/3] ACPI serdev support” (September 7) • BCM2E39 Bluetooth device (regression?)
  • 30. In the Works • ACPI support • ”[RFC 0/3] ACPI serdev support” (September 7) • BCM2E39 Bluetooth device (regression?) • Mux support • ”[PATCH 0/6] serdev multiplexing support” (August 16) • Utilising new mux subsystem • Adds reg property (mux index) • Has issues (no flushing, and no locking?!) • max9260 I2C-controller slave driver • Basic parity support (no error handling)
  • 31. In the Works • ACPI support • ”[RFC 0/3] ACPI serdev support” (September 7) • BCM2E39 Bluetooth device (regression?) • Mux support • ”[PATCH 0/6] serdev multiplexing support” (August 16) • Utilising new mux subsystem • Adds reg property (mux index) • Has issues (no flushing, and no locking?!) • max9260 I2C-controller slave driver • Basic parity support (no error handling) • RAVE slave driver • ”[PATCH v7 1/1] platform: Add driver for RAVE Supervisory Processor” (September 6)
  • 32. In the Works • ACPI support • ”[RFC 0/3] ACPI serdev support” (September 7) • BCM2E39 Bluetooth device (regression?) • Mux support • ”[PATCH 0/6] serdev multiplexing support” (August 16) • Utilising new mux subsystem • Adds reg property (mux index) • Has issues (no flushing, and no locking?!) • max9260 I2C-controller slave driver • Basic parity support (no error handling) • RAVE slave driver • ”[PATCH v7 1/1] platform: Add driver for RAVE Supervisory Processor” (September 6) • w2sg and w2cbw GPS and WiFi/BT slave drivers • ”[RFC 0/3] misc: new serdev based drivers for w2sg00x4 GPS module and w2cbw003 wifi/bluetooth” (May 21)
  • 33. Future Work • Address quirks and limitations, including • ACPI • Hotplug • Enable for more TTY drivers (USB serial) • Mux and RS-485? • Bus PM? • Convert line-discipline drivers • NFC • CAN • ti-st driver • Some serio drivers (pulse8-cec)?
  • 34. Further Reading • include/linux/serdev.h • drivers/tty/serdev/ • core.c • serdev-ttyport.c • Documentation/devicetree/bindings/ • serial/slave-device.txt • net/broadcom-bluetooth.txt • net/nokia-bluetooth.txt • net/qca,qca7000.txt • net/ti,wilink-st.txt • ”The need for TTY slave devices” by Neil Brown • https://lwn.net/Articles/700489/