From 54e3e6bf3cebe047cdc0b2d05c554f9c1944b487 Mon Sep 17 00:00:00 2001 From: Paul XPS Date: Sat, 1 Dec 2018 02:18:01 -0600 Subject: [PATCH] Big release commit for firmware v2.3.0 Put bunch of notes in Readme.txt on how to update device firmware to v2.3 using dfusedemo. Anyone with a device currently in their hands will want to update to this latest version using the dfusedemo instructions there. Or the AVR instructions if you have an old kazzo. For devices shipping after Dec 1st 2018 I will be flashing this latest v2.3 firmware which has it's own firmware updater so the INLretro host software can easily and seamlessly update the firmware for you without any external software, switch or jumper operation on the PCB. This update also includes some power functions in the bootloader dictionary. Can now make direct read/write access to the entire ARM memory space. Maybe I'll add this to the AVR someday..? Having this previously would have actually allowed me to bootstrap a switchless bootloader without dfuse.. ahh well... Also turned the watchdog timer on for the STM32 build finally. Requires refreshing every ~1sec, currently only done in the main. Added application versioning to address 0x08000800 in the binary. Couldn't get the linker script to do this for me for some reason. So for now I just manually put it in the binary file. The fwupdate.lua script has a lot more checks now. Uses the new bootloader dict functions to dump device firmware and make sure all looks good before it starts erasing firmware. Haven't done much testing with the current AVR build. Got a report there was a problem with UNROM flashing, will have to check that out. Done with the firmware for awhile now hopefully. Need to clean up some things with the main program & inlretro.lua script. Start making better use of some recent contributions by several gracious people. Maybe I'll get going on gameboy, GBA, & sega soon.. Got a ton of NESmaker devices to push out the door now with this latest build. So might be slow for a bit.. --- Readme.txt | 328 ++- .../HIDBootFlash-winGUI/HIDBootFlash.exe | Bin .../bootloadHID-master/Changelog.txt | 0 .../bootloadHID-master/License.txt | 0 .../bootloadHID-master/Readme.txt | 0 .../bootloadHID-master/firmware/Makefile | 0 .../firmware/bootloaderconfig.h | 0 .../kazzo_bootloader_m164a_release.hex | 0 .../bootloadHID-master/firmware/main.c | 0 .../bootloadHID-master/firmware/main.hex | 0 .../bootloadHID-master/firmware/usbconfig.h | 0 .../firmware/usbdrv/Changelog.txt | 0 .../firmware/usbdrv/CommercialLicense.txt | 0 .../firmware/usbdrv/License.txt | 0 .../firmware/usbdrv/Readme.txt | 0 .../firmware/usbdrv/USB-ID-FAQ.txt | 0 .../firmware/usbdrv/USB-IDs-for-free.txt | 0 .../firmware/usbdrv/asmcommon.inc | 0 .../firmware/usbdrv/oddebug.c | 0 .../firmware/usbdrv/oddebug.h | 0 .../firmware/usbdrv/usbconfig-prototype.h | 0 .../firmware/usbdrv/usbdrv.c | 0 .../firmware/usbdrv/usbdrv.h | 0 .../firmware/usbdrv/usbdrvasm.S | 0 .../firmware/usbdrv/usbdrvasm.asm | 0 .../firmware/usbdrv/usbdrvasm.o | Bin .../firmware/usbdrv/usbdrvasm12.inc | 0 .../firmware/usbdrv/usbdrvasm128.inc | 0 .../firmware/usbdrv/usbdrvasm15.inc | 0 .../firmware/usbdrv/usbdrvasm16.inc | 0 .../firmware/usbdrv/usbdrvasm165.inc | 0 .../firmware/usbdrv/usbdrvasm18-crc.inc | 0 .../firmware/usbdrv/usbdrvasm20.inc | 0 .../firmware/usbdrv/usbportability.h | 0 .../bootloadHID.2012-12-08/Changelog.txt | 0 .../bootloadHID.2012-12-08/License.txt | 0 .../bootloadHID.2012-12-08/Readme.txt | 0 .../bootloadHID.2012-12-08/firmware/Makefile | 0 .../firmware/bootloaderconfig.h | 0 .../bootloadHID.2012-12-08/firmware/main.c | 0 .../bootloadHID.2012-12-08/firmware/main.hex | 0 .../firmware/usbconfig.h | 0 .../firmware/usbdrv/Changelog.txt | 0 .../firmware/usbdrv/CommercialLicense.txt | 0 .../firmware/usbdrv/License.txt | 0 .../firmware/usbdrv/Readme.txt | 0 .../firmware/usbdrv/USB-ID-FAQ.txt | 0 .../firmware/usbdrv/USB-IDs-for-free.txt | 0 .../firmware/usbdrv/asmcommon.inc | 0 .../firmware/usbdrv/oddebug.c | 0 .../firmware/usbdrv/oddebug.h | 0 .../firmware/usbdrv/usbconfig-prototype.h | 0 .../firmware/usbdrv/usbdrv.c | 0 .../firmware/usbdrv/usbdrv.h | 0 .../firmware/usbdrv/usbdrvasm.S | 0 .../firmware/usbdrv/usbdrvasm.asm | 0 .../firmware/usbdrv/usbdrvasm12.inc | 0 .../firmware/usbdrv/usbdrvasm128.inc | 0 .../firmware/usbdrv/usbdrvasm15.inc | 0 .../firmware/usbdrv/usbdrvasm16.inc | 0 .../firmware/usbdrv/usbdrvasm165.inc | 0 .../firmware/usbdrv/usbdrvasm18-crc.inc | 0 .../firmware/usbdrv/usbdrvasm20.inc | 0 .../firmware/usbdrv/usbportability.h | 0 ...k to load v1 INLkazzo with INLretro v2.bat | 2 + .../commandline/Makefile | 0 .../commandline/Makefile.windows | 0 .../commandline/bootloadHID.exe | Bin .../commandline/hidsdi.h | 0 .../commandline/main.c | 0 .../commandline/main.o | Bin .../commandline/usb-libusb.c | 0 .../commandline/usb-windows.c | 0 .../commandline/usbcalls.c | 0 .../commandline/usbcalls.h | 0 .../INL_NES_PCBv2_0N_FWv2_03_0.dfu | Bin 0 -> 20149 bytes .../INLretro6_PCBv2_0_FWv2_03_0.dfu | Bin 0 -> 21797 bytes firmware/Make_avr | 2 +- firmware/build_avr/avr_kazzo.elf | Bin 30440 -> 29548 bytes firmware/build_avr/avr_kazzo.hex | 1666 ++++++----- firmware/build_stm6/inlretro_stm.elf | Bin 208488 -> 203028 bytes firmware/build_stm6/inlretro_stm.hex | 2570 ++++++++--------- firmware/build_stm6/inlretro_stm.map | 1423 +++++---- firmware/build_stmn/inlretro_stm.elf | Bin 199180 -> 195180 bytes firmware/build_stmn/inlretro_stm.hex | 2358 ++++++++------- firmware/build_stmn/inlretro_stm.map | 1332 ++++----- firmware/include_stm/nokeep.ld | 21 +- firmware/source/bootload.c | 214 +- firmware/source/main.c | 36 +- firmware/source_stm_only/fwupdate.c | 15 +- firmware/source_stm_only/usb_descriptors.h | 10 +- host/scripts/app/fwupdate.lua | 237 +- host/scripts/inlretro.lua | 11 +- shared/shared_dict_bootload.h | 62 +- 94 files changed, 5298 insertions(+), 4989 deletions(-) rename {bootloader => avr_bootloader}/HIDBootFlash-winGUI/HIDBootFlash.exe (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/Changelog.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/License.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/Readme.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/Makefile (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/bootloaderconfig.h (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/kazzo_bootloader_m164a_release.hex (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/main.c (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/main.hex (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbconfig.h (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/Changelog.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/CommercialLicense.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/License.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/Readme.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/USB-ID-FAQ.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/USB-IDs-for-free.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/asmcommon.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/oddebug.c (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/oddebug.h (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbconfig-prototype.h (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrv.c (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrv.h (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrvasm.S (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrvasm.asm (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrvasm.o (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrvasm12.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrvasm128.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrvasm15.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrvasm16.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrvasm165.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrvasm18-crc.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbdrvasm20.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID-master/firmware/usbdrv/usbportability.h (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/Changelog.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/License.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/Readme.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/Makefile (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/bootloaderconfig.h (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/main.c (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/main.hex (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbconfig.h (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/Changelog.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/CommercialLicense.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/License.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/Readme.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/USB-ID-FAQ.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/USB-IDs-for-free.txt (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/asmcommon.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/oddebug.c (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/oddebug.h (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbconfig-prototype.h (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrv.c (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrv.h (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm.S (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm.asm (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm12.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm128.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm15.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm16.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm165.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm18-crc.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm20.inc (100%) rename {bootloader => avr_bootloader}/bootloadHID.2012-12-08/firmware/usbdrv/usbportability.h (100%) create mode 100644 avr_bootloader/click to load v1 INLkazzo with INLretro v2.bat rename {bootloader => avr_bootloader}/commandline/Makefile (100%) rename {bootloader => avr_bootloader}/commandline/Makefile.windows (100%) rename {bootloader => avr_bootloader}/commandline/bootloadHID.exe (100%) rename {bootloader => avr_bootloader}/commandline/hidsdi.h (100%) rename {bootloader => avr_bootloader}/commandline/main.c (100%) rename {bootloader => avr_bootloader}/commandline/main.o (100%) rename {bootloader => avr_bootloader}/commandline/usb-libusb.c (100%) rename {bootloader => avr_bootloader}/commandline/usb-windows.c (100%) rename {bootloader => avr_bootloader}/commandline/usbcalls.c (100%) rename {bootloader => avr_bootloader}/commandline/usbcalls.h (100%) create mode 100644 firmware/DFU_release/INL_NES_PCBv2_0N_FWv2_03_0.dfu create mode 100644 firmware/DFU_release/INLretro6_PCBv2_0_FWv2_03_0.dfu diff --git a/Readme.txt b/Readme.txt index 7a05c04..ade193c 100644 --- a/Readme.txt +++ b/Readme.txt @@ -1,3 +1,27 @@ + +=================================== +INSTALLING DEVICE DRIVERS: +=================================== + +Plug the device into a USB port. + +Open a windows file explorer and navigate to: + INL-retro-progdump\WindowsDriverPackage + +In that folder there's a "InstallDriver.exe" application. +Double click it to run it. + +Windows should ask if you want to allow it to make changes to your PC, say YES. + +Click next in the wizard, it should install the drivers to your PC. + +If it worked properly you'll get a "install successful" page, click FINISH. + +In windows you should be able to see "INLretro-prog" listed in "devices and printers" from +the control panel. + + + =================================== RUNNING THE HOST APPLICATION: =================================== @@ -24,13 +48,309 @@ If the device errors out, or is not responding you may have to press the RESET b USB connector on the INLretro programmer/dumper to reset the device, and try again. + + =================================== UPDATING DEVICE FIRMWARE =================================== -This is done via USB using STmicro DfuSe: + + +---------------------------------------------------------- +STM32 ARM based device versions "INLretro" V2.0 and later +---------------------------------------------------------- +If you purchased your device in 2018 or later you have this version +This includes devices aquired with NESmaker kits. + + +0) DO I NEED TO FOLLOW THESE STEPS? + +Devices sold Oct 2018 or earlier shipped with firmware v2.1 or v2.2 +These builds did not include a 'switchless' USB firmware updater. +So you will need to update to v2.3 or later using STmicro DfuSeDemo. +Alternatively if you somehow bricked your device with any firmware, +you can use STmicro's DfuSeDemo to easily recover it via USB. + +Once upgraded to firmware v2.3.0 or later, you shouldn't need to use +the DfuSeDemo to upgrade your device's firmware anymore. The INLretro +host software is capable of updating the device's firmware on builds +v2.3.0 or later. + +INLretro devices purchased in Nov 2018 were shipped with a mix of firmware versions. +INLretro devices purchased in Dec 2018 and later ship with firmware version +v2.3.0 or later. +Kickstarter NESmaker kits with the large fancy "NES" enclosure shipped with v2.1 +All other Kickstarter NESmaker kits used the smaller v2.0N PCB and +shipped with v2.3.0 + +I'm working on updating the INLretro host software to report which +firmware version your device is using to take out the guess work. +Once this is done the command prompt will report which build version +you have. Updating from v2.3.0 to later versions will be pretty easy +as the host application will ask you if you'd like to let it update +the firmware version for you. In that case you can ignore these DfuSeDemo +instructions unless you somehow brick your device. Or maybe you make +your own firmware builds and use the Dfu file manager to create your +own .dfu builds that may or may not be compatible with the switchless +firmware updater. + +So at this point I'm assuming you need/want to use the DfuSeDemo +to update your device because it has firmware v2.2 or earlier, or you +bricked your device, etc. + + +1) GET THE SOFTWARE + +Go to the st.com link below. At the bottom there's a "GET SOFTWARE" +section, download the STSW-STM32080 item. This is written for v3.0.6 https://www.st.com/en/development-tools/stsw-stm32080.html -Detailed instructions to come, will update this section with the next firmware update. +Alternatively you can save the hassle of creating an STmicro account +by downloading directly from the following link if you would like: +https://www.dropbox.com/s/gwcvd3dqwkbzsv9/en.stsw-stm32080.zip?dl=0 + + +2) INSTALL THE SOFTWARE + +As far as I know this application is windows only. You will probably +have to run it in a virtual machine if you're on linux/windows. If +this is a big problem I can look into creating my own dfuse application +that runs on linux/mac. This should be a one time thing, so I'm hoping +gaining access to a windows machine isn't too much to ask.. + +Extract the .zip downloaded in step 1. Click next, select users, etc.. +Click install and let it make the changes to your PC. +Once complete it should give you an option to launch it. + + +3) LAUNCH DFUSEDEMO + +You can probably find it in the start menu searching "dfusedemo" +It didn't give me any choices on install path and put it here: +C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin +From that folder you can create shortcuts of dfusedemo to your desktop +If you think you may like to make your own firmware builds and want +to convert your hex/bin files to .dfu you can use the DFU file manager +in the same installation folder as dfusedemo. + + +4) GET THE INLRETRO INTO DFU MODE + +At this point chances are there's nothing listed under +"Available DFU Devices", it takes some steps to get the programmer +in DFU mode so the dfusedemo application can find & communicate to it. + +This step varies slightly depending on your exact device & when you +purchased it. + +-PCB VERSION 2.0 purchase prior to Dec 2018 + If your device shipped with firmware v2.1 or v2.2 + I soldered a "BL/RUN" switch to aid in this process. + + The switch is next to the USB socket, place it in "BL" nearest + the USB socket. Then plug the USB cable into your PC. If it + was already plugged in, just replug it, or hit the RESET button + soldered right next to the BL/RUN switch. + +-PCB VERSION 2.0 purchased Dec 2018 or later + or the big NES enclosure from NESmaker kickstarter + You may not have a BL/RUN switch. Unplug the USB cable. + Get a tweezers, paperclip, or something conductive like that. + There are 5 holes in the PCB edge with "RUN" and "BL" on either side + Ignore the bigger outer 2 holes. Short the center hole to the small + hole next to it closest to the BL label (and USB connector) + Plug the USB cable in while those two pads are shorted together. + It might help to have a freind plug in the USB cable while you short the pins. + Once it's plugged in you don't have to keep the pins shorted anymore. + +-PCB VERSION 2.0N smaller device with NES Connector alone + These are the majority of the basic NESmaker kickstarter kits. + You really shouldn't be going through this process unless you + bricked your device or I personally instructed you to do so. + Reason being is had an error with the PCB BL/RUN switch. + I specifically released the switchless firmware updater in time + to avoid you from going through this trouble. All V2.0N PCBs + shipped with firmware v2.3.0 or later and thus don't need dfusedemo + to update. + If you're still here, with PCB v2.0N dated "AUG2018" get a tweezers + or something like a metal paperclip. + On the top corner of the PCB there's a place for a "BL/RUN" switch. + I didn't solder it on though, and the silk is backwards. + Ignore the bigger outer 2 holes. Short the center hole to the small + hole next to it closest to the RUN label (and USB connector). + Plug in the USB cable with those pads shorted together. + It might help to have a freind plug in the USB cable while you short the pins. + Once it's plugged in you don't have to keep the pins shorted anymore. + +-Other PCB versions: there are none at this time... (12/1/2018) + If you've got a PCB that says v1.1, v1.2, v1.3, or v1.4 on the bottom + You're in the wrong place. None of these steps will work for you. + Go down a little to the instructions: + "AVR based devices versions "KAZZO" V1.4 and eariler" + + +5) PERFORM THE UPDATE + +The device should be in DFU mode now from the step above. + +With the device is in DFU mode the dfusedemo application should +list it under available devices as "STM Device in DFU Mode" +You can also see it listed in windows "devices & printers" as +"STM32 BOOTLOADER". If you see "INL Retro-Prog" the device isn't +in DFU mode, try this step again.. + +-Choose Button + Choose the right Choose button! There are 2 "Choose" buttons. + Naturally, you'll probably select the wrong one... + CLICK THE "Choose" button in the BOTTOM CENTER in the + "Upgrade or Verify Action" section. + + The Choose button will popup an Open window, navigate to + INL-retro-progdump\firmware\DFU_release folder + +-Load .dfu file + Select the proper .dfu file: + All versions publicly released are here, sort by date and select + the latest one that matches your PCB version. + + If your PCB is big and square (v2.0) select the one that + starts with INLretro6 (currently INLretro6_PCBv2_0_FWv2_03_0.dfu) + + If your PCB is smaller and only has place for NES connector + select the one that starts with "INL_NES" + (currently INL_NES_PCBv2_0N_FWv2_03_0.dfu) + + If you're following these instructions later down the road + I've probably got later versions you should be using. + Just make sure the PCB version of the name matches what's printed + in silk screen on the bottom of your PCB. In the end it's easy + to change if you select the wrong one. Or the firmware updater + will fix it for you once you've got it unbricked. + +-Optional settings + You can check the "Verify after download" box just above the + Choose button, it will verify the flash after programming. + You can also check the "Optimize Upgrade duration" but it really + doesn't matter, it only takes a couple seconds anyway.. + +-Upgrade + Click the "Upgrade" button just to the right of that "Choose" + button you just used. + + NOTE! You WILL GET A WARNING POPUP, it's expected! + Click "Yes" to the warning: "Your device was plugged in DFU mode. + "So it is impossible to make sure this file is correct for this device." + "Continue however?" + + CLICK YES. + +-Watch the status bar + It should click across a few times and say + "Target 00: Verify successful!" or just + "Target 00: Upgrade successful!" depending on if you chose + to verify or not in the optional step. + + If you have problems, make sure the device is in DFU mode + and appears in windows "devices & printers" as "STM32 BOOTLOADER" + before trying to upgrade. Please contact me if you're + having problems. + +-Exit DFU mode + If you have a BL/RUN switch, place it back in RUN + Unplug the USB cable and plug it back in. + You should see "INL Retro-Prog" in devices & printers + and the device should be running the latest firmware now! + + + +---------------------------------------------------------- +AVR based devices versions "KAZZO" V1.4 and eariler +---------------------------------------------------------- +If you purchased your device in 2017 or earlier you have this version +This should also apply if you made your own kazzo based on the open +source design. Although I can't assure this software works with +any of those versions, especially versions with something besides +the atmega164. + +These devices sold by Infinite NES Lives included a bootloader to +update the flash via USB. + +There are effectively 3 main versions of firmware that run on your device: + +A) original kazzo firmware created by naruko that is needed to use + anago/unagi dumping software. See old instructions to get that running + if you want it. You're in the wrong place. + +B) INL released firmware for use with "INL-retro prog v1.0beta" this + was effectively my "version 1" release of firmware & software. + It wasn't very good, but got the job done for far too many years. + I don't recommend using that old firmware & software anymore + You'll be able to use the latest software and firmware + provided here instead. + +C) INLretro v2 firmare & software, the reason you're here, and + the software & firmware included with this download/project. + Upgrading the firmware is similar to previously, but here's + a quick run through to get you going with the latest firmware + that's required in order to use this INLretro software. + + +You're here because you want to install option C from above +Smart choice... + + +1) GET THE SOFTWARE + +The bootloader software is already included with this project/download +which you're reading this file from. It also doesn't require installation. +These instructions are for windows, but you can build the bootloader to +work on linux/mac as well. + + +2) PUT DEVICE IN BOOTLOADER MODE + +Place the BL/RUN switch in the BL position. Plug in the USB cable, or +Hit the RESET button on the PCB. + +The device should now be in bootloader mode. Look in windows "devices +and printers" and you should see "HIDBoot". If not, try this step again. +The next steps won't work if you still see "INLRetro-Prog" "kazzo" or something +like that.. + + +3) UPDATE THE FIRMWARE + +In a windows file explorer navigate to: + + INL-retro-progdump\avr_bootloader + +You should see a file in that folder named: + + "click to load v1 INLkazzo with INLretro v2.bat" + +Double click on that file to run it. + +If you didn't get the device in HIDBoot properly you'll probably see a message like: + "Error opening HIDBoot device: The specified device was not found" + Go back and retry step 2, this step only works if you got step 2 working properly + +If you were successful you'll see a message like this: + + Page size = 128 (0x80) + Device size = 16384 (0x4000); 14336 bytes remaining + Uploading 13312 (0x3400) bytes starting at 0 (0x0) + 0x03380 ... 0x03400 + + C:\Users\...\INL-retro-progdump\avr_bootloader>pause + Press any key to continue . . . + +Hit the any key, or just close that popup window, you've updated the firmware! + + +4) EXIT BOOTLOADER MODE + +Place the BL/RUN switch in RUN +You should see "INL Retro-Prog" in devices & printers +and the device should be running the latest firmware ready to use the latest software! @@ -82,7 +402,7 @@ need to have libusb-dev installed can check by typing "libusb-config" in termina will present usage options if installed on your system if not installed should report so with suggestion for apt-get: sudo apt-get install libusb-dev -then just run 'make' should build sucessfully +then just run 'make' should build successfully With the bootloader commandline app built, the firmware can be loaded onto the INL retro-programmer via USB: @@ -169,7 +489,7 @@ Requires you to have an avr programmer to reflash atmega164a mcu Helpful to download more recent version of avrdude than included with WinAVR. Download latest version with mingw32.zip from following link: http://download.savannah.gnu.org/releases/avrdude/ -unzip and copy paste both avrdude.exe and avrdude.conf to C:\WinAVR-20100110\bin directory +nzip and copy paste both avrdude.exe and avrdude.conf to C:\WinAVR-20100110\bin directory Assuming the recent build still doesn't support atmega164a.. You'll also have to add a definition for atmega164a in the avrdude.conf file Copy paste the atmega324P section and rename it atmega164A diff --git a/bootloader/HIDBootFlash-winGUI/HIDBootFlash.exe b/avr_bootloader/HIDBootFlash-winGUI/HIDBootFlash.exe similarity index 100% rename from bootloader/HIDBootFlash-winGUI/HIDBootFlash.exe rename to avr_bootloader/HIDBootFlash-winGUI/HIDBootFlash.exe diff --git a/bootloader/bootloadHID-master/Changelog.txt b/avr_bootloader/bootloadHID-master/Changelog.txt similarity index 100% rename from bootloader/bootloadHID-master/Changelog.txt rename to avr_bootloader/bootloadHID-master/Changelog.txt diff --git a/bootloader/bootloadHID-master/License.txt b/avr_bootloader/bootloadHID-master/License.txt similarity index 100% rename from bootloader/bootloadHID-master/License.txt rename to avr_bootloader/bootloadHID-master/License.txt diff --git a/bootloader/bootloadHID-master/Readme.txt b/avr_bootloader/bootloadHID-master/Readme.txt similarity index 100% rename from bootloader/bootloadHID-master/Readme.txt rename to avr_bootloader/bootloadHID-master/Readme.txt diff --git a/bootloader/bootloadHID-master/firmware/Makefile b/avr_bootloader/bootloadHID-master/firmware/Makefile similarity index 100% rename from bootloader/bootloadHID-master/firmware/Makefile rename to avr_bootloader/bootloadHID-master/firmware/Makefile diff --git a/bootloader/bootloadHID-master/firmware/bootloaderconfig.h b/avr_bootloader/bootloadHID-master/firmware/bootloaderconfig.h similarity index 100% rename from bootloader/bootloadHID-master/firmware/bootloaderconfig.h rename to avr_bootloader/bootloadHID-master/firmware/bootloaderconfig.h diff --git a/bootloader/bootloadHID-master/firmware/kazzo_bootloader_m164a_release.hex b/avr_bootloader/bootloadHID-master/firmware/kazzo_bootloader_m164a_release.hex similarity index 100% rename from bootloader/bootloadHID-master/firmware/kazzo_bootloader_m164a_release.hex rename to avr_bootloader/bootloadHID-master/firmware/kazzo_bootloader_m164a_release.hex diff --git a/bootloader/bootloadHID-master/firmware/main.c b/avr_bootloader/bootloadHID-master/firmware/main.c similarity index 100% rename from bootloader/bootloadHID-master/firmware/main.c rename to avr_bootloader/bootloadHID-master/firmware/main.c diff --git a/bootloader/bootloadHID-master/firmware/main.hex b/avr_bootloader/bootloadHID-master/firmware/main.hex similarity index 100% rename from bootloader/bootloadHID-master/firmware/main.hex rename to avr_bootloader/bootloadHID-master/firmware/main.hex diff --git a/bootloader/bootloadHID-master/firmware/usbconfig.h b/avr_bootloader/bootloadHID-master/firmware/usbconfig.h similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbconfig.h rename to avr_bootloader/bootloadHID-master/firmware/usbconfig.h diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/Changelog.txt b/avr_bootloader/bootloadHID-master/firmware/usbdrv/Changelog.txt similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/Changelog.txt rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/Changelog.txt diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/CommercialLicense.txt b/avr_bootloader/bootloadHID-master/firmware/usbdrv/CommercialLicense.txt similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/CommercialLicense.txt rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/CommercialLicense.txt diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/License.txt b/avr_bootloader/bootloadHID-master/firmware/usbdrv/License.txt similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/License.txt rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/License.txt diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/Readme.txt b/avr_bootloader/bootloadHID-master/firmware/usbdrv/Readme.txt similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/Readme.txt rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/Readme.txt diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/USB-ID-FAQ.txt b/avr_bootloader/bootloadHID-master/firmware/usbdrv/USB-ID-FAQ.txt similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/USB-ID-FAQ.txt rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/USB-ID-FAQ.txt diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/USB-IDs-for-free.txt b/avr_bootloader/bootloadHID-master/firmware/usbdrv/USB-IDs-for-free.txt similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/USB-IDs-for-free.txt rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/USB-IDs-for-free.txt diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/asmcommon.inc b/avr_bootloader/bootloadHID-master/firmware/usbdrv/asmcommon.inc similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/asmcommon.inc rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/asmcommon.inc diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/oddebug.c b/avr_bootloader/bootloadHID-master/firmware/usbdrv/oddebug.c similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/oddebug.c rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/oddebug.c diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/oddebug.h b/avr_bootloader/bootloadHID-master/firmware/usbdrv/oddebug.h similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/oddebug.h rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/oddebug.h diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbconfig-prototype.h b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbconfig-prototype.h similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbconfig-prototype.h rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbconfig-prototype.h diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrv.c b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrv.c similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrv.c rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrv.c diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrv.h b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrv.h similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrv.h rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrv.h diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.S b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.S similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.S rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.S diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.asm b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.asm similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.asm rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.asm diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.o b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.o similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.o rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm.o diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm12.inc b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm12.inc similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm12.inc rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm12.inc diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm128.inc b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm128.inc similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm128.inc rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm128.inc diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm15.inc b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm15.inc similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm15.inc rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm15.inc diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm16.inc b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm16.inc similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm16.inc rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm16.inc diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm165.inc b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm165.inc similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm165.inc rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm165.inc diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm18-crc.inc b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm18-crc.inc similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm18-crc.inc rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm18-crc.inc diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm20.inc b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm20.inc similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm20.inc rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbdrvasm20.inc diff --git a/bootloader/bootloadHID-master/firmware/usbdrv/usbportability.h b/avr_bootloader/bootloadHID-master/firmware/usbdrv/usbportability.h similarity index 100% rename from bootloader/bootloadHID-master/firmware/usbdrv/usbportability.h rename to avr_bootloader/bootloadHID-master/firmware/usbdrv/usbportability.h diff --git a/bootloader/bootloadHID.2012-12-08/Changelog.txt b/avr_bootloader/bootloadHID.2012-12-08/Changelog.txt similarity index 100% rename from bootloader/bootloadHID.2012-12-08/Changelog.txt rename to avr_bootloader/bootloadHID.2012-12-08/Changelog.txt diff --git a/bootloader/bootloadHID.2012-12-08/License.txt b/avr_bootloader/bootloadHID.2012-12-08/License.txt similarity index 100% rename from bootloader/bootloadHID.2012-12-08/License.txt rename to avr_bootloader/bootloadHID.2012-12-08/License.txt diff --git a/bootloader/bootloadHID.2012-12-08/Readme.txt b/avr_bootloader/bootloadHID.2012-12-08/Readme.txt similarity index 100% rename from bootloader/bootloadHID.2012-12-08/Readme.txt rename to avr_bootloader/bootloadHID.2012-12-08/Readme.txt diff --git a/bootloader/bootloadHID.2012-12-08/firmware/Makefile b/avr_bootloader/bootloadHID.2012-12-08/firmware/Makefile similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/Makefile rename to avr_bootloader/bootloadHID.2012-12-08/firmware/Makefile diff --git a/bootloader/bootloadHID.2012-12-08/firmware/bootloaderconfig.h b/avr_bootloader/bootloadHID.2012-12-08/firmware/bootloaderconfig.h similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/bootloaderconfig.h rename to avr_bootloader/bootloadHID.2012-12-08/firmware/bootloaderconfig.h diff --git a/bootloader/bootloadHID.2012-12-08/firmware/main.c b/avr_bootloader/bootloadHID.2012-12-08/firmware/main.c similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/main.c rename to avr_bootloader/bootloadHID.2012-12-08/firmware/main.c diff --git a/bootloader/bootloadHID.2012-12-08/firmware/main.hex b/avr_bootloader/bootloadHID.2012-12-08/firmware/main.hex similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/main.hex rename to avr_bootloader/bootloadHID.2012-12-08/firmware/main.hex diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbconfig.h b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbconfig.h similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbconfig.h rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbconfig.h diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/Changelog.txt b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/Changelog.txt similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/Changelog.txt rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/Changelog.txt diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/CommercialLicense.txt b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/CommercialLicense.txt similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/CommercialLicense.txt rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/CommercialLicense.txt diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/License.txt b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/License.txt similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/License.txt rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/License.txt diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/Readme.txt b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/Readme.txt similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/Readme.txt rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/Readme.txt diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/USB-ID-FAQ.txt b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/USB-ID-FAQ.txt similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/USB-ID-FAQ.txt rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/USB-ID-FAQ.txt diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/USB-IDs-for-free.txt b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/USB-IDs-for-free.txt similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/USB-IDs-for-free.txt rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/USB-IDs-for-free.txt diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/asmcommon.inc b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/asmcommon.inc similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/asmcommon.inc rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/asmcommon.inc diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/oddebug.c b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/oddebug.c similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/oddebug.c rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/oddebug.c diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/oddebug.h b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/oddebug.h similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/oddebug.h rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/oddebug.h diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbconfig-prototype.h b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbconfig-prototype.h similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbconfig-prototype.h rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbconfig-prototype.h diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrv.c b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrv.c similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrv.c rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrv.c diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrv.h b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrv.h similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrv.h rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrv.h diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm.S b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm.S similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm.S rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm.S diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm.asm b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm.asm similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm.asm rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm.asm diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm12.inc b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm12.inc similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm12.inc rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm12.inc diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm128.inc b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm128.inc similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm128.inc rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm128.inc diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm15.inc b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm15.inc similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm15.inc rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm15.inc diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm16.inc b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm16.inc similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm16.inc rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm16.inc diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm165.inc b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm165.inc similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm165.inc rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm165.inc diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm18-crc.inc b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm18-crc.inc similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm18-crc.inc rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm18-crc.inc diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm20.inc b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm20.inc similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm20.inc rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbdrvasm20.inc diff --git a/bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbportability.h b/avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbportability.h similarity index 100% rename from bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbportability.h rename to avr_bootloader/bootloadHID.2012-12-08/firmware/usbdrv/usbportability.h diff --git a/avr_bootloader/click to load v1 INLkazzo with INLretro v2.bat b/avr_bootloader/click to load v1 INLkazzo with INLretro v2.bat new file mode 100644 index 0000000..92e9584 --- /dev/null +++ b/avr_bootloader/click to load v1 INLkazzo with INLretro v2.bat @@ -0,0 +1,2 @@ +commandline\bootloadHID.exe -r ..\firmware\build_avr\avr_kazzo.hex +pause diff --git a/bootloader/commandline/Makefile b/avr_bootloader/commandline/Makefile similarity index 100% rename from bootloader/commandline/Makefile rename to avr_bootloader/commandline/Makefile diff --git a/bootloader/commandline/Makefile.windows b/avr_bootloader/commandline/Makefile.windows similarity index 100% rename from bootloader/commandline/Makefile.windows rename to avr_bootloader/commandline/Makefile.windows diff --git a/bootloader/commandline/bootloadHID.exe b/avr_bootloader/commandline/bootloadHID.exe similarity index 100% rename from bootloader/commandline/bootloadHID.exe rename to avr_bootloader/commandline/bootloadHID.exe diff --git a/bootloader/commandline/hidsdi.h b/avr_bootloader/commandline/hidsdi.h similarity index 100% rename from bootloader/commandline/hidsdi.h rename to avr_bootloader/commandline/hidsdi.h diff --git a/bootloader/commandline/main.c b/avr_bootloader/commandline/main.c similarity index 100% rename from bootloader/commandline/main.c rename to avr_bootloader/commandline/main.c diff --git a/bootloader/commandline/main.o b/avr_bootloader/commandline/main.o similarity index 100% rename from bootloader/commandline/main.o rename to avr_bootloader/commandline/main.o diff --git a/bootloader/commandline/usb-libusb.c b/avr_bootloader/commandline/usb-libusb.c similarity index 100% rename from bootloader/commandline/usb-libusb.c rename to avr_bootloader/commandline/usb-libusb.c diff --git a/bootloader/commandline/usb-windows.c b/avr_bootloader/commandline/usb-windows.c similarity index 100% rename from bootloader/commandline/usb-windows.c rename to avr_bootloader/commandline/usb-windows.c diff --git a/bootloader/commandline/usbcalls.c b/avr_bootloader/commandline/usbcalls.c similarity index 100% rename from bootloader/commandline/usbcalls.c rename to avr_bootloader/commandline/usbcalls.c diff --git a/bootloader/commandline/usbcalls.h b/avr_bootloader/commandline/usbcalls.h similarity index 100% rename from bootloader/commandline/usbcalls.h rename to avr_bootloader/commandline/usbcalls.h diff --git a/firmware/DFU_release/INL_NES_PCBv2_0N_FWv2_03_0.dfu b/firmware/DFU_release/INL_NES_PCBv2_0N_FWv2_03_0.dfu new file mode 100644 index 0000000000000000000000000000000000000000..b7de901fbcda931d0aec78ba65eb4684d4937cb5 GIT binary patch literal 20149 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 literal 0 HcmV?d00001 diff --git a/firmware/DFU_release/INLretro6_PCBv2_0_FWv2_03_0.dfu b/firmware/DFU_release/INLretro6_PCBv2_0_FWv2_03_0.dfu new file mode 100644 index 0000000000000000000000000000000000000000..35885dd7cf33fb28d08627f45ef51e246b29b27b GIT binary patch literal 21797 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 literal 0 HcmV?d00001 diff --git a/firmware/Make_avr b/firmware/Make_avr index e3e1d2a..120d007 100644 --- a/firmware/Make_avr +++ b/firmware/Make_avr @@ -30,7 +30,7 @@ help: hex: $(BUILD)/$(PROJ).hex program: $(BUILD)/$(PROJ).hex - ../bootloader/commandline/bootloadHID -r $< + ../avr_bootloader/commandline/bootloadHID -r $< dir: mkdir -p $(BUILD) diff --git a/firmware/build_avr/avr_kazzo.elf b/firmware/build_avr/avr_kazzo.elf index 52cbc366b15f893f5eaa72f61606c5103a9d7785..de16699deaa394b57a7c472c330a899f92224854 100644 GIT binary patch delta 9706 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 b`u%M(Vv_7xHaPUu9PB#;igdYlB*Xk4pT+Ud delta 10151 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 VHp@>%_UHZZtV@ztOvI<@{ufs|{x$#r literal 208488 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 T6WF)gfAPDbe=#LqP49mJ)= __HeapLimit), region RAM overflowed with stack) OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm) .ARM.attributes 0x00000000 0x28 .ARM.attributes - 0x00000000 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + 0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o .ARM.attributes - 0x0000001e 0x1b C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + 0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o .ARM.attributes - 0x00000039 0x2f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o - .ARM.attributes - 0x00000068 0x2f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o - .ARM.attributes - 0x00000097 0x2f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o - .ARM.attributes - 0x000000c6 0x2f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o - .ARM.attributes - 0x000000f5 0x2f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o - .ARM.attributes - 0x00000124 0x21 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o - .ARM.attributes - 0x00000145 0x21 C:\Users\paul\AppData\Local\Temp\ccIpVung.o + 0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o -.comment 0x00000000 0x6e - .comment 0x00000000 0x6e C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o - 0x6f (size before relaxing) - .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o - .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o - .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o - .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o +.comment 0x00000000 0x7f + .comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o + 0x80 (size before relaxing) -.debug_line 0x00000000 0x1d7e - .debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o - .debug_line 0x0000007c 0xa0a C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o - .debug_line 0x00000a86 0x70a C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o - .debug_line 0x00001190 0x4a9 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o - .debug_line 0x00001639 0x412 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o - .debug_line 0x00001a4b 0x1f7 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o - .debug_line 0x00001c42 0x49 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o - .debug_line 0x00001c8b 0xf3 C:\Users\paul\AppData\Local\Temp\ccIpVung.o +.debug_info 0x00000000 0x4cb4 + .debug_info 0x00000000 0x4c8e C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o + .debug_info 0x00004c8e 0x26 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o -.debug_info 0x00000000 0x4ae9 - .debug_info 0x00000000 0x97 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o - .debug_info 0x00000097 0x1488 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o - .debug_info 0x0000151f 0x14b3 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o - .debug_info 0x000029d2 0x11f6 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o - .debug_info 0x00003bc8 0x9dc C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o - .debug_info 0x000045a4 0x419 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o - .debug_info 0x000049bd 0x98 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o - .debug_info 0x00004a55 0x94 C:\Users\paul\AppData\Local\Temp\ccIpVung.o +.debug_abbrev 0x00000000 0x686 + .debug_abbrev 0x00000000 0x672 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o + .debug_abbrev 0x00000672 0x14 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o -.debug_abbrev 0x00000000 0xde9 - .debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o - .debug_abbrev 0x00000012 0x329 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o - .debug_abbrev 0x0000033b 0x3cd C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o - .debug_abbrev 0x00000708 0x190 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o - .debug_abbrev 0x00000898 0x316 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o - .debug_abbrev 0x00000bae 0x213 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o - .debug_abbrev 0x00000dc1 0x14 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o - .debug_abbrev 0x00000dd5 0x14 C:\Users\paul\AppData\Local\Temp\ccIpVung.o +.debug_loc 0x00000000 0x4ef7 + .debug_loc 0x00000000 0x4ef7 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o -.debug_aranges 0x00000000 0x270 +.debug_aranges 0x00000000 0x1c8 .debug_aranges - 0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + 0x00000000 0x1a8 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o .debug_aranges - 0x00000028 0x20 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o - .debug_aranges - 0x00000048 0x68 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o - .debug_aranges - 0x000000b0 0xe8 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o - .debug_aranges - 0x00000198 0x60 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o - .debug_aranges - 0x000001f8 0x38 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o - .debug_aranges - 0x00000230 0x20 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o - .debug_aranges - 0x00000250 0x20 C:\Users\paul\AppData\Local\Temp\ccIpVung.o + 0x000001a8 0x20 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o -.debug_ranges 0x00000000 0xcd0 - .debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o - .debug_ranges 0x00000020 0x838 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o - .debug_ranges 0x00000858 0x220 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o - .debug_ranges 0x00000a78 0xd8 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o - .debug_ranges 0x00000b50 0x128 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o - .debug_ranges 0x00000c78 0x58 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o +.debug_ranges 0x00000000 0xc80 + .debug_ranges 0x00000000 0xc80 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o -.debug_loc 0x00000000 0x4d12 - .debug_loc 0x00000000 0x2b56 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o - .debug_loc 0x00002b56 0xe29 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o - .debug_loc 0x0000397f 0xa3f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o - .debug_loc 0x000043be 0x564 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o - .debug_loc 0x00004922 0x3f0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o +.debug_line 0x00000000 0x17fe + .debug_line 0x00000000 0x170b C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o + .debug_line 0x0000170b 0xf3 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o -.debug_str 0x00000000 0xe46 - .debug_str 0x00000000 0x764 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o - 0x7c9 (size before relaxing) - .debug_str 0x00000764 0x22c C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o - 0x4c5 (size before relaxing) - .debug_str 0x00000990 0x1c7 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o - 0x3e2 (size before relaxing) - .debug_str 0x00000b57 0x235 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o - 0x515 (size before relaxing) - .debug_str 0x00000d8c 0xba C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o - 0x361 (size before relaxing) +.debug_str 0x00000000 0x110f + .debug_str 0x00000000 0x1096 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o + 0x11ab (size before relaxing) + .debug_str 0x00001096 0x79 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o -.debug_frame 0x00000000 0x584 - .debug_frame 0x00000000 0x30 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o - .debug_frame 0x00000030 0x13c C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o - .debug_frame 0x0000016c 0x2a0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o - .debug_frame 0x0000040c 0x108 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o - .debug_frame 0x00000514 0x70 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o +.debug_frame 0x00000000 0x54c + .debug_frame 0x00000000 0x54c C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o .stabstr 0x00000000 0x76 - .stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + .stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) diff --git a/firmware/build_stmn/inlretro_stm.elf b/firmware/build_stmn/inlretro_stm.elf index d186bdc36af064cc1cda835329d91338fa1261e7..4fecbf95018aaa69cd7333e4de46e86638f314de 100644 GIT binary patch literal 195180 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

(FL0lKZa=h} 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 literal 199180 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 __HeapLimit), region RAM overflowed with stack) OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm) .ARM.attributes 0x00000000 0x28 .ARM.attributes - 0x00000000 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + 0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o .ARM.attributes - 0x0000001e 0x1b C:\Users\paul\AppData\Local\Temp\ccst3R5x.o + 0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o .ARM.attributes - 0x00000039 0x2f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o - .ARM.attributes - 0x00000068 0x2f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o - .ARM.attributes - 0x00000097 0x2f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o - .ARM.attributes - 0x000000c6 0x2f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o - .ARM.attributes - 0x000000f5 0x21 C:\Users\paul\AppData\Local\Temp\ccMZoj0e.o - .ARM.attributes - 0x00000116 0x21 C:\Users\paul\AppData\Local\Temp\ccScmBUX.o + 0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccays3OO.o -.comment 0x00000000 0x6e - .comment 0x00000000 0x6e C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o - 0x6f (size before relaxing) - .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o - .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o - .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o +.comment 0x00000000 0x7f + .comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o + 0x80 (size before relaxing) -.debug_line 0x00000000 0x18ed - .debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccst3R5x.o - .debug_line 0x0000007c 0x835 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o - .debug_line 0x000008b1 0x6c4 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o - .debug_line 0x00000f75 0x41b C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o - .debug_line 0x00001390 0x421 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o - .debug_line 0x000017b1 0x49 C:\Users\paul\AppData\Local\Temp\ccMZoj0e.o - .debug_line 0x000017fa 0xf3 C:\Users\paul\AppData\Local\Temp\ccScmBUX.o +.debug_info 0x00000000 0x42d3 + .debug_info 0x00000000 0x42ad C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o + .debug_info 0x000042ad 0x26 C:\Users\paul\AppData\Local\Temp\ccays3OO.o -.debug_info 0x00000000 0x4014 - .debug_info 0x00000000 0x97 C:\Users\paul\AppData\Local\Temp\ccst3R5x.o - .debug_info 0x00000097 0x10fb C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o - .debug_info 0x00001192 0x141b C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o - .debug_info 0x000025ad 0xf84 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o - .debug_info 0x00003531 0x9b7 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o - .debug_info 0x00003ee8 0x98 C:\Users\paul\AppData\Local\Temp\ccMZoj0e.o - .debug_info 0x00003f80 0x94 C:\Users\paul\AppData\Local\Temp\ccScmBUX.o +.debug_abbrev 0x00000000 0x670 + .debug_abbrev 0x00000000 0x65c C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o + .debug_abbrev 0x0000065c 0x14 C:\Users\paul\AppData\Local\Temp\ccays3OO.o -.debug_abbrev 0x00000000 0xcc0 - .debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccst3R5x.o - .debug_abbrev 0x00000012 0x308 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o - .debug_abbrev 0x0000031a 0x3cd C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o - .debug_abbrev 0x000006e7 0x19f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o - .debug_abbrev 0x00000886 0x412 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o - .debug_abbrev 0x00000c98 0x14 C:\Users\paul\AppData\Local\Temp\ccMZoj0e.o - .debug_abbrev 0x00000cac 0x14 C:\Users\paul\AppData\Local\Temp\ccScmBUX.o +.debug_loc 0x00000000 0x445f + .debug_loc 0x00000000 0x445f C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o -.debug_aranges 0x00000000 0x228 +.debug_aranges 0x00000000 0x198 .debug_aranges - 0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccst3R5x.o + 0x00000000 0x178 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o .debug_aranges - 0x00000028 0x20 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o - .debug_aranges - 0x00000048 0x68 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o - .debug_aranges - 0x000000b0 0xc8 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o - .debug_aranges - 0x00000178 0x70 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o - .debug_aranges - 0x000001e8 0x20 C:\Users\paul\AppData\Local\Temp\ccMZoj0e.o - .debug_aranges - 0x00000208 0x20 C:\Users\paul\AppData\Local\Temp\ccScmBUX.o + 0x00000178 0x20 C:\Users\paul\AppData\Local\Temp\ccays3OO.o -.debug_ranges 0x00000000 0xaf8 - .debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccst3R5x.o - .debug_ranges 0x00000020 0x6b8 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o - .debug_ranges 0x000006d8 0x228 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o - .debug_ranges 0x00000900 0xb8 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o - .debug_ranges 0x000009b8 0x140 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o +.debug_ranges 0x00000000 0xab0 + .debug_ranges 0x00000000 0xab0 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o -.debug_loc 0x00000000 0x4133 - .debug_loc 0x00000000 0x241b C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o - .debug_loc 0x0000241b 0xdd5 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o - .debug_loc 0x000031f0 0x8b8 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o - .debug_loc 0x00003aa8 0x68b C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o +.debug_line 0x00000000 0x14eb + .debug_line 0x00000000 0x13f8 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o + .debug_line 0x000013f8 0xf3 C:\Users\paul\AppData\Local\Temp\ccays3OO.o -.debug_str 0x00000000 0xcdf - .debug_str 0x00000000 0x6c2 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o - 0x715 (size before relaxing) - .debug_str 0x000006c2 0x235 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o - 0x4ce (size before relaxing) - .debug_str 0x000008f7 0x18e C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o - 0x3a9 (size before relaxing) - .debug_str 0x00000a85 0x25a C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o - 0x546 (size before relaxing) +.debug_str 0x00000000 0xfc0 + .debug_str 0x00000000 0xf47 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o + 0x104a (size before relaxing) + .debug_str 0x00000f47 0x79 C:\Users\paul\AppData\Local\Temp\ccays3OO.o -.debug_frame 0x00000000 0x500 - .debug_frame 0x00000000 0x34 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o - .debug_frame 0x00000034 0x12c C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o - .debug_frame 0x00000160 0x27c C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o - .debug_frame 0x000003dc 0x124 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o +.debug_frame 0x00000000 0x4d8 + .debug_frame 0x00000000 0x4d8 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o .stabstr 0x00000000 0x76 - .stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + .stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) diff --git a/firmware/include_stm/nokeep.ld b/firmware/include_stm/nokeep.ld index b508cf0..b891061 100644 --- a/firmware/include_stm/nokeep.ld +++ b/firmware/include_stm/nokeep.ld @@ -97,7 +97,7 @@ SECTIONS /* when created there was about 132 Bytes of free space here */ /* fwupdate main needs to be in a fixed location */ - . = 0x0780; + . = 0x0770; *(.fw_up_main) /* when created there was about 32Bytes free space here */ @@ -107,7 +107,11 @@ SECTIONS . = 0x0800; /*update the location counter to the 3rd KByte */ - /* reset handler fixed to 0x08000800 + *(.appver) /* 4 Bytes characters ie: "AV01" */ + /* can't get this to work right now, just manually add to binary before releasing.. */ + + . = 0x0804; + /* reset handler fixed to 0x08000804 * that way the vector table should always be accurate */ *(.reset_handler) @@ -184,7 +188,7 @@ SECTIONS *(.rodata*) *(.eh_frame*) - } > FLASH + } > FLASH = 0xFF /* fill with 0xFF 'erased' */ .ARM.extab : { @@ -268,7 +272,16 @@ SECTIONS *(.fastrun) /*Placing functions in .fastrun section in RAM */ /* This kind of breaks arm-none-eabi-size look at .map file __data_end__ for actual data size*/ /* Really size is just combining text & data together */ - + /* use a function attr like the following: + * #define RAMFUNC __attribute__ ((section (".fastrun"), noinline, noclone)) + * RAMFUNC void myramfunction(){ code executes from ram } + * or for assembly functions: .section ".ramfunctions" + * the noinline is important so your function doesn't get inline optimized into + * or so that clones of your function don't end up in different places/sections + * whatever flash code is exectuting it. However if you have a ram functions + * calling other ram functions you may not need noinline and can benefit from + * it's optimization + * / *(.jcr) . = ALIGN(4); diff --git a/firmware/source/bootload.c b/firmware/source/bootload.c index 721d4a7..e49ef7b 100644 --- a/firmware/source/bootload.c +++ b/firmware/source/bootload.c @@ -25,29 +25,109 @@ * Rtn: SUCCESS if opcode found, error if opcode not present or other problem. */ -uint32_t addrh; +uint16_t addrh; +uint16_t *addr_ptr; +typedef void (*pFunction)(void); uint8_t bootload_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rdata ) { +#define RD_LEN 0 +#define RD0 1 +#define RD1 2 +#define RD2 3 +#define RD3 4 + +#define BYTE_LEN 1 +#define HWORD_LEN 2 +#define WORD_LEN 4 + + pFunction JumpToApplication; + switch (opcode) { #ifdef STM_CORE - case JUMP_BL: jump_to_bootloader(); break; + //case JUMP_BL: jump_to_bootloader(); break; //device won't respond after this point so actually expect an error to result case LOAD_ADDRH: addrh = operand; break; - case JUMP_ADDR: jump2addr((addrh<<16) | (operand)); break; + + case JUMP_ADDR: //jump2addr((addrh<<16) | (operand)); break; + JumpToApplication = (void (*)(void)) ((addrh<<16|operand)); //Base of flash + //JumpToApplication = (void (*)(void)) (*((uint32_t *) ((0x1FFFC400 + 4)))); //jump to vector + JumpToApplication(); + break; //device may not respond depending on the address/function being jumped to - case PREP_FWUPDATE: //while we are directly jumping to fwupdate section - //it should be okay if it's in a fixed location - return fwupdate_forever(); break; - //this function hijacked the stack frame to steal execution - //after returing from the current USB ISR - //it returns SUCCESS/ERR depending on if it found and modified - //the stack frame successfully - //leaves main application code for good - //will respond to usb interrupts, but are directed to fwupdater + case PREP_FWUPDATE: + //while we are directly jumping to fwupdate section + //it should be okay since it's in a fixed location + return fwupdate_forever(); break; + //this function hijacked the stack frame to steal execution + //after returing from the current USB ISR + //it returns SUCCESS if it found and modified + //the stack frame successfully + //if it didn't find the stack frame it probably exceeded SRAM + //space and caused a hardfault. + //Once the USB ISR is completed, exectution left main application code for good + //will respond to usb interrupts, but are directed to fwupdater + + case SET_PTR_HI: + addr_ptr = (uint16_t*) ((((uint32_t)addr_ptr) & 0x0000FFFF) | (operand<<16)); + break; + + case SET_PTR_LO: + addr_ptr = (uint16_t*) ((((uint32_t)addr_ptr) & 0xFFFF0000) | (operand)); + break; + + case GET_PTR: + //update ptr with offset + rdata[RD_LEN] = WORD_LEN; + rdata[RD0] = (uint32_t)addr_ptr; + rdata[RD1] = ((uint32_t)addr_ptr)>>8; + rdata[RD2] = ((uint32_t)addr_ptr)>>16; + rdata[RD3] = ((uint32_t)addr_ptr)>>24; + break; + + case RD_PTR_OFFSET: + //use offset from current pointer but don't change it + rdata[RD_LEN] = HWORD_LEN; + rdata[RD0] = addr_ptr[operand]; + rdata[RD1] = (addr_ptr[operand])>>8; + break; + + case WR_PTR_OFFSET: + //use offset from current pointer but don't change it + addr_ptr[miscdata] = operand; + break; + + case RD_PTR_OFF_UP: + //update ptr with offset + addr_ptr += operand; + rdata[RD_LEN] = HWORD_LEN; + rdata[RD0] = *addr_ptr; + rdata[RD1] = (*addr_ptr)>>8; + break; + + case WR_PTR_OFF_UP: + //update ptr with miscdata + addr_ptr += miscdata; + //write operand to address that's being pointed to + *addr_ptr = operand; + break; + + //can't get this to go where I want 0x08000800 + //so for now I'll just put it there manually post-build + //can use the pointer to read 4bytes at 0x08000800 + //which is the begining of application code space + //should include ascii "AV00" with the digits for version +// case GET_APP_VER: +// rdata[RD_LEN] = WORD_LEN; +// rdata[RD0] = app_version[0]; +// rdata[RD1] = app_version[1]; +// rdata[RD2] = app_version[2]; +// rdata[RD3] = app_version[3]; +// break; + default: //opcode doesn't exist return ERR_UNKN_BOOTLOAD_OPCODE; @@ -58,58 +138,58 @@ uint8_t bootload_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8 } -void jump_to_bootloader() -{ - -#ifdef STM_INL6 -// 070C6 jump to: 0x1FFFC519 -// 070RB jump to: 0x1FFFCBC1 - - - asm( - //"ldr pc, boot_addr\n\t" -// "ldr r0, =0x12345678\n\t" -// "mov r0, r0\n\t" -// "mov r0, r0\n\t" - //".p2align 2\n\t" - //"boot_addr:\n\t" - //".word 0x1FFFC519" - "ldr r0, [pc, #8]\n\t"// @ remember pc is 8 bytes ahead - "mov r13, r0\n\t" //load main stack pointer - "ldr r0, [pc, #8]\n\t"// @ remember pc is 8 bytes ahead - //"mov lr, r0\n\t" - //"bx lr \n\t"// @ function return - //"bkpt\n\t" - "mov r0, r0\n\t" - //"mov pc, r0\n\t" - "bx r0\n\t" - //"bootaddr\n\t"// - //".word 0x1FFFC519" //070C6 - ".p2align 2\n\t" - ".word 0x20001278\n\t" //C6 MSP @ reset -// ".word 0x00010002\n\t" - //".word 0x00030004\n\t" - //".word 0x1FFFC519\n\t" //C6 AN2606 - ".word 0x1FFFCAC5\n\t" //C6 BL reset vector - //".word 0x1FFFCBC1\n\t" //stlink PC when connecting with BL grounded - //".word 0x1FFFC919\n\t" //best guess based on C6 - //".word 0x1FFFCBC1\n\t" //bootloader reset vector - ".word 0x00050006\n\t" - ".word 0x00070008\n\t" -// ".word 0x1FFFC919\n\t" -// ".word 0x1FFFC919\n\t" -// ".word 0x1FFFC919\n\t" -// ".word 0x1FFFC919\n\t" -// ".word 0x1FFFC919\n\t" - ".word 0x1FFFC919" - //".word 0x1FFFCBC1" - ); -bootaddr: - asm( - ".word 0xDEADBEEF" - ); - -#endif - - -} +//void jump_to_bootloader() +//{ +// +//#ifdef STM_INL6 +//// 070C6 jump to: 0x1FFFC519 +//// 070RB jump to: 0x1FFFCBC1 +// +// +// asm( +// //"ldr pc, boot_addr\n\t" +//// "ldr r0, =0x12345678\n\t" +//// "mov r0, r0\n\t" +//// "mov r0, r0\n\t" +// //".p2align 2\n\t" +// //"boot_addr:\n\t" +// //".word 0x1FFFC519" +// "ldr r0, [pc, #8]\n\t"// @ remember pc is 8 bytes ahead +// "mov r13, r0\n\t" //load main stack pointer +// "ldr r0, [pc, #8]\n\t"// @ remember pc is 8 bytes ahead +// //"mov lr, r0\n\t" +// //"bx lr \n\t"// @ function return +// //"bkpt\n\t" +// "mov r0, r0\n\t" +// //"mov pc, r0\n\t" +// "bx r0\n\t" +// //"bootaddr\n\t"// +// //".word 0x1FFFC519" //070C6 +// ".p2align 2\n\t" +// ".word 0x20001278\n\t" //C6 MSP @ reset +//// ".word 0x00010002\n\t" +// //".word 0x00030004\n\t" +// //".word 0x1FFFC519\n\t" //C6 AN2606 +// ".word 0x1FFFCAC5\n\t" //C6 BL reset vector +// //".word 0x1FFFCBC1\n\t" //stlink PC when connecting with BL grounded +// //".word 0x1FFFC919\n\t" //best guess based on C6 +// //".word 0x1FFFCBC1\n\t" //bootloader reset vector +// ".word 0x00050006\n\t" +// ".word 0x00070008\n\t" +//// ".word 0x1FFFC919\n\t" +//// ".word 0x1FFFC919\n\t" +//// ".word 0x1FFFC919\n\t" +//// ".word 0x1FFFC919\n\t" +//// ".word 0x1FFFC919\n\t" +// ".word 0x1FFFC919" +// //".word 0x1FFFCBC1" +// ); +//bootaddr: +// asm( +// ".word 0xDEADBEEF" +// ); +// +//#endif +// +// +//} diff --git a/firmware/source/main.c b/firmware/source/main.c index 15113e5..276dc63 100644 --- a/firmware/source/main.c +++ b/firmware/source/main.c @@ -55,6 +55,39 @@ int main(void) #ifdef STM_CORE + //INDEPENDENT WATCH DOG TIMER + //has it's own clock circuit so even if the main clock fails the WDT + //will keep running, it's not as accurate as the System Window WDT + //but we don't care about accuracy for our needs. + // + //I can't make sense of the window option, so let's not bother with it.. + // + //Configuring the IWDG when the window option is disabled + // When the window option it is not used, the IWDG can be configured as follows: + // 1.Enable the IWDG by writing 0x0000 CCCC in the IWDG_KR register. +#define wdt_enable() IWDG->KR = 0x0000CCCC + wdt_enable(); + // 2. Enable register access by writing 0x00005555 in the IWDG_KR register. + IWDG->KR = 0x00005555; + //After this point the IWDG timer can NEVER be shut off, except via reset.. + // 3. Write the IWDG prescaler by programming IWDG_PR from 0 to 7. + // default is zero divider / 4 + // 40Khz clock input to prescaler + // divided by 4 = 10Khz + IWDG->PR = 2; // divided by 16 = 2.5Khz + // 4. Write the reload register (IWDG_RLR). + //12bit value that gets loaded into WDcounter each time counter is refreshed + //10Khz clock -> 1sec, need a value of 10,000 = 0x2710 too big + //12bit counter has max value of 4095 + //2.5Khz clock -> 1sec, need value of 2500 ~= 2560 = 0xA00 + IWDG->RLR = 0x0A00; + // 5. Wait for the registers to be updated (IWDG_SR = 0x00000000). + while( IWDG->SR ) { /* forever */ } + // 6. Refresh the counter value with IWDG_RLR (IWDG_KR = 0x0000 AAAA) +#define wdt_reset() IWDG->KR = 0x0000AAAA + wdt_reset(); + //call this function atleast once a second to keep the device from resetting + //remap system memory (including vector table) // SYSCFG->CFGR1 = 0x00000002; //boot value (BOOT1:0 = 0b10 // SYSCFG->CFGR1 = 0x00000001; //map sysmem bootloader to 0x00000000 @@ -115,7 +148,6 @@ int main(void) //setup user switch as input - #endif //intialize i/o and LED to pullup state @@ -145,10 +177,10 @@ int main(void) //================= while (1) { -#ifdef AVR_CORE //pet the watch doggie to keep him happy wdt_reset(); +#ifdef AVR_CORE //must call at regular intervals no longer than 50msec //keeps 8Byte EP buffer moving from what I understand usbPoll(); diff --git a/firmware/source_stm_only/fwupdate.c b/firmware/source_stm_only/fwupdate.c index ee61c3f..d88bddd 100644 --- a/firmware/source_stm_only/fwupdate.c +++ b/firmware/source_stm_only/fwupdate.c @@ -239,6 +239,7 @@ FWUPDATE_NOIN uint16_t usb_fwupdate_setup(uint8_t data[8]) static uint16_t rv16[RETURN_BUFF_SIZE/2]; uint8_t *rv = (uint8_t*)rv16; + //create a usbMsgPtr variable from the stack which we can use convienently //but then at end of the function we'll need to copy the value over to usb_buff usbMsgPtr_H/L usbMsgPtr_t usbMsgPtr; @@ -277,9 +278,10 @@ FWUPDATE_NOIN uint8_t usb_fwupdate_write(uint8_t *data, uint8_t len) //and it shouldn't change FWUPMAIN uint8_t fwupdate_forever() { + //need to turn off any interrupt sources except USB - //TODO turn off WDT + //Cannot turn off the WDT not possible! We must keep petting him! //update usb function pointers to fwupdate functions //this file is compiled at same time as the the setup/write functions @@ -378,10 +380,15 @@ FWUPMAIN uint8_t fwupdate_forever() //if fwupdate is done, intitate system reset //maybe it's safer to have the user do this by unpluggig the device..? + //pet watchdog + IWDG->KR = 0x0000AAAA; + //Couldn't get this to work for some reason... - //if (usbfuncwrite == RESETME ) { - // SCB->AIRCR = 0x05FA0004; - //} +// if (usbfuncwrite == RESETME ) { +// SCB->AIRCR = 0x05FA0004; +// } + + asm( "b fwupdateloop\n" diff --git a/firmware/source_stm_only/usb_descriptors.h b/firmware/source_stm_only/usb_descriptors.h index ff0563a..c52907a 100644 --- a/firmware/source_stm_only/usb_descriptors.h +++ b/firmware/source_stm_only/usb_descriptors.h @@ -46,7 +46,15 @@ USBDESC const uint8_t device_desc[DEVICE_DESC_LEN] = { // 12 bcdDevice 2 BCD Device Release Number //0x00, 0x02, early development version //0x01, 0x02, //first public release 7SEP2018 - 0x02, 0x02, //second public release 16NOV2018 + //0x02, 0x02, //second public release 16NOV2018 + 0x03, 0x02, //third public release 30NOV2018 + //v2.3 is first to contain switchless USB firmware updates + //application version numbers also included in this release + //application version are meant to tack onto end of usb version + //application version 0 is being released with this build + //so we'll be at v2.3.0 application versions is expected to + //increment while maintaining usb/fwupater v2.3 + // 14 iManufacturer 1 Index Index of Manufacturer String Descriptor 0x01, // 15 iProduct 1 Index Index of Product String Descriptor diff --git a/host/scripts/app/fwupdate.lua b/host/scripts/app/fwupdate.lua index 68246c6..23e4586 100644 --- a/host/scripts/app/fwupdate.lua +++ b/host/scripts/app/fwupdate.lua @@ -4,10 +4,13 @@ local fwupdate = {} -- import required modules local dict = require "scripts.app.dict" +local help = require "scripts.app.help" -- file constants -- local functions + + local function erase_main() --dict.fwupdate("ERASE_1KB_PAGE", 2) --page 0 & 1 (first 2KByte) are forbidden @@ -40,47 +43,47 @@ end local function update_firmware(newbuild) - print("updating") + local error = false + --open new file first, don't bother continuing if can't find it. file = assert(io.open(newbuild, "rb")) - --TODO verify the first 2KByte match, don't continue if not.. + --TODO read the fwupdater & app version from the provided file + --compare to current device and determine if they're compatible + --test let's tinker with SRAM + dict.bootload("SET_PTR_HI", 0x0800) + dict.bootload("SET_PTR_LO", 0x0800) --application version 0x08000800 "AV00" + local av = dict.bootload("RD_PTR_OFFSET") + local ver = dict.bootload("RD_PTR_OFFSET",1) + local avstring = string.format("%s%s%s%s", string.char(av&0x00FF), string.char(av>>8), + string.char(ver&0x00FF), string.char(ver>>8)) - --enter fwupdate mode - dict.bootload("PREP_FWUPDATE") + if avstring == "AV00" then + print("application version:", avstring) + else + print("app version", avstring, "unknown, may need to update to firmware v2.3 or later using STmicro dfuse") + end - --now the device will only respond to FWUPDATE dictionary commands + + --verify the first 2KByte match, don't continue if not.. + --use the bootload dictionary to complete this + --want to wait to enter firmware updater - --erase 30KByte of application code - erase_main() - - --Set FLASH->AR to beginging of application section - --this can be done be re-erasing it.. - --maybe we could have skipped page 2 in erase_main - --or have erase_main count down.. - dict.fwupdate("ERASE_1KB_PAGE", 2) - rv = dict.fwupdate("GET_FLASH_ADDR") - print("flash addr:", string.format("%X", rv) ) - print("\n"); + --set bootloader 16bit pointer to start of flash + dict.bootload("SET_PTR_HI", 0x0800) + dict.bootload("SET_PTR_LO", 0x0000) + local offset = 0 --first read has no offset --advance the file past first 2KByte local buffsize = 1 local byte, data local byte_num = 0 - for byte in file:lines(buffsize) do - data = string.unpack("B", byte, 1) - --print(string.format("%X", data)) - byte_num = byte_num + 1 - if byte_num == 2048 then break end - end - - local offset = 0 local readdata local data_l - buffsize = 1 --2 bytes at a time - print("Writting half word at at time, but it's not much data..") - while byte_num < (32*1024) do + + print("Verifing first 2KByte of updater..") + while byte_num < (2*1024) do --read next byte from the file and convert to binary --gotta be a better way to read a half word (16bits) at a time but don't care right now... @@ -90,99 +93,125 @@ local function update_firmware(newbuild) else --should only have to make this check for lower byte --binary file should be even - print("end of file") + print("There's a problem, file provided is smaller than 2KB fwupdater..") + --TODO test this + error = true break end byte_str = file:read(buffsize) data = string.unpack("B", byte_str, 1) data = (data<<8)+data_l - -- print("writting:", string.format("%X", data), "addr:", string.format("%X", byte_num)) - if( (byte_num % (4*1024)) == 0 ) then - print("flashing KB", byte_num/1024) + if (true) then + --both these options work, but the later is limited to reading 64KByte space + readdata = dict.bootload("RD_PTR_OFF_UP", offset) + --readdata = dict.bootload("RD_PTR_OFFSET", byte_num>>1) --shift by one 16bit read + + -- print("read data:", string.format("%X", readdata) ) + if readdata ~= data then + print("\n\nERROR!!!! verifying byte number", help.hex(byte_num), + " to flash expected:", help.hex(data), "was:", help.hex(readdata)) + print("exiting because it's not safe to proceed...") + print("no changes to device flash were made\n\n") + + error = true + break + --else + -- print("verified byte number", help.hex(byte_num), + -- " of flash ", help.hex(data), help.hex(readdata)) + end end - --write the data - dict.fwupdate("WR_HWORD", data, offset) - --- if (verify) then --- readdata = dict.fwupdate("READ_FLASH", byte_num, 0x00) --- print("read data:", string.format("%X", rv) ) --- if readdata ~= data then --- print("ERROR flashing byte number", byte_num, " to flash ", data, readdata) --- end --- end - offset = 1 --this is zero for first byte, but one for all others.. byte_num = byte_num + 2 end - --]] --- dict.fwupdate("WR_HWORD", 0xCC33, 0x00) --- rv = dict.fwupdate("GET_FLASH_ADDR") --- print("flash addr:", string.format("%X", rv) ) --- rv = dict.fwupdate("GET_FLASH_DATA") --- print("flash data:", string.format("%X", rv) ) --- print("\n"); --- print("\n"); --- --- dict.fwupdate("WR_HWORD", 0x1111, 0x01) --- rv = dict.fwupdate("GET_FLASH_ADDR") --- print("flash addr:", string.format("%X", rv) ) --- rv = dict.fwupdate("GET_FLASH_DATA") --- print("flash data:", string.format("%X", rv) ) --- print("\n"); --- --- dict.fwupdate("WR_HWORD", 0x2222, 0x01) --- rv = dict.fwupdate("GET_FLASH_ADDR") --- print("flash addr:", string.format("%X", rv) ) --- rv = dict.fwupdate("GET_FLASH_DATA") --- print("flash data:", string.format("%X", rv) ) --- print("\n"); --- --- dict.fwupdate("WR_HWORD", 0x4444, 0x02) --- rv = dict.fwupdate("GET_FLASH_ADDR") --- print("flash addr:", string.format("%X", rv) ) --- rv = dict.fwupdate("GET_FLASH_DATA") --- print("flash data:", string.format("%X", rv) ) --- print("\n"); --- --- dict.fwupdate("WR_HWORD", 0x7777, 0x03) --- rv = dict.fwupdate("GET_FLASH_ADDR") --- print("flash addr:", string.format("%X", rv) ) --- rv = dict.fwupdate("GET_FLASH_DATA") --- print("flash data:", string.format("%X", rv) ) --- print("\n"); --- --- dict.fwupdate("WR_HWORD", 0xAAAA, 0x10) --- rv = dict.fwupdate("GET_FLASH_ADDR") --- print("flash addr:", string.format("%X", rv) ) --- rv = dict.fwupdate("GET_FLASH_DATA") --- print("flash data:", string.format("%X", rv) ) --- print("\n"); --- --- dict.fwupdate("WR_HWORD", 0xBBBB, 0x20) --- rv = dict.fwupdate("GET_FLASH_ADDR") --- print("flash addr:", string.format("%X", rv) ) --- rv = dict.fwupdate("GET_FLASH_DATA") --- print("flash data:", string.format("%X", rv) ) --- print("\n"); --- ----- dict.fwupdate("LOCK_FLASH") --- --- rv = dict.fwupdate("READ_FLASH", 0x0000, 0x00) --- print("read data:", string.format("%X", rv) ) --- --- rv = dict.fwupdate("READ_FLASH", 0x053e, 0x00) --- print("read data:", string.format("%X", rv) ) --- --- rv = dict.fwupdate("READ_FLASH", 0x791a, 0x00) --- print("read data:", string.format("%X", rv) ) + if (not error) then + print("\nSuccessfully verified first 2KB of provided file") + print("matches the device's firmware updater section\n") + end + + --enter fwupdate mode + dict.bootload("PREP_FWUPDATE") + + --now the device will only respond to FWUPDATE dictionary commands + + --erase 30KByte of application code + if (not error) then + erase_main() + end + + --Set FLASH->AR to beginging of application section + --this can be done be re-erasing it.. + --maybe we could have skipped page 2 in erase_main + --or have erase_main count down.. + if (not error) then + dict.fwupdate("ERASE_1KB_PAGE", 2) + print("flash addr:", help.hex(dict.fwupdate("GET_FLASH_ADDR"))) + print("\n"); + end + + + offset = 0 --first write has no offset + + if (not error) then + print("Updating device main application flash..") + while byte_num < (32*1024) do + + --read next byte from the file and convert to binary + --gotta be a better way to read a half word (16bits) at a time but don't care right now... + byte_str = file:read(buffsize) + if byte_str then + data_l = string.unpack("B", byte_str, 1) + else + --should only have to make this check for lower byte + --binary file should be even + print("end of file") + break + end + byte_str = file:read(buffsize) + data = string.unpack("B", byte_str, 1) + data = (data<<8)+data_l + + if( (byte_num % (4*1024)) == 0 ) then + print("flashing KB", byte_num/1024) + end + + --print("writting:", string.format("%X", data), "addr:", string.format("%X", byte_num)) + + --write the data + dict.fwupdate("WR_HWORD", data, offset) + + if (true) then + readdata = dict.fwupdate("READ_FLASH", byte_num, 0x00) + -- print("read data:", string.format("%X", readdata) ) + if readdata ~= data then + print("\n\nERROR!!!! flashing byte number", help.hex(byte_num), + " to flash expected:", help.hex(data), "was:", help.hex(readdata)) + print("exiting before causing more damage...\n\n") + error = true + break + --else + -- print("verified byte number", help.hex(byte_num), + -- " to flash ", help.hex(data), help.hex(readdata)) + end + end + + offset = 1 --this is zero for first write, but one for all others.. + byte_num = byte_num + 2 + end + end + + if (not error) then + print("\nSuccessfully updated the device firmware!") + end --close file assert(file:close()) - print("\n\n DONE updating flash. \n\n Reseting device \n\n IGNORE the error that comes next.. \n\n") + print("\n\n DONE, Reseting device \n\n IGNORE the errors that comes next.. \n\n") + + --TODO maybe don't reset if we got an error, allow for correction while fwupdate still has control..? dict.fwupdate("RESET_DEVICE") --write build to flash diff --git a/host/scripts/inlretro.lua b/host/scripts/inlretro.lua index f11cd1c..1de3aca 100644 --- a/host/scripts/inlretro.lua +++ b/host/scripts/inlretro.lua @@ -89,7 +89,7 @@ function main () -- ===================================================== -- USERS: set cart_console to the to point to the mapper script you would like to use here. -- ===================================================== - --local cart_console = "NES" --includes Famicom + local cart_console = "NES" --includes Famicom --local cart_console = "SNES" --local cart_console = "SEGA" --local cart_console = "N64" @@ -148,7 +148,14 @@ function main () --Firmware update testing - fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin") + --active development path (based on makefile in use) + --fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin") + + --released INL6 path (big square boards) + fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV00.bin") + + --released INL_N path (smaller NESmaker boards) + --fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV00.bin") -- debug = true diff --git a/shared/shared_dict_bootload.h b/shared/shared_dict_bootload.h index 3ee4728..1422aef 100644 --- a/shared/shared_dict_bootload.h +++ b/shared/shared_dict_bootload.h @@ -12,18 +12,76 @@ // BOOTLOAD DICTIONARY // // opcodes contained in this dictionary must be implemented in firmware/source/bootload.c +// these opcodes are currently only defined for STM32 devices +// AVR devices use their own dedicated & entirely separate bootloader handled via switch // //============================================================================================= //============================================================================================= //BOOTLOAD opcodes -#define JUMP_BL 1 //jump to the bootloader -#define LOAD_ADDRH 2 //upper address of jump +//could never get this to work so just going to cut it out +//#define JUMP_BL 1 //jump to the bootloader + +#define LOAD_ADDRH 2 //upper address half word used for various functions #define JUMP_ADDR 3 //jump to address upper 16bit provided previous opcode #define PREP_FWUPDATE 4 //leave main application and sets up for fwupdate +// POINTER READ/WRITE ACCESS +// With great power comes great responsibility +// these opcodes perform direct read/write access of the STM32 address space +// you can litterally read/write any address +// accessing restricted areas will cause hardfaults +// don't think it's really possible to brick the device using any of these +// worst case you could corrupt flash if you halfway know what you're doing +// so long as you don't mess up the option bytes to disable the BOOT pin +// you'll be able to recover the device using bootloader jumper/switch +// via stmicro dfuse demo + +// this could actually be pretty handy for mcu debugging. +// allowing for reading of registers, memory, etc between dictionary calls +// +// TODO for this use including AVR support is actually a good idea +// but need to be extra careful there as bricking an AVR could +// permanently brick it to where not even an AVR programmer could save it +// atleast the mcu socketed.. Bricking it would be difficult to do accidentally. +// More of a concern if one were tinkering with fuses and such. +// Don't feel like learning the AVR memory map enough to add this support +// at the moment. Perhaps much of the ARM code will compile and work fine +// on the AVR..? + +//operand provides 16bit value for RD/WR commands below +#define SET_PTR_HI 5 +#define SET_PTR_LO 6 +#define GET_PTR 7 //RL=6 + +//ALL OFFSETS ARE INTERPRETED AT POSITIVE UNSIGNED! +//read 16bit value from memory location being pointed to +//operand provides offset from current pointer, but doesn't modify the pointer +#define RD_PTR_OFFSET 8 //RL=4 0-error, 1-len, 2-LSB, 3-MSB +//operand provides 16bit value to be written, miscdata provides offset +#define WR_PTR_OFFSET 9 + +//operand provides 16bit offset which is added to ptr before access +//then reads from that address +#define RD_PTR_OFF_UP 10 //RL=4 0-error, 1-len, 2-LSB, 3-MSB + +//miscdata provide 8bit offset which is added to ptr before access +//operand is the 16bit value which is written to memory location being pointed to +#define WR_PTR_OFF_UP 11 + +//application code version +//this is updated more frequently than the USB firmware version +//#define GET_APP_VER 12 //RL=3 0-error, 1-len, 2-version +//just set pointer to 0x08000800 and read 4 bytes for now + + //APPLICATION VERSION NUMBERS + //#define APP_VERSION "AV00" //released with usb firmware v2.3 + //main update was addition of usb firmware updater + //also added the bootloader pointer memory access + //include ram functions & starting to have NES flash algos return data + #endif