ev_zubkov 0 September 22, 2021 Posted September 22, 2021 · Report post Добрый день. Пытаюсь запустить Azure RTOS на STM32F0 по примеру отсюда. Только заменил на свой поток: #include "tx_api.h" #include "main.h" TX_THREAD my_thread; void threadWorker(ULONG thread_input){ while(1){ HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); tx_thread_sleep(500); HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); tx_thread_sleep(500); } } void tx_application_define(void *first_unused_memory) { /* Create my_thread! */ tx_thread_create(&my_thread, "My Thread", threadWorker, 0x1234, first_unused_memory, 1024, 1, 1, TX_NO_TIME_SLICE, TX_AUTO_START); } В итоге получаю: ... arm-none-eabi-gcc "../threadx_old/common/src/tx_trace_buffer_full_notify.c" -mcpu=cortex-m0 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F072xB -c -I../Core/Inc -I../Drivers/STM32F0xx_HAL_Driver/Inc -I../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I../Drivers/CMSIS/Include -I../threadx_old/common/inc -I../threadx_old/ports/cortex_m4/gnu/inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"threadx_old/common/src/tx_trace_buffer_full_notify.d" -MT"threadx_old/common/src/tx_trace_buffer_full_notify.o" -mfloat-abi=soft -mthumb -o "threadx_old/common/src/tx_trace_buffer_full_notify.o" arm-none-eabi-gcc "../threadx_old/common/src/tx_trace_disable.c" -mcpu=cortex-m0 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F072xB -c -I../Core/Inc -I../Drivers/STM32F0xx_HAL_Driver/Inc -I../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I../Drivers/CMSIS/Include -I../threadx_old/common/inc -I../threadx_old/ports/cortex_m4/gnu/inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"threadx_old/common/src/tx_trace_disable.d" -MT"threadx_old/common/src/tx_trace_disable.o" -mfloat-abi=soft -mthumb -o "threadx_old/common/src/tx_trace_disable.o" C:\Users\user\AppData\Local\Temp\ccOCjSPf.s: Assembler messages: C:\Users\user\AppData\Local\Temp\ccOCjSPf.s:357: Error: selected processor does not support `rbit r3,r3' in Thumb mode C:\Users\user\AppData\Local\Temp\ccOCjSPf.s:365: Error: selected processor does not support `clz r3,r3' in Thumb mode C:\Users\user\AppData\Local\Temp\ccOCjSPf.s:462: Error: selected processor does not support `rbit r3,r3' in Thumb mode C:\Users\user\AppData\Local\Temp\ccOCjSPf.s:470: Error: selected processor does not support `clz r3,r3' in Thumb mode make: *** [threadx_old/common/src/subdir.mk:571: threadx_old/common/src/tx_thread_system_suspend.o] Error 1 make: *** Waiting for unfinished jobs.... "make -j12 all" terminated with exit code 2. Build might be incomplete. 19:03:44 Build Failed. 6 errors, 0 warnings. (took 1s.130ms) Как это можно починить? заранее благодарен за ответы. Quote Share this post Link to post Share on other sites More sharing options...
dimka76 96 September 22, 2021 Posted September 22, 2021 · Report post 1 hour ago, ev_zubkov said: Добрый день. Пытаюсь запустить Azure RTOS на STM32F0 по примеру отсюда. Только заменил на свой поток: У вас AZUR RTOS видит не то ядро. Из вашей ссылки Вы это учли при настройки проекта ? Ваше ядро cortex-m0. Quote Share this post Link to post Share on other sites More sharing options...
ev_zubkov 0 September 22, 2021 Posted September 22, 2021 · Report post @dimka76, да, при создании проекта изменил папку с инклудами на cortex_m0. и компилятору при сборке передается верное ядро: -mcpu=cortex-m0 Quote Share this post Link to post Share on other sites More sharing options...
jcxz 361 September 22, 2021 Posted September 22, 2021 · Report post 4 часа назад, ev_zubkov сказал: C:\Users\user\AppData\Local\Temp\ccOCjSPf.s:357: Error: selected processor does not support `rbit r3,r3' in Thumb mode Вангую, что "357" - это номер строки, в которой стоит команда RBIT. Которую не знает M0. Возможно весь ccOCjSPf.s - для другого ядра, а может там есть блоки включаемые условной компиляцией в зависимости от ядра. Открываете ccOCjSPf.s и ищете причину почему компилится эта команда, в то время как не должна. Остальные строки - аналогично. Quote Share this post Link to post Share on other sites More sharing options...
ev_zubkov 0 September 23, 2021 Posted September 23, 2021 (edited) · Report post @jcxz, я так и попытался сделать, но такого файла не существует, возможно, он создается при сборке и потом удаляется Edited September 23, 2021 by ev_zubkov Quote Share this post Link to post Share on other sites More sharing options...
esaulenka 10 November 25, 2022 Posted November 25, 2022 · Report post @ev_zubkov, если вам ещё актуально. 1) кажется, у вас сборка идёт в несколько потоков. Поэтому сообщения о компиляции tx_trace_XXX.c - к делу не относятся, старт компиляции tx_thread_system_suspend.c, в котором, собственно, и содержится ошибка, чуть выше. 2) в этом самом system_suspend используется макрос TX_LOWEST_SET_BIT_CALCULATE. В старших cortex-m он разворачивается в две ассемблерные команды - clz и rbit (вот оно). В cortex-m0 таких команд нет, и нужна отдельная функция (кажется, отсюда). Ваша задача - найти, откуда компилятор притащил неверный tx_port.h. 3) .s файл - временный, ассемблерный результат обработки си-шного исходника (ну там же по пути очевидно же). Quote Share this post Link to post Share on other sites More sharing options...