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

 
 
> Отладочная плата STM32VLDISCOVERY
Twen
сообщение Feb 10 2011, 11:45
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



Добрый день, у меня такая ситуация, купил отладочную плату STM32VLDISCOVERY, но в iar for arm 5.50 не могу настроить соединение ПК с прибором, не могу зашить...а вот через иар 6.10 находит прибор, но он платный, есть только демонстрационная версия...Что посоветуете?
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
V_N
сообщение Feb 10 2011, 13:59
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 12-01-09
Из: Харьков
Пользователь №: 43 270



Только что проверил демо пример note AN3268: IAR ANSI C/C++ Compiler V5.50.5.51995/W32 for ARM
Все компилится и отлаживается
Go to the top of the page
 
+Quote Post
676038
сообщение Feb 10 2011, 17:24
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 25-07-06
Пользователь №: 19 070



...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...
Go to the top of the page
 
+Quote Post
Twen
сообщение Feb 14 2011, 13:30
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



Спасибо большое ! wink.gif
Go to the top of the page
 
+Quote Post
Twen
сообщение Feb 28 2011, 07:22
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



Начал разбирать с библиотекой для стм. В примерах для отладочной платы 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 - Feb 28 2011, 07:25
Go to the top of the page
 
+Quote Post
Twen
сообщение Feb 28 2011, 11:11
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



И хотелось бы понять как в библиотеке для 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


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

Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 28 2011, 11:18
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Twen @ Feb 28 2011, 09:22) *
Дело, что в настройках компилятора, поставлена галочка "Run to main", а почему тогда работа МК начинается с файла tartup_stm32f10x_md_vl.s, а не с main?

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

Цитата(Twen @ Feb 28 2011, 13:11) *
DCD SysTick_Handler ; SysTick Handler
Как эту надпись на ассемблере можно перевести на русский?

Обработчик прерывания. Там еще указано [WEAK], что значит, что если найдется другой обработчик в проекте, то этот будет игнорирован.
upd. неправильно слово написал, нужно WEAK
Go to the top of the page
 
+Quote Post
Twen
сообщение Feb 28 2011, 11:22
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



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

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


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

Сообщение отредактировал Twen - Feb 28 2011, 11:22
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 28 2011, 11:46
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Twen @ Feb 28 2011, 13:22) *
Согласен, но почему же не с 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.
Go to the top of the page
 
+Quote Post
Twen
сообщение Mar 1 2011, 14:21
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



Понятно, спасибо.
Go to the top of the page
 
+Quote Post
Twen
сообщение Mar 2 2011, 07:59
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



Я хочу поставить на процессор(платка 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 - Mar 2 2011, 08:00
Go to the top of the page
 
+Quote Post
Twen
сообщение Mar 30 2011, 11:12
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



Опытные товарищи программисты обращаюсь к вам за помощью.
И так начался разбираться с микроС. Прочитал перевод книги о микроСи и принялся за практику. И тут началось )...
У меня возникла следующая проблема, на сайте микроСи я скачал проект для отладочной платы STM32F103ZE-SK, вотссылка . У меня на плате, как я уже говорил контроллер STM32F100B, а проект сделан на 103 ...
Так вот , проект я нормально загрузил у свою платку, но после загрузки зеленая полоса с курсором появляется не на заголовке функции main, а на у асемблерном окне(Рис. 2). И после запуска программы процессор попадает у функцию App_Fault_ISR ( Description : Handle hard fault.) по прерыванию(Рис.1).
Выходит что-то не так с настройками ОС под мой процессор. Например 103 работает на частотах до 72 Мгц и переферии у него больше чем у 100.
Но я как бы запутался, я думал код программы начинает с выполнение с функции main , а в нее я даже не захожу а сразу попадаю в прерывания, так вот не понятно где находятся эти самые настройки, которые вызывают прерывание по аппаратной ошибки(То есть откуда стартует код!!! Как видно явно не из main...).

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

Сообщение отредактировал Twen - Mar 30 2011, 11:14
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 30 2011, 11:23
Сообщение #13


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



В startup.s есть строчка
DCD Reset_Handler ; Reset Handler
Вот оттуда и стартует.
В форуме это обсуждалось.

Go to the top of the page
 
+Quote Post
Twen
сообщение Mar 30 2011, 11:40
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



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

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

1. Вы должны иметь компилятор С для выбранного процессора и компилятор должен понимать реентерабельный код.
2. Вы должны иметь возможность включать и выключать прерывания из С.
3. Процессор должен поддерживать прерывания и вам нужно обеспечить регулярно возникающее прерывание (с частотой примерно 10…100 Гц).
4. Процессор должен аппаратно поддерживать стек, и процессор должен иметь возможность сохранять в стеке большие объёмы данных (возможно несколько КБ).
5. Процессор должен иметь команды загрузки и сохранения указателя стека и других регистров в стеке или в памяти.

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

Сообщение отредактировал Twen - Mar 30 2011, 12:25
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Mar 30 2011, 12:46
Сообщение #15


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Скорее всего, у вас банально не хватает ОЗУ, у 100-й серии его маловато.
Стартап может быть написан и на Си, поищите таблицу векторов (что-то типа
Код
void (* const g_pfnVectors[])(void) =
{
(intfunc)((unsigned long)&_estack),
    Reset_Handler,
    NMI_Handler,
    HardFault_Handler,
    MemManage_Handler,



--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:56
Рейтинг@Mail.ru


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