Twen 0 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба Добрый день, у меня такая ситуация, купил отладочную плату STM32VLDISCOVERY, но в iar for arm 5.50 не могу настроить соединение ПК с прибором, не могу зашить...а вот через иар 6.10 находит прибор, но он платный, есть только демонстрационная версия...Что посоветуете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasil_Riabko 0 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба Только что проверил демо пример note AN3268: IAR ANSI C/C++ Compiler V5.50.5.51995/W32 for ARM Все компилится и отлаживается Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
676038 0 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба ...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... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Twen 0 14 февраля, 2011 Опубликовано 14 февраля, 2011 · Жалоба Спасибо большое ! ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Twen 0 28 февраля, 2011 Опубликовано 28 февраля, 2011 (изменено) · Жалоба Начал разбирать с библиотекой для стм. В примерах для отладочной платы 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? Изменено 28 февраля, 2011 пользователем Twen Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Twen 0 28 февраля, 2011 Опубликовано 28 февраля, 2011 · Жалоба И хотелось бы понять как в библиотеке для 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 Как эту надпись на ассемблере можно перевести на русский? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 февраля, 2011 Опубликовано 28 февраля, 2011 · Жалоба Дело, что в настройках компилятора, поставлена галочка "Run to main", а почему тогда работа МК начинается с файла tartup_stm32f10x_md_vl.s, а не с main? Это не в настройках компилятора, а в настройках отладчика. DCD SysTick_Handler ; SysTick Handler Как эту надпись на ассемблере можно перевести на русский? Обработчик прерывания. Там еще указано [WEAK], что значит, что если найдется другой обработчик в проекте, то этот будет игнорирован. upd. неправильно слово написал, нужно WEAK Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Twen 0 28 февраля, 2011 Опубликовано 28 февраля, 2011 (изменено) · Жалоба Согласен, но почему же не с main-а стартует? И если, кто-то знаком с ассемблером стм, то дайте ссылки на какую-то книгу по ассемблеру для стм, заранее спасибо ) Обработчик прерывания. Там еще указано [WEEK], что значит, что если найдется другой обработчик в проекте, то этот будет игнорирован. А почему не указывается адрес вектора прерывания? Изменено 28 февраля, 2011 пользователем Twen Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 февраля, 2011 Опубликовано 28 февраля, 2011 · Жалоба Согласен, но почему же не с 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Twen 0 1 марта, 2011 Опубликовано 1 марта, 2011 · Жалоба Понятно, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Twen 0 2 марта, 2011 Опубликовано 2 марта, 2011 (изменено) · Жалоба Я хочу поставить на процессор(платка discovery) STM32F100B операционную систему uicroC...на сайте http://micrium.com есть множество ОС микроС, которые уже портированы, для stm есть ОС портированы на отладочные платы STM3210B-EVAL, STM3210E-EVAL, STM32-SK, STM32F103ZE-SK...у все них процессор STM32F103, а у моей платы F100. Так как процессоры 103 и 100 отличаются по большому счету емкостью памяти и наличием аппаратного USB, то я могу смело скачивать операционку для одного из отладочных модулей и использовать для своей платы, не так ли? И какие меня могут ожидать трудности в использовании ОС для 103 а не для 100? P.S. С ОС реального времени никогда не работал. Изменено 2 марта, 2011 пользователем Twen Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Twen 0 30 марта, 2011 Опубликовано 30 марта, 2011 (изменено) · Жалоба Опытные товарищи программисты обращаюсь к вам за помощью. И так начался разбираться с микроС. Прочитал перевод книги о микроСи и принялся за практику. И тут началось )... У меня возникла следующая проблема, на сайте микроСи я скачал проект для отладочной платы STM32F103ZE-SK, вотссылка . У меня на плате, как я уже говорил контроллер STM32F100B, а проект сделан на 103 ... Так вот , проект я нормально загрузил у свою платку, но после загрузки зеленая полоса с курсором появляется не на заголовке функции main, а на у асемблерном окне(Рис. 2). И после запуска программы процессор попадает у функцию App_Fault_ISR ( Description : Handle hard fault.) по прерыванию(Рис.1). Выходит что-то не так с настройками ОС под мой процессор. Например 103 работает на частотах до 72 Мгц и переферии у него больше чем у 100. Но я как бы запутался, я думал код программы начинает с выполнение с функции main , а в нее я даже не захожу а сразу попадаю в прерывания, так вот не понятно где находятся эти самые настройки, которые вызывают прерывание по аппаратной ошибки(То есть откуда стартует код!!! Как видно явно не из main...). За раннее спасибо. Изменено 30 марта, 2011 пользователем Twen Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба В startup.s есть строчка DCD Reset_Handler ; Reset Handler Вот оттуда и стартует. В форуме это обсуждалось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Twen 0 30 марта, 2011 Опубликовано 30 марта, 2011 (изменено) · Жалоба Я понял, но у проекте не подключен нет такого файла startup.s ...Это же как бы операционка, может серия 100 не поддерживает ОС (... На процессоре можно запустить микроСи/ОС-II, если он удовлетворяет следующим основным требованиям: 1. Вы должны иметь компилятор С для выбранного процессора и компилятор должен понимать реентерабельный код. 2. Вы должны иметь возможность включать и выключать прерывания из С. 3. Процессор должен поддерживать прерывания и вам нужно обеспечить регулярно возникающее прерывание (с частотой примерно 10…100 Гц). 4. Процессор должен аппаратно поддерживать стек, и процессор должен иметь возможность сохранять в стеке большие объёмы данных (возможно несколько КБ). 5. Процессор должен иметь команды загрузки и сохранения указателя стека и других регистров в стеке или в памяти. Я просто думал, что если библиотеки подключены stm32f10x..., то ОС должна завестись и на 100... Изменено 30 марта, 2011 пользователем Twen Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба Скорее всего, у вас банально не хватает ОЗУ, у 100-й серии его маловато. Стартап может быть написан и на Си, поищите таблицу векторов (что-то типа void (* const g_pfnVectors[])(void) = { (intfunc)((unsigned long)&_estack), Reset_Handler, NMI_Handler, HardFault_Handler, MemManage_Handler, Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться