Kihagyás

Referenciaértékek

Ez a dokumentum a Klipper referenciaértékeit ismerteti.

Mikrokontroller referenciaértékek

Ez a szakasz ismerteti a Klipper mikrokontroller lépési sebességreferencia létrehozására használt mechanizmust.

A referenciamutatók elsődleges célja, hogy következetes mechanizmust biztosítsanak a szoftveren belüli kódolási változtatások hatásának mérésére. Másodlagos cél, hogy magas szintű mérőszámokat biztosítson a chipek és a szoftverplatformok teljesítményének összehasonlításához.

A lépésszám-összehasonlítás célja a hardver és a szoftver által elérhető maximális lépésszám meghatározása. Ez az összehasonlító lépési sebesség a mindennapi használat során nem érhető el, mivel a Klippernek más feladatokat is el kell látnia (pl. mcu/host kommunikáció, hőmérséklet leolvasás, végállás ellenőrzés) minden valós használat során.

Általában a referencia-tesztekhez használt tűket úgy választják ki, hogy LED-eket vagy más ártalmatlan eszközöket működtessen. A referencia futtatása előtt mindig ellenőrizd, hogy a konfigurált tűk meghajtása biztonságos-e. Nem ajánlott a tényleges léptetők használata a referencia során.

Léptetőarányos referenciaérték teszt

A teszt a console.py eszközzel történik (a című fejezetben leírtak szerint). A mikrokontrollert az adott hardverplatformhoz konfiguráljuk (lásd alább), majd a következőket vágjuk ki és illesszük be a console.py terminálablakba:

SET start_clock {clock+freq}
SET ticks 1000

reset_step_clock oid=0 clock={start_clock}
set_next_step_dir oid=0 dir=0
queue_step oid=0 interval={ticks} count=60000 add=0
set_next_step_dir oid=0 dir=1
queue_step oid=0 interval=3000 count=1 add=0

reset_step_clock oid=1 clock={start_clock}
set_next_step_dir oid=1 dir=0
queue_step oid=1 interval={ticks} count=60000 add=0
set_next_step_dir oid=1 dir=1
queue_step oid=1 interval=3000 count=1 add=0

reset_step_clock oid=2 clock={start_clock}
set_next_step_dir oid=2 dir=0
queue_step oid=2 interval={ticks} count=60000 add=0
set_next_step_dir oid=2 dir=1
queue_step oid=2 interval=3000 count=1 add=0

A fentiekben három léptető egyidejű léptetését teszteljük. Ha a fentiek futtatása egy "Rescheduled timer in the past" a "Stepper too far in pas" hibát eredményez, akkor ez azt jelzi, hogy a ticks paraméter túl alacsony (túl gyors léptetési sebességet eredményez). A cél az, hogy megtaláljuk a ticks paraméter legalacsonyabb beállítását, amely megbízhatóan eredményezi a teszt sikeres befejezését. A ticks paramétert addig kell felezni, amíg stabil értéket nem találunk.

Sikertelenség esetén az alábbiakat másolva és beillesztve törölheted a hibát a következő tesztre való felkészüléshez:

clear_shutdown

Az egylépcsős referenciaértékek eléréséhez ugyanazt a konfigurációs sorrendet kell használni, de a fenti tesztnek csak az első blokkja a másolás és beillesztés a console.py ablakba.

A Funkciók dokumentumban található referenciatesztek előállításához a másodpercenkénti lépések teljes számát úgy kell kiszámítani, hogy az aktív léptetők számát megszorozzuk a névleges MCU frekvenciával, és elosztjuk a végső "ticks" paraméterrel. Az eredményeket a legközelebbi K-ra kerekítjük. Például három aktív léptetővel:

ECHO A teszt eredménye: {"%.0fK" % (3. * freq / ticks / 1000.)}

A referenciaértékeket a TMC vezérlők számára megfelelő paraméterekkel futtatjuk. Az olyan mikrovezérlők esetében, amelyek támogatják a STEPPER_BOTH_EDGE=1 (amint azt az MCU config sorban a konzolnál console.py első indításakor) a step_pulse_duration=0 és invert_step=-1 használatával engedélyezzük az optimalizált lépést a lépésimpulzus mindkét élére. Más mikrovezérlők esetében használd a 100ns-nak megfelelő step_pulse_duration értéket.

AVR lépési sebesség referenciaérték

Az AVR chipeknél a következő konfigurációs sorrend használatos:

allocate_oids count=3
config_stepper oid=0 step_pin=PA5 dir_pin=PA4 invert_step=0 step_pulse_ticks=32
config_stepper oid=1 step_pin=PA3 dir_pin=PA2 invert_step=0 step_pulse_ticks=32
config_stepper oid=2 step_pin=PC7 dir_pin=PC6 invert_step=0 step_pulse_ticks=32
finalize_config crc=0

A tesztet utoljára a 59314d99 megbízáson futtattuk, a gcc avr-gcc (GCC) 5.4.0 verziójával. Mind a 16Mhz-es, mind a 20Mhz-es teszteket egy atmega644p-re konfigurált simulavr segítségével futtattuk (korábbi tesztek megerősítették, hogy a simulavr eredményei egyeznek a 16Mhz-es at90usb és a 16Mhz-es atmega2560-as tesztekkel).

avr trükkök
1 léptető 102
3 léptető 486

Arduino Due lépésszám referencia

A következő konfigurációs sorrendet használjuk a Due-n:

allocate_oids count=3
config_stepper oid=0 step_pin=PB27 dir_pin=PA21 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PB26 dir_pin=PC30 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PA21 dir_pin=PC30 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet utoljára a 59314d99 megbízási gcc verzióval arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 futtatta.

sam3x8e trükkök
1 léptető 66
3 léptető 257

Duet Maestro lépésszám referencia

A Duet Maestro a következő konfigurációs sorrendet használja:

allocate_oids count=3
config_stepper oid=0 step_pin=PC26 dir_pin=PC18 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PC26 dir_pin=PA8 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PC26 dir_pin=PB4 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet utoljára a 59314d99 megbízási gcc verzióval arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 futtatta.

sam4s8c trükkök
1 léptető 71
3 léptető 260

Duet WiFi lépésszám referencia

A Duet WiFi esetében a következő konfigurációs sorrendet használjuk:

allocate_oids count=3
config_stepper oid=0 step_pin=PD6 dir_pin=PD11 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PD7 dir_pin=PD12 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PD8 dir_pin=PD13 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet utoljára a 59314d99 megbízási gcc verzióval gcc 10.3.1 20210621 (release) (GNU Arm Embedded Toolchain 10.3-2021.07) futtatta.

sam4e8e trükkök
1 léptető 48
3 léptető 215

Beaglebone PRU lépésszám referencia

A PRU-n a következő konfigurációs sorrendet kell alkalmazni:

allocate_oids count=3
config_stepper oid=0 step_pin=gpio0_23 dir_pin=gpio1_12 invert_step=0 step_pulse_ticks=20
config_stepper oid=1 step_pin=gpio1_15 dir_pin=gpio0_26 invert_step=0 step_pulse_ticks=20
config_stepper oid=2 step_pin=gpio0_22 dir_pin=gpio2_1 invert_step=0 step_pulse_ticks=20
finalize_config crc=0

A tesztet utoljára a 59314d99 megbízási gcc verzióval pru-gcc (GCC) 8.0.0 20170530 (experimental) futtatta.

pru trükkök
1 léptető 231
3 léptető 847

STM32F042 lépésszám referencia

Az STM32F042-nél a következő konfigurációs sorrendet használjuk:

allocate_oids count=3
config_stepper oid=0 step_pin=PA1 dir_pin=PA2 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PA3 dir_pin=PA2 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PB8 dir_pin=PA2 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet utoljára a 59314d99 megbízási gcc verzióval arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 futtatta.

stm32f042 trükkök
1 léptető 59
3 léptető 249

STM32F103 lépésszám referencia

Az STM32F103 esetében a következő konfigurációs sorrendet használjuk:

allocate_oids count=3
config_stepper oid=0 step_pin=PC13 dir_pin=PB5 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PB3 dir_pin=PB6 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PA4 dir_pin=PB7 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet utoljára a 59314d99 megbízási gcc verzióval arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 futtatta.

stm32f103 trükkök
1 léptető 61
3 léptető 264

STM32F4 lépésszám referencia

Az STM32F4 esetében a következő konfigurációs sorrendet használjuk:

allocate_oids count=3
config_stepper oid=0 step_pin=PA5 dir_pin=PB5 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PB2 dir_pin=PB6 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PB3 dir_pin=PB7 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet utoljára az 59314d99 megbízási gcc verzióval arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 futtatta. Az STM32F407-es eredményeket úgy kaptuk, hogy egy STM32F407-es bináris programot futtattunk egy STM32F446-oson (és így 168 MHz-es órajelet használtunk).

stm32f446 trükkök
1 léptető 46
3 léptető 205
stm32f407 trükkök
1 léptető 46
3 léptető 205

STM32H7 lépésszám referencia

A következő konfigurációs sorrendet egy STM32H743VIT6 esetében használjuk:

allocate_oids count=3
config_stepper oid=0 step_pin=PD4 dir_pin=PD3 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PA15 dir_pin=PA8 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PE2 dir_pin=PE3 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A teszt utoljára 00191b5c véglegesítéssel futott a gcc arm-none-eabi-gcc (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] véglegesítéssel.

stm32h7 trükkök
1 léptető 44
3 léptető 198

STM32G0B1 lépésszám referencia

Az STM32G0B1 esetében a következő konfigurációs sorrendet használjuk:

allocate_oids count=3
config_stepper oid=0 step_pin=PB13 dir_pin=PB12 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PB10 dir_pin=PB2 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PB0 dir_pin=PC5 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet utoljára a 247cd753 megbízási gcc verzióval arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 futtatta.

stm32g0b1 trükkök
1 léptető 58
3 léptető 243

LPC176x lépésszám referencia

Az LPC176x esetében a következő konfigurációs sorrendet használjuk:

allocate_oids count=3
config_stepper oid=0 step_pin=P1.20 dir_pin=P1.18 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=P1.21 dir_pin=P1.18 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=P1.23 dir_pin=P1.18 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet utoljára a 59314d99 megbízási gcc verzióval arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 futtatta. A 120Mhz-es LPC1769-es eredményeket egy LPC1768-as 120Mhz-re való túlhajtásával kaptuk.

lpc1768 trükkök
1 léptető 52
3 léptető 222
lpc1769 trükkök
1 léptető 51
3 léptető 222

SAMD21 lépési sebesség referencia

A SAMD21 esetében a következő konfigurációs sorrendet kell alkalmazni:

allocate_oids count=3
config_stepper oid=0 step_pin=PA27 dir_pin=PA20 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PB3 dir_pin=PA21 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PA17 dir_pin=PA21 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet legutóbb a 59314d99 megbízási gcc verzióval arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 futtatta egy SAMD21G18 mikrokontrollerrel.

samd21 trükkök
1 léptető 70
3 léptető 306

SAMD51 lépési sebesség referencia

A SAMD51 esetében a következő konfigurációs sorrendet kell alkalmazni:

allocate_oids count=3
config_stepper oid=0 step_pin=PA22 dir_pin=PA20 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PA22 dir_pin=PA21 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PA22 dir_pin=PA19 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet legutóbb a 59314d99 megbízási gcc verzióval arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 futtatta egy SAMD51J19A mikrokontrollerrel.

samd51 trükkök
1 léptető 39
3 léptető 191
1 lépés (200Mhz) 39
3 lépés (200Mhz) 181

AR100 lépési sebesség referencia

Az AR100 CPU (Allwinner A64) esetében a következő konfigurációs sorrend használatos:

allocate_oids count=3
config_stepper oid=0 step_pin=PL10 dir_pin=PE14 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PL11 dir_pin=PE15 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PL12 dir_pin=PE16 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet utoljára a 08d037c6 or1k-linux-musl-gcc (GCC) 9.2.0 gcc verzióval futtatták egy Allwinner A64-H mikrokontrollerrel.

AR100 R_PIO trükkök
1 léptető 85
3 léptető 359

RP2040 léptetési referencia

Az RP2040 esetében a következő konfigurációs sorrendet kell alkalmazni:

allocate_oids count=3
config_stepper oid=0 step_pin=gpio25 dir_pin=gpio3 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=gpio26 dir_pin=gpio4 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=gpio27 dir_pin=gpio5 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0

A tesztet legutóbb a 59314d99 megbízási gcc verzióval arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 Raspberry Pi Pico kártyán futtattuk.

rp2040 trükkök
1 léptető 5
3 léptető 22

Linux MCU lépésszám referencia

A következő konfigurációs sorrendet egy Raspberry Pi esetében használjuk:

allocate_oids count=3
config_stepper oid=0 step_pin=gpio2 dir_pin=gpio3 invert_step=0 step_pulse_ticks=5
config_stepper oid=1 step_pin=gpio4 dir_pin=gpio5 invert_step=0 step_pulse_ticks=5
config_stepper oid=2 step_pin=gpio6 dir_pin=gpio17 invert_step=0 step_pulse_ticks=5
finalize_config crc=0

A tesztet legutóbb a 59314d99 megbízási gcc verzióval gcc (Raspbian 8.3.0-6+rpi1) 8.3.0 Raspberry Pi 3-on (revision a02082) futtatták. Ebben a referenciatesztben nehéz volt stabil eredményeket elérni.

Linux (RPi3) trükkök
1 léptető 160
3 léptető 380

Parancsküldési referencia

A parancskiadási referenciateszt azt teszteli, hogy a mikrokontroller hány "dummy" parancsot képes feldolgozni. Ez elsősorban a hardveres kommunikációs mechanizmus tesztje. A tesztet a console.py eszközzel futtatjuk (a című fejezetben leírtak szerint). Az alábbiakat másoljuk ki és illesszük be a console.py terminálablakba:

DELAY {clock + 2*freq} get_uptime
FLOOD 100000 0.0 debug_nop
get_uptime

A teszt befejezésekor határozd meg a két "üzemidő" válaszüzenetben jelentett órák közötti különbséget. A másodpercenkénti parancsok teljes száma ekkor 100000 * mcu_frequency / clock_diff.

Vedd figyelembe, hogy ez a teszt telítheti a Raspberry Pi USB/CPU kapacitását. Ha Raspberry Pi, Beaglebone vagy hasonló gazdagépen fut, akkor növeld a késleltetést (pl. DELAY {clock + 20*freq} get_uptime). Ahol alkalmazható, az alábbi referenciák a console.py futtatásával készültek egy asztali számítógépen, ahol az eszköz egy nagy sebességű HUB-on keresztül van csatlakoztatva.

MCU Arány Gyári szám Fordító program
stm32f042 (CAN) 18K c105adc8 arm-none-eabi-gcc (GNU Tools 7-2018-q3-update) 7.3.1
atmega2560 (serial) 23K b161a69e avr-gcc (GCC) 4.8.1
sam3x8e (serial) 23K b161a69e arm-none-eabi-gcc (Fedora 7.1.0-5.fc27) 7.1.0
at90usb1286 (USB) 75K 01d2183f avr-gcc (GCC) 5.4.0
AR100 (soros) 138K 08d037c6 or1k-linux-musl-gcc 9.3.0
samd21 (USB) 223K 01d2183f arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0
pru (megosztott memória) 260K c5968a08 pru-gcc (GCC) 8.0.0 20170530 (kísérleti)
stm32f103 (USB) 355K 01d2183f arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0
sam3x8e (USB) 418K 01d2183f arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0
lpc1768 (USB) 534K 01d2183f arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0
lpc1769 (USB) 628K 01d2183f arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0
sam4s8c (USB) 650K 8d4a5c16 arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0
samd51 (USB) 864K 01d2183f arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0
stm32f446 (USB) 870K 01d2183f arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0
rp2040 (USB) 873K c5667193 arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0

Gazdagép referenciaértékei

Lehetőség van időzítési tesztek futtatására a gazdagépen a "batch mode" feldolgozási mechanizmus használatával (a című fejezetben leírtak szerint). Ez általában úgy történik, hogy kiválasztunk egy nagy és összetett G-kód fájlt, és megmérjük, hogy mennyi idő alatt dolgozza fel a gazdaszoftver. Például:

time ~/klippy-env/bin/python ./klippy/klippy.py config/example-cartesian.cfg -i something_complex.gcode -o /dev/null -d out/klipper.dict
Back to top