Jump to content

    

Алексей ВМ1

Участник
  • Content Count

    7
  • Joined

  • Last visited

Community Reputation

0 Обычный

Информация

  • Город
    Array

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Добрый день! Помогите, пожалуйста, прошивкой или проектом SPP BLE для СС2541. Спасибо.
  2. Размер кучи? Инициализация же происходит в startup_stm32f10x_hd.s: IF :DEF:__MICROLIB EXPORT __initial_sp EXPORT __heap_base EXPORT __heap_limit ELSE IMPORT __use_two_region_memory EXPORT __user_initial_stackheap __user_initial_stackheap LDR R0, = Heap_Mem LDR R1, =(Stack_Mem + Stack_Size) LDR R2, = (Heap_Mem + Heap_Size) LDR R3, = Stack_Mem BX LR
  3. Проблема очень странная: Program Size: Code=46260 RO-data=864 RW-data=1556 ZI-data=8844 - работает Program Size: Code=62144 RO-data=876 RW-data=1744 ZI-data=10000 - не переходит на main() У STM32F103ZC 256 kB ROM и 48 kB RAM, то есть памяти достаточно. И в обработчик HF не вылетает. LDR R0, =__main BX R0 __main 0x08000130 Но при выполнении инструкции BX R0 в R0 0x08000131. UPD: Если разрешить использование MicroLib, то все работает. Может из-за того, что размер кода уменьшился: Program Size: Code=56812 RO-data=864 RW-data=1740 ZI-data=10164 UPD: С включенной оптимизацией тоже работает. Program Size: Code=54564 RO-data=864 RW-data=1728 ZI-data=10280 Похоже проблема с программной памятью Итог: Причина глюка - наличие в коде функции printf() без объявления функции int fputc(int ch, FILE *f);
  4. HardFault_Handler() возникает, если я определяю Reset_Handler(). Если Reset_Handler убрать, то и HardFault_Handler() не возникает, прога зацикливается без всяких ошибок, в main() не входит Выкинул из main() все, оставил лишь for(;;) - работает. Проблема, выходит, в размере кода или в размере используемой ОЗУ.
  5. Среда разработки - Keil, хожу отладчиком, в systemInit() захожу нормально, все флаги готовности клоков выставляются, потом иду дальше по ассемблеру, в месте, помеченном '>' прога зацикливается. IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0 LDR R0, =__main > BX R0 В предыдущем сообщении HardFault_Handler() возникает, если я определяю Reset_Handler(). Если Reset_Handler убрать, то и HardFault_Handler() не возникает, прога зацикливается без всяких ошибок, в main() не входит
  6. При переходе на main() возникает HardFault_Handler(), выставляется бит IACCVIOL в MMFSR. Причины 1 = the processor attempted an instruction fetch from a location that does not permit execution. The PC value stacked for the exception return points to the faulting instruction. The processor has not written a fault address to the MMFAR. This fault condition occurs on any attempt of instruction fetches to an XN (eXecute Never) region, even when the MPU is disabled or not present. Potential reasons: a) Branch to regions that are not defined in the MPU or defined as non-executable. b) Invalid return due to corrupted stack content. c) Incorrect entry in the exception vector table. Яснее не стало, отчего вылетает.
  7. Добрый день! Портировал проект с STM32F103V8 на STM32F103ZC. Подключил в проект startup_stm32f10x_hd.s вместо startup_stm32f10x_md.s, определил дефайн STM32F10X_HD. В SystemInit() прога заходит и инциализирует клоки, но в main() уже не заходит. Код занимает 63кБ из 256 доступных, ChipID проверил - чип не подделка. В чем может быть причина?