|
"asm" function is nonstandard |
|
|
|
Aug 16 2015, 11:39
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 25-12-12
Пользователь №: 74 984

|
Вообщем переписываю бутлоадер исходя из этих исходников: Посетить мою домашнюю страницуВообщем получил такую ошибку: CMSIS\CM3\CoreSupport\core_cm3.c(58): error: #667: "asm" function is nonstandardВот скриншот проблемы:  Народ, подскажите что где-то макрос какой не установил ?
Сообщение отредактировал Dениs - Aug 16 2015, 11:39
|
|
|
|
|
Aug 16 2015, 11:54
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Dениs @ Aug 16 2015, 14:39)  CMSIS\CM3\CoreSupport\core_cm3.c(58): error: #667: "asm" function is nonstandard Ну как-бы черным по белому все написано. Вещь нестандартная, посему смотрите ДОКУМЕНТАЦИЮ, как использовать ASM вставки в используемом Вами компиляторе. Предполагаю, что Ваш Кейл скушает типа такого: CODE function(...) { __asm { ......
} } QUOTE Народ, подскажите что где-то макрос какой не установил ? Да уж, хорошо, что хоть не богу свечку
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 16 2015, 14:43
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 25-12-12
Пользователь №: 74 984

|
Хорошо, как же тогда использовать __set_MSP(...) необходимо для зхагрузчика ... функция в библиотеке выбирается макросами, так что я правильно спрашиваю, возможно либа устаревшая ? Если же сделать как предлагаешь ты то происходят другие ошибки, переменная lr не определена ... Есть где-то ссылка на свежие библиотеки CMSIS для Keil ?
Сообщение отредактировал IgorKossak - Aug 16 2015, 16:35
Причина редактирования: бездумное цитирование
|
|
|
|
|
Aug 16 2015, 14:56
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Dениs @ Aug 16 2015, 17:43)  Если же сделать как предлагаешь ты то происходят другие ошибки, переменная lr не определена А подумать ну хоть чуть-чуть? Какого bx lr, то бишь thumb возврат, в таком контексте вообще нужна??? У Вас должна быть ОДНА строчка: CODE __asm { msr msp, r0 } или, предполагаю, что поддерживается и более однозначное: msr msp, mainStackPointer
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 16 2015, 15:34
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 25-12-12
Пользователь №: 74 984

|
Это укор в том случае если я знаю АСМ АРМ-ов ... а я его не знаю ) Так что бы мне либку рабочуюю, но чувствую надо копать команды ...
Сообщение отредактировал IgorKossak - Aug 16 2015, 16:35
Причина редактирования: бездумное цитирование
|
|
|
|
|
Aug 25 2015, 20:03
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 25-11-11
Пользователь №: 68 515

|
Цитата(zltigo @ Aug 16 2015, 17:56)  У Вас должна быть ОДНА строчка: Код __asm { msr msp, r0 } К сожалению(!!), кейловский компилятор если так написать,выдаст ошибку...особенности его ассемблера таковы,что если надо вставить некоторый asm-код в сишную функцию,то этот код надо заключать в отдельную функцию и вызывать эту функцию в С.. Цитата(Dениs @ Aug 16 2015, 14:39)  Вообщем переписываю бутлоадер исходя из этих исходников: Посетить мою домашнюю страницуВообщем получил такую ошибку: CMSIS\CM3\CoreSupport\core_cm3.c(58): error: #667: "asm" function is nonstandardВот скриншот проблемы:  Народ, подскажите что где-то макрос какой не установил ? по идее должен быть подключен к проекту еще и файл core_cm3.h ...там должен быть макрос #define __ASM __asm хотя действительно странное поведение компилятора....я с 5-ой версией не работал еще,в 4.73 все нормально проходит
|
|
|
|
|
Aug 25 2015, 20:26
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 25-11-11
Пользователь №: 68 515

|
Цитата(zltigo @ Aug 25 2015, 23:07)  Вы правы...но есть нюанс,как говориться дьявол заключается в деталях...Я не знаю,почему,но для архитектур Cortex разработчики кейл включили т.н embedded assembler...а http://www.keil.com/support/man/docs/armcc...96945591462.htm в таблице 6.1 указано-inlining-never...
|
|
|
|
|
Jun 14 2018, 09:40
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
У меня та же проблема. Кейл 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
|
|
|
|
|
Jun 14 2018, 11:16
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(jcxz @ Jun 14 2018, 13:03)  А зачем не используете 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.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|