**PR19_01_XMC** //Infineon XMC4800 development environment with Docker containers.//
* TODO: Add lizard static analysis
* TODO: https://interrupt.memfault.com/blog/boostrapping-libc-with-newlib
* TODO: https://interrupt.memfault.com/blog/automate-debugging-with-gdb-python-api
**PR19_02_Sensors** //Air quality PM sensor measurements and data visualization.//
* TODO: https://www.freecodecamp.org/news/how-to-monitor-your-air-quality-with-this-diy-setup-3399793137c3/
* TODO: https://seetheair.wordpress.com/2020/02/18/low-cost-portable-monitors-vs-reference-monitors-part1/
* Sensirion SPS30 (https://www.digikey.de/product-detail/en/sensirion-ag/SEK-SPS30/1649-1107-ND/9598991)
* Renesas ZMOD4410
* http://www.ica.miteco.es/
* see [[sensors]]
* see [[air monitoring system components]]
**PR19_03_Yocto** //Yocto environment for STM32P1 board.//
* TODO: real-time
* TODO: https://onlinelibrary.wiley.com/doi/full/10.1002/eng2.12114
**PR20_01_STM32** //STM32 development environment with libopencm3.//
* TODO: Consolidate makefiles (use XMC4800 makefile, http://reecestevens.me/blog/2016/07/08/embedded-programming-without-ide/). Add also improvements from https://tty.uchuujin.de/2016/02/stm32-from-scratch-makefile/.
* TODO: Measure improvements by using SRAM for code, as well as using ITCM memory (https://rhye.org/post/stm32-with-opencm3-4-memory-sections/).
* TODO: STM32MP1 environment, follow https://bootlin.com/blog/building-a-linux-system-for-the-stm32mp1-basic-system/
**PR20_02_RTEMS** //Develop a simple application on an ARM platform (SPI sensor throughput, CPU load, GPIO interrupt latency, interrupt latency with user thread processing, PPS jitter).//
* [[MCU execution time]]
* [[pulse measurement]]
* TODO: Run RTEMS examples in Nucleo hardware
* TODO: Run RTEMS tests in Nucleo hardware
* [[RTEMS BSP for TMS570LC4357]]
* Run Nucleo examples from SRAM
- GPIO toggling on bare-metal. Compare performance of different boards, flash/RAM/ITCM, etc.
- Interrupt latency (GPIO input/output) on bare-metal. Compare performance of different boards, flash/RAM/ITCM, etc.
- GPIO toggling on RTEMS using a single uninterrupted task. Compare performance of different boards. Useful to make sure the systems and toolchains are working as expected. Running from flash/RAM/ITCM.
- RTEMS interrupt latency and jitter at different CPU loads (GPIO input/output). Compare performance of different boards.
- RTEMS scheduling latency and jitter using mutex at different CPU loads (measured using two GPIO outputs). Compare performance of different boards.
- RTEMS periodic timer jitter at different CPU loads (measured using one GPIO output). Compare performance of different boards.
- RTEMS contribution: CPU load
- RTEMS contribution: task priority assignment with ML
**PRXX_XX_Micropython**
* TODO: https://neil.computer/notes/how-to-compile-and-flash-micropython-firmware-on-stm32f7/
====== EtherCAT ======
[[https://www.youtube.com/watch?v=uFbr7xBjItE|Machinekit + EtherCAT on RPi3 MQTT broker latency test]]
[[https://www.youtube.com/watch?v=1upqqL_kBmw|Accurate Synchronization ethercat systems using distributed clocks]]
====== IMU helicopter control ======
http://iot.ee.ucla.edu/UCLA-STMicro/index.php/Home
ST material:
STEVAL-FCU001V1
STEVAL-STLKT01V1
STEVAL-IDI001V1
DT0064
Design tip - Noise analysis and identification in MEMS sensors
[[https://www.adafruit.com/product/164|Adafruit IR distance sensor]]
[[https://www.adafruit.com/product/3317|Adafruit ToF distance sensor]]
[[https://www.tindie.com/products/blecky/mappydot-micro-smart-lidar-sensor/|MappyDot]]
====== PTP ======
http://www.eecis.udel.edu/~mills/ptp.html
http://home.mit.bme.hu/~khazy/ptpd/
http://lwn.net/Articles/520203/
http://lists.ntp.org/pipermail/hackers/2013-October/006157.html
http://nullr0ute.com/2014/04/3-14-fedora-arm-kernel-status/
http://www.belden.com/docs/upload/precision_clock_synchronization_wp.pdf
http://www.ieeeboston.org/publications/society_presentations/Implementation_of_IEEE_1588_Protocol_on_Embedded_Processors_Pub_Jiang_Wu.pdf
http://www.ixxat.com/introduction_ieee_1588_en.html
https://community.freescale.com/thread/324194
http://processors.wiki.ti.com/index.php/TI81XX_PSP_Ethernet_Switch_User_Guide#IEEE_1588.2F802.1AS_PTP_Support
http://ptpd.sourceforge.net/
==== linuxptp ====
http://linuxptp.sourceforge.net/
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Deployment_Guide/#ch-Configuring_PTP_Using_ptp4l
ptp4l -i eth0 -m
pmc -u -b 0 'GET CURRENT_DATA_SET'
pmc -u -b 0 'GET TIME_STATUS_NP'
phc2sys -s eth0 -w
Accuracy improvements:
nohz=off
==== Statistics ====
https://github.com/aewallin/allantools/
====== Linux PPS support ======
http://linuxpps.org/wiki/index.php/Main_Page
http://www.linuxpps.org/pipermail/discussions/2013-May/004430.html
http://ml.enneenne.com/pipermail/linuxpps/2011-August/thread.html#4331
====== GPS NTP timestamps ======
**http://www.leapsecond.com/time-nuts.htm**
http://www.febo.com/pipermail/time-nuts/2013-June/077959.html
http://the8thlayerof.net/2013/12/08/adafruit-ultimate-gps-cape-creating-custom-beaglebone-black-device-tree-overlay-file/
Measurement: jitter, offset, allan deviation
[[http://www.sigrok.org/blog/blogs/joel-holdsworth|sigrok and gpsd]]
http://github.com/ddrown/wwvb
====== High resolution timers ======
http://e2e.ti.com/support/microcontrollers/msp430/f/166/t/187153.aspx
http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1576
http://electronics.stackexchange.com/questions/59216/very-accurate-time-measurement
====== Power management ======
https://mindlinux.wordpress.com/2014/02/02/power-management-a-system-wide-challenge-peter-de-schrijver/
====== BBB ======
http://hackaday.com/2013/12/07/speeding-up-beaglebone-black-gpio-a-thousand-times/
http://blog.dan.drown.org/beaglebone-black-timer-capture-driver/
====== i.MX6 ======
http://www.cse.unsw.edu.au/~cs9242/13/project/m1.shtml
====== MSP430 ======
http://homepages.ius.edu/rwisman/C335/html/msp430GetStarted.HTM
http://microcontrollershop.com/product_info.php?products_id=5740
http://www.schmartboard.com/schmartboard_pd_710-0009-02_l.jpg
http://e2e.ti.com/support/microcontrollers/msp430/f/166/t/142094.aspx
http://43oh.com/2010/08/10-beginner-msp430-tutorials-and-counting/
===== serial =====
http://www.argenox.com/library/msp430/ch8-msp430_uart.php
http://www.mikrocontroller.net/topic/241214
====== Vehicle counting ======
https://publiclab.org/questions/stevie/07-13-2018/what-is-a-good-way-to-track-vehicular-traffic
====== Other useful hardware ======
http://www2.fisica.unlp.edu.ar/~veiga/life54.html
====== Digital filters ======
https://stratifylabs.co/embedded%20design%20tips/2013/10/04/Tips-An-Easy-to-Use-Digital-Filter/
http://eleceng.dit.ie/frank/arm/BareMetalSTM32F303Nucleo/fir/
https://www.theunterminatedstring.com/cmsis-arm-fir-comparison/
http://www.onarm.com/forum/62573/
http://zipcpu.com/dsp/2017/11/04/genfil-tb.html
https://github.com/mhorauer/XMC4500-Barebone-Projects
http://www.eas.uccs.edu/~mwickert/ece5655/lecture_notes/ARM/ece5655_chap6.pdf
===== Implementing FIR filters =====
http://zipcpu.com/dsp/2017/12/06/fastfir-tb.html
===== Implementing EMA filters =====
https://www.embeddedrelated.com/showcode/304.php
https://dev.to/nestedsoftware/exponential-moving-average-on-streaming-data-4hhl
https://helpful.knobs-dials.com/index.php/Low-pass_filter
https://dsp.stackexchange.com/questions/40462/exponential-moving-average-cut-off-frequency/40465
https://www.rowetel.com/?p=1245
===== Implementing IIR filters =====
https://dspguru.com/dsp/howtos/implement-iir-filters/
https://www.edn.com/design/analog/4315624/Fixed-point-IIR-filter-challenges
===== Unit testing =====
https://stackoverflow.com/questions/27723062/unit-testing-for-signal-processing