jak na linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · představení...

38
Jak na Linux v robotech a při jejich vývoji Michal Sojka [email protected] ČVUT v Praze Fakulta elektrotechnická Katedra řídicí techniky InstallFest 2013 Michal Sojka Linux v robotech InstallFest 2013 1 / 29

Upload: others

Post on 07-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Jak na Linux v robotech a při jejich vývoji

Michal [email protected]

ČVUT v PrazeFakulta elektrotechnickáKatedra řídicí techniky

InstallFest 2013

Michal Sojka Linux v robotech InstallFest 2013 1 / 29

Page 2: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Ukázka robotu

Michal Sojka Linux v robotech InstallFest 2013 2 / 29

Page 3: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

HW architektura robotu

Michal Sojka Linux v robotech InstallFest 2013 3 / 29

Page 4: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Obsah

Představení hardware

Linux jako vývojové prostředí pro mikrokontoléry

Embedded LinuxJádro, root filesystemDigitální vstupy/výstupy (GPIO)CAN busVlastní driver

Demo

Nebudu mluvit o ROS.

Michal Sojka Linux v robotech InstallFest 2013 4 / 29

Page 5: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Představení hardware

PowerPC MPC5200MIDAM Shark modul, 400 MHz, 128 MB RAM, 64 MB Flash

Zdroj: J. Kubias

Michal Sojka Linux v robotech InstallFest 2013 5 / 29

Page 6: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Představení hardware

RYU EDU daughter boardKonektory, LED diody, napájecí zdroj

Zdroj: J. Kubias

Michal Sojka Linux v robotech InstallFest 2013 6 / 29

Page 7: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Představení hardware

EbBoardLPC2119 (ARM7TDMI-S), 60 MHz, 16 kB RAM, 256 kB Flash

Zdroj: J. Kubias

Michal Sojka Linux v robotech InstallFest 2013 7 / 29

Page 8: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Linux jako vývojové prostředí pro mikrokontoléry

Vývoj SW pro mikrokontoléry

Když nemůžete nebo nechcete používat IDE.

GCC cross-compiler pro ARMarm-elf-gcc -mcpu=arm7tdmi -Wl,-T,lpc21xx-flash.ld -g -O2 -Wall \

-I ../include -o main main.c

Loaderhttp://sourceforge.net/projects/lpc21isp/

Makesystem

I Automatizuje činnosti (make; make load)I Možnost integrace s IDE (kdevelop, eclipse)I Jeden makesystem pro všechny HW platformy v projektu

Michal Sojka Linux v robotech InstallFest 2013 8 / 29

Page 9: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Linux jako vývojové prostředí pro mikrokontoléry

Blikání LEDkou

#include <lpc21xx.h>

int main(){

volatile int tmp;while (1) {

IOSET0 = 1<<3; // pin cislo 3for (tmp = 0; tmp < 1000000; tmp++);IOCLR0 = 1<<3;for (tmp = 0; tmp < 1000000; tmp++);

}}

Michal Sojka Linux v robotech InstallFest 2013 9 / 29

Page 10: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Jádro Linuxu

Klasický postup

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gitcd linuxmake menuconfig ARCH=powerpcmake ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-

Lepší varianta

make menuconfig O=../buildcd ../buildcp Makefile GNUmakefilevi GNUmakefile # pridat ARCH, CROSS_COMPILE, ...make

I Snadné verzování konfiguraceI Automatická instalace na TFTP server atd.

Michal Sojka Linux v robotech InstallFest 2013 10 / 29

Page 11: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Jádro Linuxu

Klasický postup

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gitcd linuxmake menuconfig ARCH=powerpcmake ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-

Lepší varianta

make menuconfig O=../buildcd ../buildcp Makefile GNUmakefilevi GNUmakefile # pridat ARCH, CROSS_COMPILE, ...make

I Snadné verzování konfiguraceI Automatická instalace na TFTP server atd.

Michal Sojka Linux v robotech InstallFest 2013 10 / 29

Page 12: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Root filesystem

Mnoho variantI BusyboxI BuildrootI OpenEmbeddedI YoctoI EmdebianI ...

Buildroot

I http://buildroot.uclibc.org/I Rychlé, jednoduché, funguje.I „Naprogramováno“ v GNU Make

Michal Sojka Linux v robotech InstallFest 2013 11 / 29

Page 13: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Root filesystem

Mnoho variantI BusyboxI BuildrootI OpenEmbeddedI YoctoI EmdebianI ...

Buildroot

I http://buildroot.uclibc.org/I Rychlé, jednoduché, funguje.I „Naprogramováno“ v GNU Make

Michal Sojka Linux v robotech InstallFest 2013 11 / 29

Page 14: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Root filesystem

Mnoho variantI BusyboxI BuildrootI OpenEmbeddedI YoctoI EmdebianI ...

Buildroot

I http://buildroot.uclibc.org/I Rychlé, jednoduché, funguje.I „Naprogramováno“ v GNU Make

Ukázka...

Michal Sojka Linux v robotech InstallFest 2013 11 / 29

Page 15: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Verzování

I Je nepraktické mít ve verzovacím systému binárky celého rootfilesystém nebo jádra

I Použití git submodulů a „out-of-tree build“ :$ git ls-filesbuildroot/build/.configbuildroot/build/Makefilebuildroot/build/overlay/bin/motor-reg.shbuildroot/build/overlay/etc/init.d/S50canbuildroot/build/overlay/root/.ssh/authorized_keysbuildroot/repo # submodule with buildroot sourceslinux/3.4-rt/build/.configlinux/3.4-rt/build/.gitignorelinux/3.4-rt/build/GNUmakefilelinux/3.4-rt/repo # submodule with Linux sources

I Vytvoření build adresáře:cd buildroot/repo; make O=../build menuconfig

I Každý může zreprodukovat vytvoření root filestémucd buildroot/build; make

Michal Sojka Linux v robotech InstallFest 2013 12 / 29

Page 16: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Bootování

I Při vývoji/testování je výhodné bootovat ze sítě:I Podporováno většinou bootloaderů (U-Boot, ...)I TFTP server pro jádroI NFS pro root filesystém

I S buildrootem:tar -C /srv/nfs/robot -xf images/rootfs.tarexportfs -o rw,no_root_squash 10.1.1.1:/srv/nfs/robot

I Příkazová řádka Linuxu (nastavená v bootloaderu):root=/dev/nfs nfsroot=10.1.1.2:/srv/nfs/robot rw ip=dhcp

Michal Sojka Linux v robotech InstallFest 2013 13 / 29

Page 17: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Real-Time Preemption Patches (rt-preempt)Hodí se standardní jádro pro řízení robotů?

I Jak rychle zareaguje uživatelská aplikace na vnější podnět?robot$ cyclictest -p 80 -n -t 1host$ ping -f -s 64000 robot

I 3000 µs ⇒ 333 Hz (když budeme mít štěstí)I rt-preempt: 150 µs ⇒ 6,6 kHz (závisí mimo jiné na HW)I OSADL QA Farm – dlouhodobé měření latence

Michal Sojka Linux v robotech InstallFest 2013 14 / 29

Page 18: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Real-Time Preemption Patches (rt-preempt)Hodí se standardní jádro pro řízení robotů?

I Jak rychle zareaguje uživatelská aplikace na vnější podnět?robot$ cyclictest -p 80 -n -t 1host$ ping -f -s 64000 robot

I 3000 µs ⇒ 333 Hz (když budeme mít štěstí)

I rt-preempt: 150 µs ⇒ 6,6 kHz (závisí mimo jiné na HW)I OSADL QA Farm – dlouhodobé měření latence

Michal Sojka Linux v robotech InstallFest 2013 14 / 29

Page 19: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Real-Time Preemption Patches (rt-preempt)Hodí se standardní jádro pro řízení robotů?

I Jak rychle zareaguje uživatelská aplikace na vnější podnět?robot$ cyclictest -p 80 -n -t 1host$ ping -f -s 64000 robot

I 3000 µs ⇒ 333 Hz (když budeme mít štěstí)I rt-preempt: 150 µs ⇒ 6,6 kHz (závisí mimo jiné na HW)

I OSADL QA Farm – dlouhodobé měření latence

Michal Sojka Linux v robotech InstallFest 2013 14 / 29

Page 20: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Real-Time Preemption Patches (rt-preempt)Hodí se standardní jádro pro řízení robotů?

I Jak rychle zareaguje uživatelská aplikace na vnější podnět?robot$ cyclictest -p 80 -n -t 1host$ ping -f -s 64000 robot

I 3000 µs ⇒ 333 Hz (když budeme mít štěstí)I rt-preempt: 150 µs ⇒ 6,6 kHz (závisí mimo jiné na HW)I OSADL QA Farm – dlouhodobé měření latence

Michal Sojka Linux v robotech InstallFest 2013 14 / 29

Page 21: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Digitální vstupy/výstupy (GPIO)

I Ovládání HW připojeného k desce.I Přístup ke GPIO bez problému z jádra.I Lze „vyexportovat“ do user-space přes sysfs.I Jaké číslo má daný GPIO v Linuxu?

dmesg|grep gpioI Práce s GPIO v shellu:

echo 239 > /sys/class/gpio/exportecho out > /sys/class/gpio/gpio239/directionecho 1 > /sys/class/gpio/gpio239/value

Michal Sojka Linux v robotech InstallFest 2013 15 / 29

Page 22: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

linuxblink.c

#include <unistd.h>#include <fcntl.h>

int main(){

int led;led = open("/sys/class/gpio/gpio239/value", O_RDWR);while (1) {

write(led, "1", 1);usleep(300000);write(led, "0", 1);usleep(300000);

}}

Michal Sojka Linux v robotech InstallFest 2013 16 / 29

Page 23: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

CAN busPropojení Linuxové desky s mikrokontroléry

I 3 vodiče: CAN-L, CAN-H, GND (+ napájení?)I Odolnost proti rušeníI Více zařízeníI Deterministická MAC (pro automobilový průmysl)I Většina mikrokontrolérů má variantu s CANemI Max. 1 Mbit/s, 8 bytů/frame

V Linuxu

I CAN je podporován v mainline (dříve projekt SocketCAN)I Velmi podobné práci s TCP/UDP (sockety)I can-utils (shell)

Michal Sojka Linux v robotech InstallFest 2013 17 / 29

Page 24: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

CAN busPropojení Linuxové desky s mikrokontroléry

I 3 vodiče: CAN-L, CAN-H, GND (+ napájení?)I Odolnost proti rušeníI Více zařízeníI Deterministická MAC (pro automobilový průmysl)I Většina mikrokontrolérů má variantu s CANemI Max. 1 Mbit/s, 8 bytů/frame

V Linuxu

I CAN je podporován v mainline (dříve projekt SocketCAN)I Velmi podobné práci s TCP/UDP (sockety)I can-utils (shell)

Michal Sojka Linux v robotech InstallFest 2013 17 / 29

Page 25: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

can-utils

I cansend – posílá CANový rámecI candump – zobrazuje provoz na sběrniciI canplayerI cangenI ...

cansend can0 001#0f # LEDcansend can0 034#019000 # zvedakcandump can0,15:7ff # odometrie

Michal Sojka Linux v robotech InstallFest 2013 18 / 29

Page 26: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Vzdálené blikání LEDkouAplikace pro mikrokontrolér

#include <lpc21xx.h>#include <deb_led.h>#include <periph/can.h>#include <system_def.h>

void can_rx(can_msg_t *msg) {deb_led_change(LEDB);if (msg->id == 0x01)

deb_led_set(msg->data[0] & 0x0f);}

int main (void){

can_init(1000000 /*bits/s*/ , 0, can_rx);while (1)

// Low power mode, woken up by IRQ e.g. CAN_RX_IRQPCON = PCON_IDL;

}

Michal Sojka Linux v robotech InstallFest 2013 19 / 29

Page 27: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Vzdálené blikání LEDkouAplikace pro Linux: canblink.c

#include <linux/can.h>#include <sys/socket.h>#include <net/if.h>#include <string.h>#include <sys/ioctl.h>#include <unistd.h>

int main(){

int led;struct sockaddr_can addr;struct ifreq ifr;led = socket(PF_CAN, SOCK_RAW, CAN_RAW);strcpy(ifr.ifr_name, "can0" );ioctl(led, SIOCGIFINDEX, &ifr);addr.can_family = AF_CAN;addr.can_ifindex = ifr.ifr_ifindex;bind(led, (struct sockaddr *)&addr,

sizeof(addr));// ...

// ...struct can_frame f =

{ .can_id = 1, .can_dlc = 1 };

while (1) {write(led, &f, sizeof(f));f.data[0]++;usleep(100000);

}}

Michal Sojka Linux v robotech InstallFest 2013 20 / 29

Page 28: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Řízení motorku Linuxem

Time offset: 0 0 2 4 6 8 10 12 14 16 18 20

0

2

4

6

8

10

12

14

16

18

20Motor position

A

B

IRQ

Time

IRC signalsA B

Michal Sojka Linux v robotech InstallFest 2013 21 / 29

Page 29: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Jak na to?

I Obsluha IRQ, čtení GPIO vstupů (A, B), generování PWMsignálu.

I Implementace v user-space je možná (například pomocí UIO),ale byla by pomalá.

I Motorek generuje až 10000 IRQ za sekundu.I Řešení: vlastní driver.

Michal Sojka Linux v robotech InstallFest 2013 22 / 29

Page 30: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Registrace a inicializace ovladačeZjednodušeno, některé detaily vynechány – viz odkazy

struct motorek {struct mpc52xx_gpt *pwmf, *pwmb, *irca, *ircb;atomic_t pos;int irq;

};static int motorek_probe(struct platform_device* dev){

m = kzalloc(sizeof(*m), GFP_KERNEL);m->irq = irq_of_parse_and_map(dn, 0); // m->pwnf = ...;err = request_irq(m->irq, motorek_irq, 0, "motorek", m);platform_set_drvdata(dev, m);

}static struct platform_driver motorek_driver = {

.probe = motorek_probe,

.driver = { .name = "motorek" }};static int motorek_init_module(void){

return platform_driver_register(&motorek_driver);}

Michal Sojka Linux v robotech InstallFest 2013 23 / 29

Page 31: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Čtení pozice motorku

static irqreturn_t motorek_irq(int irq, void *dev_id){

struct motorek *m = dev_id;int irc_state = ((in_be32(&m->irca) & MPC52xx_GPT_STATUS_PIN) ? 1 : 0) |

((in_be32(&m->ircb) & MPC52xx_GPT_STATUS_PIN) ? 2 : 0);m->pos += table[irc_state | m->last_irc_state << 2];return IRQ_HANDLED;

}static ssize_t show_position(struct device *dev,

struct device_attribute *attr, char *buf){

struct platform_device *pdev = to_platform_device(dev);struct motorek *m = platform_get_drvdata(pdev);return snprintf(buf, PAGE_SIZE, "%d\n", atomic_read(&m->pos));

}DEVICE_ATTR(position, 0444, show_position, NULL);

static int __devinit motorek_probe(struct platform_device* dev){ // ...

device_create_file(&dev->dev, &dev_attr_position);}

Michal Sojka Linux v robotech InstallFest 2013 24 / 29

Page 32: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Nastavení napětí na motorku

static void motorek_action(struct motorek *m, unsigned val){

u16 width = val*PWM_PERIOD/1000;out_be32(m->pwmf, (width<<16) | MPC52xx_GPT_PWM_OP);

}

static ssize_t set_action(struct device *dev, struct device_attribute *attr,const char *buf, size_t count) {

struct platform_device *pdev = to_platform_device(dev);struct motorek *m = platform_get_drvdata(pdev);

unsigned a;sscanf(buf, "%u", &a);motorek_action(m, a);return strnlen(buf, PAGE_SIZE);

}

DEVICE_ATTR(action, 0644, NULL, set_action);

static int __devinit motorek_probe(struct platform_device* dev){ // ...

device_create_file(&dev->dev, &dev_attr_action);}

Michal Sojka Linux v robotech InstallFest 2013 25 / 29

Page 33: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Embedded Linux

Regulátor motorku v shellu :-)

#!/bin/shref=${1:-0}while true; do

p=$(cat /sys/devices/motorek.1/position);e=$((ref-p));echo $((e/2)) > /sys/devices/motorek.1/actionecho $p;usleep 10000;

done

Michal Sojka Linux v robotech InstallFest 2013 26 / 29

Page 34: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Demo

Odkazy

I Chcete se zapojit? → http://flamingos.felk.cvut.cz/I HW wiki: https://rtime.felk.cvut.cz/hw/I https://rtime.felk.cvut.cz/gitweb/shark/

motorek-5200.git/blob/HEAD:/motorek.cI https://rt.wiki.kernel.org/I https://osadl.org/

Michal Sojka Linux v robotech InstallFest 2013 27 / 29

Page 35: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Demo

Demo

Děkuji za pozornost!

Otázky?

Michal Sojka Linux v robotech InstallFest 2013 28 / 29

Page 36: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Demo

Demo

Děkuji za pozornost!

Otázky?

Michal Sojka Linux v robotech InstallFest 2013 28 / 29

Page 37: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Demo

Demo

Děkuji za pozornost!

Otázky?

Michal Sojka Linux v robotech InstallFest 2013 28 / 29

Page 38: Jak na Linux v robotech a pri jejich vývojisojka/blog/if13/if13-robot-linux.pdf · Představení hardware PowerPCMPC5200 MIDAMSharkmodul,400MHz,128MBRAM,64MBFlash Zdroj: J. Kubias

Komunikace v robotu

Zdroj: Michal Vokáč

Michal Sojka Linux v robotech InstallFest 2013 29 / 29