Changeset - b2cb29d690a8
[Not reviewed]
cortex-f0
0 2 1
Ethan Zonca - 10 years ago 2015-06-05 21:07:06
ez@ethanzonca.com
Added support for soft-entering and exiting DFU bootloader
3 files changed with 13 insertions and 20 deletions:
0 comments (0 inline, 0 general)
display.c
Show inline comments
 
@@ -80,64 +80,53 @@ void display_process(therm_settings_t* s
 

	
 
                case 1:
 
                {
 
                    ssd1306_DrawString("-> setup    ", 1, 40);
 
                } break;
 

	
 
                case 0:
 
                {
 
                    ssd1306_DrawString("-> reset    ", 1, 40);
 
                } break;
 
            }
 

	
 
            // Button handler
 
            if(SW_BTN_PRESSED) {
 
                switch(goto_mode) {
 
                    case 2:
 
                        status->state = STATE_PREHEAT_BREW;
 
                        break;
 
                    case 1:
 
                        status->state = STATE_SETP;
 
                        break;
 
                    case 0:
 
                    {
 
                        ssd1306_clearscreen();
 
                        ssd1306_DrawString("Entering Bootloader", 1, 0);
 
                        ssd1306_DrawString("(hopefully)", 2, 0);
 
                        HAL_Delay(1000);
 
                        bootloader_enter();
 

	
 
/*
 
                        HAL_RCC_DeInit();
 
                        SysTick->CTRL = 0;
 
                        SysTick->LOAD = 0;
 
                        SysTick->VAL = 0;
 
                        __set_PRIMASK(1);
 
                        __set_MSP(0x200010000);
 
                        *((unsigned long *)0x200017F0) = 0xDEADBEEF; // 6KB STM32F042
 
                        NVIC_SystemReset();
 
*/
 
                        status->state = STATE_IDLE;
 
                        ssd1306_DrawString("Bootloader Entered", 0, 0);
 
                        ssd1306_DrawString("Device won't boot", 2, 0);
 
                        ssd1306_DrawString("until reflashed!", 3, 0);
 
                        bootloader_enter(); // Resets into bootloader
 
                        status->state = STATE_IDLE; // Just in case
 
                    } break;
 

	
 
                    default:
 
                        status->state = STATE_PREHEAT_BREW;
 
                }
 
            }
 
            else if(SW_UP_PRESSED && goto_mode < 2) {
 
                goto_mode++;
 
            }
 
            else if(SW_DOWN_PRESSED && goto_mode > 0) {
 
                goto_mode--;
 
            }
 

	
 

	
 
            // Event Handler
 
            // N/A
 

	
 
        } break;
 

	
 
        case STATE_SETP:
 
        {
 
            // Write text to OLED
 
            // [ therm :: set p ]
 
            // [ p = 12         ]
 
@@ -484,48 +473,49 @@ void display_process(therm_settings_t* s
 
		save_setpoints(&set); // TODO: Check for mod
 
            }
 
            else {
 
                user_input(&set->setpoint_steam);
 
            }
 

	
 
            // Event Handler
 
            // N/A
 
 
 
        } break;
 

	
 
        case STATE_TC_ERROR:
 
        {
 
            // Write text to OLED
 
            // [ therm : ready to steam ]
 
            // [ 30 => 120 C            ]
 
            ssd1306_DrawString("Error:", 0, 0);
 

	
 
            if(status->tc_errno == 1)
 
                ssd1306_DrawString("#1, Check Sensor", 1, 0);
 
            else if(status->tc_errno == 4)
 
                ssd1306_DrawString("#4, Check Sensor", 1, 0);
 
            else
 
                ssd1306_DrawString("#?, Unknown Error", 1, 0);
 
            ssd1306_DrawString("                    ", 2, 0);
 

	
 
            ssd1306_DrawString("Press -> to ignore", 3, 0);
 

	
 
            // Button handler
 
            if(SW_BTN_PRESSED) {
 
                status->state = STATE_IDLE;
 
            }
 
            else if(SW_RIGHT_PRESSED) {
 
                set->ignore_tc_error = 1;
 
                status->state = STATE_IDLE;
 
            }
 
            // Event Handler
 
            // Maybe handle if TC is plugged in
 
            // N/A
 
 
 
        } break;
 

	
 
        // Something is terribly wrong
 
        default:
 
        {
 
            status->state = STATE_IDLE;
 
            status->pid_enabled = 0;
 

	
 
        } break;
flash.sh
Show inline comments
 
#!/bin/bash
 
cd build
 
st-flash write main.bin 0x8000000
 
cd ..
 
#cd build
 
#st-flash write main.bin 0x8000000
 
#cd ..
 

	
 

	
 
# USB DFU:
 
# sudo  dfu-util -a 0 -d 0483:df11 -s 0x08000000:leave -D build/main.bin
 
dfu-util -a 0 -d 0483:df11 -s 0x08000000:leave -D build/main.bin 
 
sleep 1
 
dfu-util -a 1 -s 0x1FFFF800:8 -D optbytes.dat
optbytes.dat
Show inline comments
 
new file 100644
 
ªUÿˆÿÿÿÿ
 
\ No newline at end of file
0 comments (0 inline, 0 general)