Найти в Дзене
Astro-grad

Как я побеждал ошибку "core_cm4.h: No such file or directory" в STM32CubeIDE.

Для тех, кому нужен быстрый ответ как исправить ошибку "Fatal error: core_cm4.h: No such file or directory.", то в моем случае помогло полное удаление STM32CubeIDE, установка заново и изменение пути в окне: На путь, который не содержит русских букв и пробелов. А теперь более подробно У меня на одном компьютере была установлена программа STM32CubeIDE и там все хорошо работало. Потом мне понадобилось установить ее на другом компьютере. Я установил. И видимо, при первом запуске поставил галку "Use this as default and do not ask again", оставив путь по умолчанию. Посмотрел, что проекты создаются и успокоился. Спустя какое-то время понадобилось создать новый проект. И при компиляции начали вылезать ошибки типа: c:\st\stm32cubeide_1.7.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346\tools\arm-none-eabi\bin\ld.exe: cannot open linker script file C:\????????????????\test\STM32F103C8TX_FLASH.ld: No such file or directory

Для тех, кому нужен быстрый ответ как исправить ошибку "Fatal error: core_cm4.h: No such file or directory.", то в моем случае помогло полное удаление STM32CubeIDE, установка заново и изменение пути в окне:

На путь, который не содержит русских букв и пробелов.

А теперь более подробно

У меня на одном компьютере была установлена программа STM32CubeIDE и там все хорошо работало. Потом мне понадобилось установить ее на другом компьютере. Я установил. И видимо, при первом запуске поставил галку "Use this as default and do not ask again", оставив путь по умолчанию. Посмотрел, что проекты создаются и успокоился.

Спустя какое-то время понадобилось создать новый проект. И при компиляции начали вылезать ошибки типа:

c:\st\stm32cubeide_1.7.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346\tools\arm-none-eabi\bin\ld.exe: cannot open linker script file C:\????????????????\test\STM32F103C8TX_FLASH.ld: No such file or directory
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:65: test.elf] Error 1
"make -j4 all" terminated with exit code 2. Build might be incomplete.

По знакам вопросам в тексте ошибки стало понятно, что проблема с русскими буквами в названии каталога. Ну ничего, я не гордый, создал проект заново и выбрал другой каталог, без русских букв:

-2

При этом предыдущая ошибка исчезла, но появилась новая (пишу по памяти, так как сейчас она не повторяется, то есть возможно она выглядела немного по другому):

Fatal error: core_cm4.h: No such file or directory

Хорошо, что на другом компьютере работало нормально. Посмотрел где там лежит отсутствующий файл. Оказалось, что в Drivers\CMSIS\Includes

Вот так выглядел проект на компьютере, где нормально компилировалось.
Вот так выглядел проект на компьютере, где нормально компилировалось.

Скопировал каталог Includes в тоже самое место, как и в нормальном проекте. Это не помогло. Тогда скопировал все файлы из этого каталога в Drivers\CMSIS\Device\ST\STM32F1xx\Include. После этого стало компилироваться.

Но это меня не очень устроило. Получается при создании каждого проекта нужно копировать недостающие файлы. При этом приходилось постоянно снимать галку "Use default location" и выбирать необходимый каталог в окне:

-4

Полазил по настройкам и ничего подходящего не нашел. Настройки, кстати говоря, находятся в меню Windows -> Preferences, что для меня было не очень очевидно.

Тогда решил переустановить программу. После установки, при запуске появилось окно, как на самом первом скриншоте. И тут до меня дошло, что я зря в прошлый раз поставил галку "Use this as default and do not ask again". Теперь я сразу поменял каталог на не содержащий русских букв и пробелов:

-5

После этого проекты стали нормально создаваться и собираться.

А потом я еще нашел в настройках вот такую вкладку:

-6

Похоже можно было просто удалить неправильный путь и поставить галку "Prompt for workspace on startup". При этом надо не забыть нажать Apply, потому что "Apply and Close" не применят правки. Скорее всего тогда проблема бы тоже решилась.

Надеюсь эта статья поможет кому-нибудь еще.