-
Notifications
You must be signed in to change notification settings - Fork 0
njheb/trinketm0-itsym0-itsym4-microbian
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Microbian nrf51/52 ported to Adafruit SAMD21/51 (early work) ============================================================ For the original BBC microbit version information please see: https://spivey.oriel.ox.ac.uk/baremetal/Bare_metal_micro:bit https://github.com/Spivoxity/microbian https://spivey.oriel.ox.ac.uk/digisys/Lecture_notes Supported Boards so far in this port: Trinket_m0, ItsyBitsy_m0, ItsyBitsy_m4 For overview of boards see: https://learn.adafruit.com/introducing-adafruit-itsybitsy-m4 https://learn.adafruit.com/introducing-itsy-bitsy-m0 https://learn.adafruit.com/adafruit-trinket-m0-circuitpython-arduino pinout diagrams: https://github.com/adafruit/Adafruit-ItsyBitsy-M0-PCB/blob/master/Adafruit%20ItsyBitsy%20M0%20pinout.pdf https://github.com/adafruit/Adafruit-Trinket-M0-PCB/blob/master/Adafruit%20Trinket%20M0%20pinout.pdf ItsyBitsy_m4 appears not to have a comparable diagram. datasheets: https://www.datasheets.com/en/part-details/atsamd21g18a-au-microchip-technology-60818854#datasheet https://www.microchip.com/sitesearch/search/All/ATSAMD51G19A The Itsy boards have the SWD interface broken out onto header pins. Up until this point there were 3 parallel trees. Most development was for trinket_m0 next came itsy_m0 and finally itsy_m4. They have now been combined into a single tree. The code is derived from Adafruit SAMD arduino. I don't intend to replace the CMSIS code to make it much more like the nrf51/52 trees. You will need to install an arduino IDE to have access to CMSIS include files and the Adafruit SAMD board packages to get hold of the source code that I worked from. See footnote for path and hyperlink. Arduino IDE version was 1.8.19, Only enough analog setup is done to allow compilation of SAMD51. At this point the tree is just a cutdown Adafruit SAMD arduino with microbian grafted on. The timer driver which was initially systick now makes use of an adaptation of the arduino Tone timer. The timer runs at 1ms as was the case with arduino configured systick, it would probably make sense to adjust the timer to 2ms for the 48MHz parts. A warts and all history of brining up the trinket port can be seen in trinketm0-tinyusb git repository. The trinketm0-tinyusb tree is slightly earlier than the combined tree. It has just enough work done to get a quick and dirty CDC port running as a microbian device. As it is derived from Adafruit-TinyUsb library rather than tinyusb it incorporates C++ and currently pulls in lots of extra code. I did my work on AMD64 Ubuntu 18.04. This release has been tested with Raspberry pi 4 using pre-installed arm-none-eabi-* tools. Please follow toolchain install instructions from https://spivey.oriel.ox.ac.uk/baremetal/Appendix_B:_Software_setup Watch out for gpio pin numbering, having divorced the code from it's arduino variant provided pin config struct. So far where necessary I have put in adhoc code to vary the port based on pin number where pins are assigned as n=(port*32)+gpio_bit. A proper scheme is needed. To use: (for the combined tree) ======= export ADAFRUIT_BOARD=<BOARD> where <BOARD> is one of "trinket_m0", "itsy_m0" or "itsy_m4" without quotes. or for example 'make ADAFRUIT_BOARD=trinket_m0' from a project directory. See "x00-blink", "x00-dotstar" or "x00-serial-driver" project directories. Not all boards have the dotstar wired up so that a SERCOM could be used. Therefore the onboard dotstar is bitbanged in every case. Unlike the nrf51/52 microbian projects binaries are output to ../build/<BOARD>/<PROJECT> Assuming export ADAFRUIT_BOARD=<BOARD> 'make flash' will program the device using bossac. Or try 'make uf2 upload' Mixing develoment of SAMD51 and SAMD21 boards may not be ideal for the paranoid as the bootloader sizes are 16K for *_m4 and 8K for *_m0. I think I saw somewhere that the boot area protect bit had been accidentaly left in a dangerous state on some early board firmwares. I did all my development so far using bossac for flashing but added the uf2 and upload makefile rules for the combined tree. There is plenty to do in cleaning up what I have so far, but I have pulled eveything together before I pause development. Footnote: Please follow https://learn.adafruit.com/adafruit-trinket-m0-circuitpython-arduino/arduino-ide-setup instructions to install Arduino IDE and board support packages. After installing arduino ide and adafruit packages see ~/.arduino15/packages/adafruit/hardware/samd/1.7.10/ for information and code, especially ~/.arduino15/packages/adafruit/hardware/samd/1.7.10/cores For raspberry pi install visit https://www.arduino.cc/en/software pick Linux ARM 32 bits or 64bits from download options as required once downloaded assuming 32bits arm download tar xf arduino-1.8.19-linuxarm.tar.xz cd arduino-1.8.19 sudo sh install.sh arduino "in File>preferences set Additional Boards Manager URLs to" https://adafruit.github.io/arduino-board-index/package_adafruit_index.json "go to Board manager, scroll down and find Adafruit SAMD Boards" "select install 1.7.10" After installation of boards it is suggested best practice to close and reopen arduino if you want to try out arduino examples before moving on to using the rudimentary SAMD port of microbian using Makefiles. See "To use": above.
About
combined tree later than trinket-microbian-tinyusb
Topics
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published