Deep Dive w/Scott: More 7.0.0 Fixes #adafruit
Channel: Adafruit Industries
Date: 06/08/2021

Join Scott today as he answers questions, talks about fixing for CircuitPython 7.0.0 and dives deep into system on a chip datasheet diagrams. 

Scott is sponsored by Adafruit to work on CircuitPython. Support them by purchasing hardware from https://adafruit.com

Chat with Scott and lot of others on the Adafruit Discord at https://adafru.it/discord.
Deep Dive happens every week. Next week is on Friday.

0:00:00 Hellos
0:02:50 Morpheus240 esp32-s2 board. at this point its more of a copy something else process
0:05:45 housekeeping hello everyone
0:09:09 Does circuitpython run on esp8266 or 32? ( also transition into BLE workflow )
0:13:10 BLE work team members
 0:14:14 Which BLE devices do you expect to support?
0:15:38 What about on OTA (over the air update) devices?
0:17:02 Can the boards you are programming today access the internet?
0:17:36 reddit / AMA - https://www.reddit.com/r/Python/comments/oyrqp0/welcome_to_a_joint_ama_with_some_of_the/
0:19:00 Would micropython run into GIL like issues? (GIL: Global Interpreter Lock)
0:21:24 go over the MP_STATE_VM stuff and when to use it instead of global variable declaration... the context being your review comment on the atexit PR #5077 - https://github.com/adafruit/circuitpython/pull/5077/files
0:24:20 “what is memory allocation” 
BSS: (start at zero )/ data: /  heap: malloc / realloc , stack:
0:29:15 Fish / OhMyZsh / OhMyFish?
0:30:20 Circuit Python can not defrag
0:31:30 import / long lived packing more densely / generational garbage collection - https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
0:32:40 reference counting / determining when memory is not used 
0:33:35 MP/CP mark and sweep / garbage collection
0:35:40 Does Python have garbage collection?
0:36:50 also look in MP_STATE
0:38:00 ( future desire - look at rust to get memory protection ) - https://en.wikipedia.org/wiki/Rust_(programming_language)
0:39:30 “Python - learn things as you need them”
0:40:15 Globals don’t get “marked”
0:42:25 gc_collect_start
0:45:07 bug from last week PyOCD ( UF2 bootloader broken if greater than 512K)
0:47:00 NRF boot loader issue issue Adafruit_nRF52_Bootloader 213 ( use 0.6.1 )
0:50:06 binutils update to get bug fixes too ( linker output bogus debug data)
0:52:35 Have you used Wokwi? It's a web based simulator with a really nice gui showing circuits. It's at https://wokwi.com/
0:54:00 Difference between simulators and ‘real’ hardware devices
0:55:45 Simulators may provide opportunities for automated regression testing
0:57:30 Monico editor ?
0:58:00 Rosie test tool in previous editor + cat on shredder distraction
1:00:30 Can you put a fitbit on your cat and be notified when he has a seizure..?
1:01:55 using scale under the litterbox to weigh the cats
1:05:30 corrupts auto-reload, and other things on Circuit Playground Express 3890
   SAMD21 tucks per event Pull #5100 - https://github.com/adafruit/circuitpython/issues/3890
1:12:00 review SAM D21 block diagram - http://ww1.microchip.com/downloads/en/DeviceDoc/SAM_D21_DA1_Family_DataSheet_DS40001882F.pdf
1:16:23 Advanced Microcontroller Bus Architecture - https://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture
1:17:20 “need to understand the whole system, not just the CPU”
1:19:50 peripherals
1:20:40 ​Can RAM in micro controllers be accessed similar to PEEK and POKE in C64 Basic?
1:21:15 memory mapped peripherals DMA - Direct Memory Access
1:23:58 Events / Interrupts / NVIC Nested Vector Interrupt Controller
1:28:05 Can time trigger an interrupt?
1:28:50 Convert events into interrupts
1:29:35 How long does the interrupt take to fire and load into state/what's the resolution of it?
1:31:50 ​Generators vs Users creating and consuming events or interrupts.
1:33:00 Event Detected - convert an event into an interrupt ( PR #5100 )
1:34:16 PR 5100 code files
1:38:20 decoding interrupt event
1:40:05 NTP to set a RTC and then compared the RTC to NTP 24 hours later and found out the RTC was gaining 7 secs/day
1:41:00 The volatile keyword
1:42:53 RP2040  block diagram - https://datasheets.raspberrypi.org/rp2040/rp2040-datasheet.pdf
1:49:40 SAM D51 block diagram - https://www.microchip.com/content/dam/mchp/documents/MCU32/ProductDocuments/DataSheets/SAM_D5x_E5x_Family_Data_Sheet_DS60001507G.pdf
1:54:25 Can you use DMA between Neopixels and i2c on any CP targets ?
1:55:35 NeoPixels can have their data ‘exploded’ to improve timing
1:56:45 ​Are these Micro Controllers optimized for bus length between CPU and RAM? Or are there other items that have a higher priority for bus speed?
1:57:33 SAM D Memory mapping overview
1:58:48 Cypress (now Infineon) PSoC chips
1:59:24 NXP Simplified Block Diagram - https://www.nxp.com/docs/en/data-sheet/IMXRT1010CEC.pdf
2:00:50 Cortex-M7 Platform diagram ( from reference manual )
2:03:30 STM32H7B0xB block diagram - https://www.st.com/resource/en/datasheet/stm32h7b0ib.pdf
2:10:45 wrap up
2:12:45 Have a great weekend - c u next friday