ev_zubkov 0 22 сентября, 2021 Опубликовано 22 сентября, 2021 · Жалоба Добрый день. Пытаюсь запустить 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) Как это можно починить? заранее благодарен за ответы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 22 сентября, 2021 Опубликовано 22 сентября, 2021 · Жалоба 1 hour ago, ev_zubkov said: Добрый день. Пытаюсь запустить Azure RTOS на STM32F0 по примеру отсюда. Только заменил на свой поток: У вас AZUR RTOS видит не то ядро. Из вашей ссылки Вы это учли при настройки проекта ? Ваше ядро cortex-m0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ev_zubkov 0 22 сентября, 2021 Опубликовано 22 сентября, 2021 · Жалоба @dimka76, да, при создании проекта изменил папку с инклудами на cortex_m0. и компилятору при сборке передается верное ядро: -mcpu=cortex-m0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 22 сентября, 2021 Опубликовано 22 сентября, 2021 · Жалоба 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 и ищете причину почему компилится эта команда, в то время как не должна. Остальные строки - аналогично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ev_zubkov 0 23 сентября, 2021 Опубликовано 23 сентября, 2021 (изменено) · Жалоба @jcxz, я так и попытался сделать, но такого файла не существует, возможно, он создается при сборке и потом удаляется Изменено 23 сентября, 2021 пользователем ev_zubkov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 25 ноября, 2022 Опубликовано 25 ноября, 2022 · Жалоба @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 файл - временный, ассемблерный результат обработки си-шного исходника (ну там же по пути очевидно же). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться