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

Отладочная плата STM32VLDISCOVERY

Добрый день, у меня такая ситуация, купил отладочную плату STM32VLDISCOVERY, но в iar for arm 5.50 не могу настроить соединение ПК с прибором, не могу зашить...а вот через иар 6.10 находит прибор, но он платный, есть только демонстрационная версия...Что посоветуете?

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


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

Только что проверил демо пример note AN3268: IAR ANSI C/C++ Compiler V5.50.5.51995/W32 for ARM

Все компилится и отлаживается

 

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


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

...This is a known bug in EWARM 5.50 with value line flashloader. It is fixed in EWARM5.50.5.

I advise you, if possible, to upgrade your EWARM version to 5.50.5 (available on IAR web site: www.iar.com).

 

Else , you can use the attached patch to fix this problem with your installed version. It contains a readme that explains hosw to use it....https://my.st.com...

 

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


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

Начал разбирать с библиотекой для стм. В примерах для отладочной платы Discovery используется модуль startup_stm32f10x_md_vl.s.На сколько я понял это ассемблерный модуль. В проекте я хотел настроить модуль тактирования МК, но в описании примера в main.c указано следующее:

"At this stage the microcontroller clock setting is already configured,

this is done through SystemInit() function which is called from startup

file (startup_stm32f10x_xx.s) before to branch to application main."

Дело, что в настройках компилятора, поставлена галочка "Run to main", а почему тогда работа МК начинается с файла tartup_stm32f10x_md_vl.s, а не с main?

Изменено пользователем Twen

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


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

И хотелось бы понять как в библиотеке для stm реализованый прерывания. Обычно прерывания иаре описываются типа:

#pragma vector = TIMERA1_VECTOR

__interrupt void IntTimerA1(void)

{

}

 

А у библиотеке стм непонятно как, есть функция обработки прерываения, например SysTick_Handler(), а у файле startup_stm32f10x_xx.s написано :

 

__vector_table

DCD sfe(CSTACK)

DCD Reset_Handler ; Reset Handler

DCD NMI_Handler ; NMI Handler

DCD HardFault_Handler ; Hard Fault Handler

DCD MemManage_Handler ; MPU Fault Handler

DCD BusFault_Handler ; Bus Fault Handler

DCD UsageFault_Handler ; Usage Fault Handler

DCD 0 ; Reserved

DCD 0 ; Reserved

DCD 0 ; Reserved

DCD 0 ; Reserved

DCD SVC_Handler ; SVCall Handler

DCD DebugMon_Handler ; Debug Monitor Handler

DCD 0 ; Reserved

DCD PendSV_Handler ; PendSV Handler

DCD SysTick_Handler ; SysTick Handler

 

 

Как эту надпись на ассемблере можно перевести на русский?

 

 

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


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

Дело, что в настройках компилятора, поставлена галочка "Run to main", а почему тогда работа МК начинается с файла tartup_stm32f10x_md_vl.s, а не с main?

Это не в настройках компилятора, а в настройках отладчика.

 

DCD SysTick_Handler ; SysTick Handler

Как эту надпись на ассемблере можно перевести на русский?

Обработчик прерывания. Там еще указано [WEAK], что значит, что если найдется другой обработчик в проекте, то этот будет игнорирован.

upd. неправильно слово написал, нужно WEAK

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


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

Согласен, но почему же не с main-а стартует? И если, кто-то знаком с ассемблером стм, то дайте ссылки на какую-то книгу по ассемблеру для стм, заранее спасибо )

 

Обработчик прерывания. Там еще указано [WEEK], что значит, что если найдется другой обработчик в проекте, то этот будет игнорирован.

 

А почему не указывается адрес вектора прерывания?

Изменено пользователем Twen

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


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

Согласен, но почему же не с main-а стартует? И если, кто-то знаком с ассемблером стм, то дайте ссылки на какую-то книгу по ассемблеру для стм, заранее спасибо )

А почему не указывается адрес вектора прерывания?

Joseph Yiu. The Definitive Guide to the ARM Cortex-M3, 2 Ed (2010)

здесь имеется, но доверие нужно заслужить

Сами вектора прерываний заданы в начале startup_*.s

А адрес обработчика подставляется командой DCD

                DCD     SysTick_Handler    ; SysTick Handler

Потом идет обработчик-заглушка. Зацикленный на себя код.

SysTick_Handler PROC
                EXPORT  SysTick_Handler            [WEAK]
                B       .
                ENDP

Но в другом файле (*_it.c обычно) можно создать другой обработчик прерывания, на c. Который и будет скомпилирован и собран в проект.

 

До перехода в main() выполняются две функции. Функция __main копирует code и data, копирует или декомпрессирует RW data, инициализирует нулями ZI дата. Затем функция __rt_entry устанавливает stack и heap, инициализирует библиотечные функции, вызывает конструкторы верхнего уровня C++ (а также выходит из приложения после окончания работы основной программы). После этого вызывается функция main.

Так написано в DUI0471C_developing_for_arm_processors.pdf

Который (и кучу других) можно скачать с сайта ARM.

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


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

Я хочу поставить на процессор(платка discovery) STM32F100B операционную систему uicroC...на сайте http://micrium.com есть множество ОС микроС, которые уже портированы, для stm есть ОС портированы на отладочные платы STM3210B-EVAL, STM3210E-EVAL, STM32-SK, STM32F103ZE-SK...у все них процессор STM32F103, а у моей платы F100. Так как процессоры 103 и 100 отличаются по большому счету емкостью памяти и наличием аппаратного USB, то я могу смело скачивать операционку для одного из отладочных модулей и использовать для своей платы, не так ли? И какие меня могут ожидать трудности в использовании ОС для 103 а не для 100?

P.S. С ОС реального времени никогда не работал.

Изменено пользователем Twen

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


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

Опытные товарищи программисты обращаюсь к вам за помощью.

И так начался разбираться с микроС. Прочитал перевод книги о микроСи и принялся за практику. И тут началось )...

У меня возникла следующая проблема, на сайте микроСи я скачал проект для отладочной платы STM32F103ZE-SK, вотссылка . У меня на плате, как я уже говорил контроллер STM32F100B, а проект сделан на 103 ...

Так вот , проект я нормально загрузил у свою платку, но после загрузки зеленая полоса с курсором появляется не на заголовке функции main, а на у асемблерном окне(Рис. 2). И после запуска программы процессор попадает у функцию App_Fault_ISR ( Description : Handle hard fault.) по прерыванию(Рис.1).

Выходит что-то не так с настройками ОС под мой процессор. Например 103 работает на частотах до 72 Мгц и переферии у него больше чем у 100.

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

 

За раннее спасибо.

post-44543-1301483601_thumb.jpg

post-44543-1301483616_thumb.jpg

Изменено пользователем Twen

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


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

В startup.s есть строчка

DCD Reset_Handler ; Reset Handler

Вот оттуда и стартует.

В форуме это обсуждалось.

 

 

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


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

Я понял, но у проекте не подключен нет такого файла startup.s ...Это же как бы операционка, может серия 100 не поддерживает ОС (...

 

На процессоре можно запустить микроСи/ОС-II, если он удовлетворяет следующим основным требованиям:

 

1. Вы должны иметь компилятор С для выбранного процессора и компилятор должен понимать реентерабельный код.

2. Вы должны иметь возможность включать и выключать прерывания из С.

3. Процессор должен поддерживать прерывания и вам нужно обеспечить регулярно возникающее прерывание (с частотой примерно 10…100 Гц).

4. Процессор должен аппаратно поддерживать стек, и процессор должен иметь возможность сохранять в стеке большие объёмы данных (возможно несколько КБ).

5. Процессор должен иметь команды загрузки и сохранения указателя стека и других регистров в стеке или в памяти.

 

Я просто думал, что если библиотеки подключены stm32f10x..., то ОС должна завестись и на 100...

Изменено пользователем Twen

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


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

Скорее всего, у вас банально не хватает ОЗУ, у 100-й серии его маловато.

Стартап может быть написан и на Си, поищите таблицу векторов (что-то типа

void (* const g_pfnVectors[])(void) =
{
(intfunc)((unsigned long)&_estack),
    Reset_Handler,
    NMI_Handler,
    HardFault_Handler,
    MemManage_Handler,

 

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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