Jump to content

    

ichthyandr

Участник
  • Content Count

    82
  • Joined

  • Last visited

Community Reputation

0 Обычный

About ichthyandr

  • Rank
    Частый гость

Recent Profile Visitors

1381 profile views
  1. чтото странное - разработка сетевых драйверов, всяческие USB, SPI, I2C, PCIe, UART, RS232/485/422 и вдруг тадамм!!! BGP!
  2. У них операционка уже есть с компиллятором или речь о "bare metal"?
  3. хорошо, спасибо )) Вопрос под hal решен uint32_t vect = FIRMWARE_START; __set_MSP(*(__IO uint32_t*)vect); __DSB(); HAL_DeInit(); ((void(*)())(*((uint *)(FIRMWARE_START + 4))))(); нужно делать deinit в бутлоадере
  4. не знаю, как глухой с немым диалог, спросил непосредственно, к чему демагогия?
  5. StmCubeIDE. странно конечно, но на stackoverflow ответов больше
  6. пардон, если резко, но вопрос был задан конкретный
  7. тебе на заметку, умник ) читать тут
  8. там оффсет в прошивке задан, system_stm32f1xx.c: /* #define VECT_TAB_SRAM */ #define VECT_TAB_OFFSET 0x00010000U /*!< Vector Table base offset field. This value must be a multiple of 0x200. */ в SystemInit SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ м.б. таблицу покорежило, надо смотреть ... таблица правильная, systick хендлер описан верно
  9. Вобщем по первому вопросу всё решилось, для перемещения стартового адреса программы нужно править ld скрипт и в опциях запуска задавать адрес таблицы прерываний. Из под IDE норм работает и в дебаге и в релизе. Основная проблема вот в чем, в загружаемой бутлоадером прошивке перестают работать прерывания, таблица правильная, nvic по ходу не работает. На первом же HAL_Delay прошивка остается навсегда
  10. оно так и предполагается, по 0x08000000 будет бутлоадер. Бутлоадер уже работает, шьет прошивку, но при переходе на адрес 0x08010000 всё виснет, в main.c бутлоадера: #define FIRMWARE_START (FLASH_BASE + 0x10000) далее typedef void (*pFunction)(void); pFunction JumpToApplication; HAL_RCC_DeInit(); SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; __disable_irq(); __DSB(); JumpToApplication = (void (*)(void)) (*((uint32_t *) ((FIRMWARE_START + 4)))); __set_MSP(*(__IO uint32_t*) FIRMWARE_START); JumpToApplication();
  11. Всем привет. Есть StmCudeIDE, есть желание изменить дефолтный стартовый адрес с 0x08000000 на 0x08010000 и запустить отладчик. Изменил в скрипте линкера: /* Memories definition */ MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K FLASH (rx) : ORIGIN = 0x8010000, LENGTH = 192K } /* FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 256K */ в system_stm32f1xx.c изменил смещение таблицы прерываний: /* #define VECT_TAB_SRAM */ #define VECT_TAB_OFFSET 0x00010000U /*!< Vector Table base offset field. This value must be a multiple of 0x200. */ в настройках проекта с дефолта меняю стартовый адрес (vector table=0x08010000) в STMProgrammer вижу что бинарик залит по адресу 0x08010000. При попытке запуска отладчика программа падает. Кто сталкивался, что делаю не так или еще что-то нужно сделать? Спасибо.
  12. а нет, мой косяк, flash erase, хвост программы терла
  13. походу косяк в кубике тут
  14. Всем привет. Столкнулся с траблой, нужно сделать чтение файла с флешки. Кубик генерит код и он валится на f_read, в частности падает на HCD_HC_OUT_IRQHandler(hhcd, (uint8_t)i) в stm32f1xx_hal_hcd.c. Кто сталкивался с подобным, как лечить? Спасибо.