Introduction to Embedded Software -...

16
Introduction to Embedded Software Practice # 4 Linux device model for an I2C driver Dongkun Shin Embedded Software Laboratory Sungkyunkwan University http://nyx.skku.ac.kr/

Transcript of Introduction to Embedded Software -...

Page 1: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded Software

Practice #4Linux device model for an I2C driver

Dongkun ShinEmbedded Software Laboratory

Sungkyunkwan Universityhttp://nyx.skku.ac.kr/

Page 2: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

Objective

• Add an I2C device to a device tree.

• Find your driver and device in /sys.

• Implement basic i2c device control program.

2

Page 3: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

Day Practice

1) Python Program

- Make function of each component

- Print variation of each component with written function

3

Page 4: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Add a New Device on Device Tree

Page 5: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

•/arch/arm/boot/dts

// host PC

$ cd linux/arch/arm/boot/dts/

$ vi bcm2710-rpi-3-b.dts

Modify Device Tree

Page 6: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

// host PC

$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

zImage modules dtbs -j32

$ scp arch/arm/boot/dts/*.dtb pi@ip:/home/pi

$ scp arch/arm/boot/dts/overlays/*.dtb* pi@ip:/home/pi

// raspberry-pi

$ sudo mv *.dtb /boot

$ sudo mv *.dtb* /boot/overlays

$ sudo reboot

Rebuild Kernel

Page 7: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

•You can see nunchuk device is registered that you modified

// raspberry-pi

$ cd /sys

$ sudo find . -name "*nunchuk*"

Check Device Tree

Page 8: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

Device Tree Compiler• You can see structure of device tree using DTC

// raspberry-pi

$ dtc -I fs /proc/device-tree

Page 9: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

Implement i2c DeviceControl Program

Page 10: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

Kernel Level vs User level

• We can get a sensor data both in kernel level and user level

• In this lecture, we first try to get a sensor data with user level program

• In user level, we use SMbus protocol to get data

Page 11: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

Connecting the nunchuk

• Connect numchukto adapter

Page 12: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

Connecting the nunchuk

3.3VPWR

- + d c

GND SDA SLA • Raspberry Pi Pin Layout

• Wii WiiChuck Nunchuck Adapter

Don’t use

Page 13: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

i2c Device Detect

// raspberry-pi

$ sudo apt-get install i2c-tools

$ sudo i2cdetect -y 1

Page 14: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

Requirements

// raspberry-pi

$ sudo apt-get install python-smbus

$ sudo apt-get install python3-smbus

Page 15: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

Wii Nunchuk Output

Page 16: Introduction to Embedded Software - SKKUnyx.skku.ac.kr/wp-content/uploads/2019/04/ESW-Practice4.pdf · // raspberry-pi $ sudo mv *.dtb /boot $ sudo mv *.dtb* /boot/overlays $ sudo

Introduction to Embedded SoftwareSWE3027-41

Practice #42019-04-23

Base Code•Using base code, implement your own python

program