this fixes the fw on newer compilers. haven't figured out why it broke yet (#549)

master
robbederks 2020-06-02 14:21:41 -07:00 committed by GitHub
parent d7f7b14118
commit a38925a0a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 15 deletions

View File

@ -13,9 +13,10 @@ else
DFU_UTIL = "tools/dfu-util-aarch64"
endif
CC = arm-none-eabi-gcc
OBJCOPY = arm-none-eabi-objcopy
OBJDUMP = arm-none-eabi-objdump
#COMPILER_PATH = /home/batman/Downloads/gcc-arm-none-eabi-9-2020-q2-update/bin/
CC = $(COMPILER_PATH)arm-none-eabi-gcc
OBJCOPY = $(COMPILER_PATH)arm-none-eabi-objcopy
OBJDUMP = $(COMPILER_PATH)arm-none-eabi-objdump
ifeq ($(RELEASE),1)
CERT = ../../pandaextra/certs/release

View File

@ -1,7 +1,7 @@
// **** libc ****
void delay(int a) {
volatile int i;
void delay(uint32_t a) {
volatile uint32_t i;
for (i = 0; i < a; i++);
}

View File

@ -755,6 +755,7 @@ void TIM1_BRK_TIM9_IRQ_Handler(void) {
TIM9->SR = 0;
}
#define MAX_FADE 8192U
int main(void) {
// Init interrupt table
init_interrupts(true);
@ -853,19 +854,23 @@ int main(void) {
#ifdef DEBUG_FAULTS
if(fault_status == FAULT_STATUS_NONE){
#endif
int div_mode = ((usb_power_mode == USB_POWER_DCP) ? 4 : 1);
uint32_t div_mode = ((usb_power_mode == USB_POWER_DCP) ? 4U : 1U);
// useful for debugging, fade breaks = panda is overloaded
for (int div_mode_loop = 0; div_mode_loop < div_mode; div_mode_loop++) {
for (int fade = 0; fade < 1024; fade += 8) {
for (int i = 0; i < (128/div_mode); i++) {
current_board->set_led(LED_RED, 1);
if (fade < 512) { delay(fade); } else { delay(1024-fade); }
current_board->set_led(LED_RED, 0);
if (fade < 512) { delay(512-fade); } else { delay(fade-512); }
}
}
for(uint32_t fade = 0U; fade < MAX_FADE; fade += div_mode){
current_board->set_led(LED_RED, true);
delay(fade >> 4);
current_board->set_led(LED_RED, false);
delay((MAX_FADE - fade) >> 4);
}
for(uint32_t fade = MAX_FADE; fade > 0U; fade -= div_mode){
current_board->set_led(LED_RED, true);
delay(fade >> 4);
current_board->set_led(LED_RED, false);
delay((MAX_FADE - fade) >> 4);
}
#ifdef DEBUG_FAULTS
} else {
current_board->set_led(LED_RED, 1);