I'm looking to do two things.
1) To create a msc bootloader for the device that a user can interact with
2) To set up a basic project file where I can interact with the onboard IO and components (accelerometor, buzzer, vibration motor, and move files back and forth from hidden to visible msc memory).
There is a 2MB flash memory chip which displays 1MB to user and 1MB is hidden partition.
The custom board is running a Samd21G17A, all components on the board have been verified working (Power, regulation, GPIO, USB, SPI, jlink reprogramming.) I will ship this board to you for development work.
an example of this process would be;
1) the user is given a new file to reprogram the device, the user plugs device into USB
2) The user copies the file to the USB mass storage device. this reprogramable file contains file contents as well as a new runtime program.
3) the user disconnects the USB, the bootloader see's this new file and takes over.
4) the bootloader deletes all hidden memory, copies over all new files to hidden partition, and overwrites program code in write access onboard flash.
things to note:
1) There should be a way to display to the user through the existing MSC and onboard leds that the reprogramming failed.
2) There should be a way to verify that the reprogramming was successful. possibly a check on number of files transferred, or a confirmation of a memory byte. or checksum etc etc.
Other than the bootloader and initial project file, all subsequent work can be another freelancer project,
this project scope involves a custom bootloader for user reprogramming, and a project file containing helper functions on controlling various I/O and components, (ie: calling acc/gyro positions, controlling leds, outputting this frequency on buzzer etc, functions to copy, move files from partition to partition.) essentially having all the building blocks to begin building a device program. many, if not all of these requests are already premade libraries.
Critical: this bootloader code must be open source incase anything on the hardware side changes and needs updating. project and bootloader code must be open source and delivered in full with no compiled custom libraries.
Microcontroller, Electronics, C Programming, Atmel, Python