KernelDriverProgrammingCourse2015/OutlineDay2: Difference between revisions
Jump to navigation
Jump to search
(Created page with "== Kernel Driver Programming Course Day 2 == # Intro ## Welcome ## Results of the first course day, a number of changes have been [https://git.kernel.org/cgit/linux/kernel/gi...") |
No edit summary |
||
Line 5: | Line 5: | ||
## Results of the first course day, a number of changes have been [https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git/log/?h=sunxi/dt-for-4.3 queued up for merging] into the official kernel sources | ## Results of the first course day, a number of changes have been [https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git/log/?h=sunxi/dt-for-4.3 queued up for merging] into the official kernel sources | ||
## Some further changes are [https://github.com/jwrdegoede/linux-sunxi/commits/sunxi-wip?page=2 queued up in my sunxi-wip branch] as they rely on the pmic for otg vbus-detection and the matching pmic code is not yet merged upstream | ## Some further changes are [https://github.com/jwrdegoede/linux-sunxi/commits/sunxi-wip?page=2 queued up in my sunxi-wip branch] as they rely on the pmic for otg vbus-detection and the matching pmic code is not yet merged upstream | ||
# Plan for today: | |||
## Kernel is an intermediate between hardware and applications, a device driver typically has 2 interfaces, one side talking to the hardware, and another side talking to userspace | |||
## i2c hardware and driver basics | ## i2c hardware and driver basics | ||
## Looking at a userspace interface from a userspace pov: input devices / evdev | ## Looking at a userspace interface from a userspace pov: input devices / evdev | ||
## Looking at evdev from the kernel side | ## Looking at evdev from the kernel side | ||
## Handson | ## Handson | ||
# i2c hardware and driver basics | |||
## i2c hardware basics | |||
## Exploring an i2c device using i2cdetect and i2cget | |||
## Looking at a [https://fedorapeople.org/~jwrdegoede/i2c-basic-drv/ basic i2c driver] | |||
# Lunch Break | |||
# Looking at a userspace interface from a userspace pov: input devices / evdev | |||
# Looking at evdev from the kernel side | |||
# Handson | |||
## Building and running your own kernel | |||
### Build and install u-boot for your board using the [[KernelDriverProgrammingCourse2015/OutlineDay1 | instructions from Day 1]] | |||
### Cross compile your own kernel, following the [[KernelDriverProgrammingCourse2015/PreparationDay2 preparation instructions] for today | |||
### Install this kernel by copying arch/arm/boot/zImage to the cards boot partition | |||
### Also copy over the build dtb files arch/arm/boot/dts/sun?i-*.dtb to the dtb dir under the boot partition | |||
### Boot your board, login as root and do "uname -a" to verify that the board is running your kernel | |||
## Building and running a standalone driver | |||
### On your laptop download the [https://fedorapeople.org/~jwrdegoede/i2c-basic-drv/ basic i2c driver], edit the Makefile adjusting the path to the linux kernel sources and CROSS_COMPILE= settings to match your system | |||
### Type "make" to build the driver, and then transfer the generated .ko file to your ARM board | |||
### On your arm system do "insmod i2c-basic-drv.ko" and then "lsmod" to verify that the module has loaded |
Revision as of 11:11, 5 August 2015
Kernel Driver Programming Course Day 2
- Intro
- Welcome
- Results of the first course day, a number of changes have been queued up for merging into the official kernel sources
- Some further changes are queued up in my sunxi-wip branch as they rely on the pmic for otg vbus-detection and the matching pmic code is not yet merged upstream
- Plan for today:
- Kernel is an intermediate between hardware and applications, a device driver typically has 2 interfaces, one side talking to the hardware, and another side talking to userspace
- i2c hardware and driver basics
- Looking at a userspace interface from a userspace pov: input devices / evdev
- Looking at evdev from the kernel side
- Handson
- i2c hardware and driver basics
- i2c hardware basics
- Exploring an i2c device using i2cdetect and i2cget
- Looking at a basic i2c driver
- Lunch Break
- Looking at a userspace interface from a userspace pov: input devices / evdev
- Looking at evdev from the kernel side
- Handson
- Building and running your own kernel
- Build and install u-boot for your board using the instructions from Day 1
- Cross compile your own kernel, following the [[KernelDriverProgrammingCourse2015/PreparationDay2 preparation instructions] for today
- Install this kernel by copying arch/arm/boot/zImage to the cards boot partition
- Also copy over the build dtb files arch/arm/boot/dts/sun?i-*.dtb to the dtb dir under the boot partition
- Boot your board, login as root and do "uname -a" to verify that the board is running your kernel
- Building and running a standalone driver
- On your laptop download the basic i2c driver, edit the Makefile adjusting the path to the linux kernel sources and CROSS_COMPILE= settings to match your system
- Type "make" to build the driver, and then transfer the generated .ko file to your ARM board
- On your arm system do "insmod i2c-basic-drv.ko" and then "lsmod" to verify that the module has loaded
- Building and running your own kernel