реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> "asm" function is nonstandard
Dениs
сообщение Aug 16 2015, 11:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 16 2015, 11:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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
Народ, подскажите что где-то макрос какой не установил ?

Да уж, хорошо, что хоть не богу свечку sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dениs
сообщение Aug 16 2015, 14:43
Сообщение #3


Участник
*

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



Хорошо, как же тогда использовать __set_MSP(...) необходимо для зхагрузчика ... функция в библиотеке выбирается макросами, так что я правильно спрашиваю, возможно либа устаревшая ?

Если же сделать как предлагаешь ты то происходят другие ошибки, переменная lr не определена ... Есть где-то ссылка на свежие библиотеки CMSIS для Keil ?

Сообщение отредактировал IgorKossak - Aug 16 2015, 16:35
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 16 2015, 14:56
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Dениs
сообщение Aug 16 2015, 15:34
Сообщение #5


Участник
*

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



Это укор в том случае если я знаю АСМ АРМ-ов ... а я его не знаю ) Так что бы мне либку рабочуюю, но чувствую надо копать команды ...

Сообщение отредактировал IgorKossak - Aug 16 2015, 16:35
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 16 2015, 15:49
Сообщение #6


Гуру
******

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



QUOTE (Dениs @ Aug 16 2015, 18:34) *
Так что бы мне либку рабочуюю...

Ну так возьмите у Keil, или ARM, что одно и то-же. Они сие породили http://www.keil.com/pack/doc/cmsis/general...l#CM_Components


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
romas2010
сообщение Aug 25 2015, 20:03
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 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 все нормально проходит
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 25 2015, 20:07
Сообщение #8


Гуру
******

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



Неправда Ваша. Я даже специально посмотрел документацию:
http://www.keil.com/support/man/docs/armcc...59124247402.htm


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
romas2010
сообщение Aug 25 2015, 20:26
Сообщение #9


Участник
*

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



Цитата(zltigo @ Aug 25 2015, 23:07) *
Неправда Ваша. Я даже специально посмотрел документацию:
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...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 25 2015, 20:35
Сообщение #10


Гуру
******

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



QUOTE (romas2010 @ Aug 25 2015, 23:26) *
Вы правы...но есть нюанс,как говориться дьявол заключается в деталях...Я не знаю,почему,но для архитектур Cortex разработчики кейл включили т.н embedded assembler...а

Не путайте embedded c inline sm.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jun 14 2018, 09:40
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 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

Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 14 2018, 09:42
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Ruslan1 @ Jun 14 2018, 12:40) *
Если включаю опцию "Strict ANCI C", то вижу ту же ошибку:

Зачем включаете "Strict ANSI C"?
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jun 14 2018, 10:43
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(scifi @ Jun 14 2018, 11:42) *
Зачем включаете "Strict ANSI C"?

чтобы проверить свои исходники на наличие потенциальных проблем.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 14 2018, 11:03
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ruslan1 @ Jun 14 2018, 13:43) *
чтобы проверить свои исходники на наличие потенциальных проблем.

А зачем не используете asm-файл?
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jun 14 2018, 11:16
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01653 секунд с 7
ELECTRONIX ©2004-2016