Перейти к содержанию
    

Вообщем переписываю бутлоадер исходя из этих исходников:

Посетить мою домашнюю страницу

 

Вообщем получил такую ошибку:

CMSIS\CM3\CoreSupport\core_cm3.c(58): error: #667: "asm" function is nonstandard

 

Вот скриншот проблемы:

5975596.png

 

Народ, подскажите что где-то макрос какой не установил ?

Изменено пользователем Dениs

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CMSIS\CM3\CoreSupport\core_cm3.c(58): error: #667: "asm" function is nonstandard

Ну как-бы черным по белому все написано. Вещь нестандартная, посему смотрите ДОКУМЕНТАЦИЮ, как использовать ASM вставки в используемом Вами компиляторе. Предполагаю, что Ваш Кейл скушает типа такого:

function(...)
{
__asm
{
......

}
}

 

Народ, подскажите что где-то макрос какой не установил ?

Да уж, хорошо, что хоть не богу свечку :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Изменено пользователем IgorKossak
бездумное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А подумать ну хоть чуть-чуть? Какого bx lr, то бишь thumb возврат, в таком контексте вообще нужна???

У Вас должна быть ОДНА строчка:

__asm
{
msr msp, r0
}

или, предполагаю, что поддерживается и более однозначное:

msr msp, mainStackPointer

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем IgorKossak
бездумное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так что бы мне либку рабочуюю...

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Вас должна быть ОДНА строчка:

__asm
{
msr msp, r0
}

 

К сожалению(!!), кейловский компилятор если так написать,выдаст ошибку...особенности его ассемблера таковы,что если надо вставить некоторый asm-код в сишную функцию,то этот код надо заключать в отдельную функцию и вызывать эту функцию в С..

 

Вообщем переписываю бутлоадер исходя из этих исходников:

Посетить мою домашнюю страницу

 

Вообщем получил такую ошибку:

CMSIS\CM3\CoreSupport\core_cm3.c(58): error: #667: "asm" function is nonstandard

 

Вот скриншот проблемы:

5975596.png

 

Народ, подскажите что где-то макрос какой не установил ?

 

по идее должен быть подключен к проекту еще и файл core_cm3.h ...там должен быть макрос

#define __ASM __asm

 

хотя действительно странное поведение компилятора....я с 5-ой версией не работал еще,в 4.73 все нормально проходит

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неправда Ваша. Я даже специально посмотрел документацию:

http://www.keil.com/support/man/docs/armcc...59124247402.htm

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неправда Ваша. Я даже специально посмотрел документацию:

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...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы правы...но есть нюанс,как говориться дьявол заключается в деталях...Я не знаю,почему,но для архитектур Cortex разработчики кейл включили т.н embedded assembler...а

Не путайте embedded c inline :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня та же проблема.

Кейл 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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем включаете "Strict ANSI C"?

чтобы проверить свои исходники на наличие потенциальных проблем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чтобы проверить свои исходники на наличие потенциальных проблем.

А зачем не используете asm-файл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем не используете 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...