redradist 0 16 августа, 2015 Опубликовано 16 августа, 2015 (изменено) · Жалоба Вообщем переписываю бутлоадер исходя из этих исходников: Посетить мою домашнюю страницу Вообщем получил такую ошибку: CMSIS\CM3\CoreSupport\core_cm3.c(58): error: #667: "asm" function is nonstandard Вот скриншот проблемы: Народ, подскажите что где-то макрос какой не установил ? Изменено 16 августа, 2015 пользователем Dениs Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 16 августа, 2015 Опубликовано 16 августа, 2015 · Жалоба CMSIS\CM3\CoreSupport\core_cm3.c(58): error: #667: "asm" function is nonstandard Ну как-бы черным по белому все написано. Вещь нестандартная, посему смотрите ДОКУМЕНТАЦИЮ, как использовать ASM вставки в используемом Вами компиляторе. Предполагаю, что Ваш Кейл скушает типа такого: function(...) { __asm { ...... } } Народ, подскажите что где-то макрос какой не установил ? Да уж, хорошо, что хоть не богу свечку :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
redradist 0 16 августа, 2015 Опубликовано 16 августа, 2015 (изменено) · Жалоба Хорошо, как же тогда использовать __set_MSP(...) необходимо для зхагрузчика ... функция в библиотеке выбирается макросами, так что я правильно спрашиваю, возможно либа устаревшая ? Если же сделать как предлагаешь ты то происходят другие ошибки, переменная lr не определена ... Есть где-то ссылка на свежие библиотеки CMSIS для Keil ? Изменено 16 августа, 2015 пользователем IgorKossak бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 16 августа, 2015 Опубликовано 16 августа, 2015 · Жалоба Если же сделать как предлагаешь ты то происходят другие ошибки, переменная lr не определена А подумать ну хоть чуть-чуть? Какого bx lr, то бишь thumb возврат, в таком контексте вообще нужна??? У Вас должна быть ОДНА строчка: __asm { msr msp, r0 } или, предполагаю, что поддерживается и более однозначное: msr msp, mainStackPointer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
redradist 0 16 августа, 2015 Опубликовано 16 августа, 2015 (изменено) · Жалоба Это укор в том случае если я знаю АСМ АРМ-ов ... а я его не знаю ) Так что бы мне либку рабочуюю, но чувствую надо копать команды ... Изменено 16 августа, 2015 пользователем IgorKossak бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 16 августа, 2015 Опубликовано 16 августа, 2015 · Жалоба Так что бы мне либку рабочуюю... Ну так возьмите у Keil, или ARM, что одно и то-же. Они сие породили http://www.keil.com/pack/doc/cmsis/general...l#CM_Components Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
romas2010 1 25 августа, 2015 Опубликовано 25 августа, 2015 · Жалоба У Вас должна быть ОДНА строчка: __asm { msr msp, r0 } К сожалению(!!), кейловский компилятор если так написать,выдаст ошибку...особенности его ассемблера таковы,что если надо вставить некоторый asm-код в сишную функцию,то этот код надо заключать в отдельную функцию и вызывать эту функцию в С.. Вообщем переписываю бутлоадер исходя из этих исходников: Посетить мою домашнюю страницу Вообщем получил такую ошибку: CMSIS\CM3\CoreSupport\core_cm3.c(58): error: #667: "asm" function is nonstandard Вот скриншот проблемы: Народ, подскажите что где-то макрос какой не установил ? по идее должен быть подключен к проекту еще и файл core_cm3.h ...там должен быть макрос #define __ASM __asm хотя действительно странное поведение компилятора....я с 5-ой версией не работал еще,в 4.73 все нормально проходит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 25 августа, 2015 Опубликовано 25 августа, 2015 · Жалоба Неправда Ваша. Я даже специально посмотрел документацию: http://www.keil.com/support/man/docs/armcc...59124247402.htm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
romas2010 1 25 августа, 2015 Опубликовано 25 августа, 2015 · Жалоба Неправда Ваша. Я даже специально посмотрел документацию: http://www.keil.com/support/man/docs/armcc...59124247402.htm Вы правы...но есть нюанс,как говориться дьявол заключается в деталях...Я не знаю,почему,но для архитектур Cortex разработчики кейл включили т.н embedded assembler...а http://www.keil.com/support/man/docs/armcc...96945591462.htm в таблице 6.1 указано-inlining-never... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 25 августа, 2015 Опубликовано 25 августа, 2015 · Жалоба Вы правы...но есть нюанс,как говориться дьявол заключается в деталях...Я не знаю,почему,но для архитектур Cortex разработчики кейл включили т.н embedded assembler...а Не путайте embedded c inline :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 12 14 июня, 2018 Опубликовано 14 июня, 2018 · Жалоба У меня та же проблема. Кейл 5 Если включаю опцию "Strict ANCI C", то вижу ту же ошибку: .\Libraries\CMSIS\Include\cmsis_armcc.h(468): error: #667: "asm" function is nonstandard __attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) .\Libraries\CMSIS\Include\cmsis_armcc.h(483): error: #667: "asm" function is nonstandard __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) .\Libraries\CMSIS\Include\cmsis_armcc.h(670): error: #667: "asm" function is nonstandard __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) Подключил самую новую CMSIS, думал в хедерах это пофиксили, но все по-старому. Что делать, править исходники CMSIS? вот собственно на это ругается: #ifndef __NO_EMBEDDED_ASM __attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) { rev16 r0, r0 bx lr } #endif #ifndef __NO_EMBEDDED_ASM __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) { revsh r0, r0 bx lr } #endif #ifndef __NO_EMBEDDED_ASM __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) { rrx r0, r0 bx lr } #endif Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 14 июня, 2018 Опубликовано 14 июня, 2018 · Жалоба Если включаю опцию "Strict ANCI C", то вижу ту же ошибку: Зачем включаете "Strict ANSI C"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 12 14 июня, 2018 Опубликовано 14 июня, 2018 · Жалоба Зачем включаете "Strict ANSI C"? чтобы проверить свои исходники на наличие потенциальных проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 172 14 июня, 2018 Опубликовано 14 июня, 2018 · Жалоба чтобы проверить свои исходники на наличие потенциальных проблем. А зачем не используете asm-файл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 12 14 июня, 2018 Опубликовано 14 июня, 2018 · Жалоба А зачем не используете asm-файл? Какой asm файл я не использую? Вы про "__NO_EMBEDDED_ASM" ? ну я не знаю. Предки так делали и нам завещали, даже не задумывался над этим. А что, лучше включить? The usage of the Embedded Assembler can be disabled by with define __NO_EMBEDDED_ASM. This avoids potential side effects of the Embedded Assembler. Refer to Compiler User Guide - Using the Inline and Embedded Assemblers of the Arm Compiler for more information. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться