Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2021-окт-23 17:23

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 377 сообщений ]  На страницу « 122 23 24 25 26 »
Автор Сообщение
 Заголовок сообщения: Ошибки библиотек.
СообщениеДобавлено: 2021-сен-10 19:33 
Не в сети

Зарегистрирован: 2017-сен-26 17:36
Сообщения: 9
Организация: Частное лицо
Доброго времени суток! Не являясь опытным программистом не могу решить следующую задачу:

Некоторое время назад писал простые программы для 1986ВЕ4У, разбирался, какое-то время спустя пришлось оставить это занятие. Сегодня сел разбираться снова, вышли новые библиотеки официально версии 2.0.2 - обновил библиотеки в старых проектах - появляются предупреждения. Создал новый проект - появляются ошибки. Объясните, в чём дело (в чём причина ошибок и предупреждений в двух проектах) и как это исправить/где я ошибаюсь/что не понимаю.
Вложение:
[ attachment ]
1.png [ 130.79 КБ | 590 просмотров ]
Вложение:
[ attachment ]
2.png [ 151.79 КБ | 590 просмотров ]
Вложение:
[ attachment ]
3.png [ 164.15 КБ | 590 просмотров ]
Вложение:
[ attachment ]
4.png [ 155.66 КБ | 590 просмотров ]


Вернуться к началу
 Заголовок сообщения: Re: Ошибки библиотек.
СообщениеДобавлено: 2021-сен-11 16:17 
Не в сети

Зарегистрирован: 2018-дек-17 15:20
Сообщения: 168
Организация: частное лицо
В новых библиотеках переименовали макросы (имена переменных или функций). Нужно использовать новые имена. В предупреждениях компилятора все написано. Да, нужно читать предупреждения и исправлять свой код.


Вернуться к началу
 Заголовок сообщения: Re: Ошибки библиотек.
СообщениеДобавлено: 2021-сен-11 21:02 
Не в сети

Зарегистрирован: 2018-янв-05 23:41
Сообщения: 344
Организация: ФГУП "РФЯЦ-ВНИИЭФ"
Строка 22 файла MDR1986BE4.h содержит ошибку.
Имеется
extern {
а должно быть
extern "С" {
А лучше вообще удалить из этого файла строки:
#ifdef __cplusplus
extern  {
#endif

#ifdef __cplusplus
}
#endif
В данном конкретном файле они ни на что не влияют. Там только объявления макросов и псевдонимов типов. Квалификатор extern "С" по отношению к ним - нонсенс. Непонятно почему компилятор на это не ругается.

А предупреждения - из-за определенного макроса MDR_LEGACY_SUPPORT.
Если закомментировать в файле MDR32F9Qx_config.h строку
#define MDR_LEGACY_SUPPORT 153
они должны уйти.


Вернуться к началу
 Заголовок сообщения: Re: Ошибки библиотек.
СообщениеДобавлено: 2021-сен-13 12:58 
Не в сети
Support

Зарегистрирован: 2020-мар-17 09:52
Сообщения: 16
Организация: АО ПКК Миландр
AGDVS писал(а): *
Некоторое время назад писал простые программы для 1986ВЕ4У, разбирался, какое-то время спустя пришлось оставить это занятие. Сегодня сел разбираться снова, вышли новые библиотеки официально версии 2.0.2 - обновил библиотеки в старых проектах - появляются предупреждения. Создал новый проект - появляются ошибки. Объясните, в чём дело (в чём причина ошибок и предупреждений в двух проектах) и как это исправить/где я ошибаюсь/что не понимаю.
Добрый день.

Как было указано выше пользователями Professor Chaos и Sergey3141592, часть наблюдаемого поведения связана с поддержкой прошлой версии 1.5.3 (ворнинги), а часть - с ошибкой в заголовочном файле в строке "extern {".
Информация о поддержке прошлой версии 1.5.3 описана в файле списка изменений на SPL, идущем совместно с паком и SPL. Поддержка прошлой версии с помощью определения MDR_LEGACY_SUPPORT необходима для обратной совместимости для проектов, сделанных на прошлой версии SPL. Соответственно, при создании нового проекта поддержка старых библиотек не нужна, и можно удалить, закомментировать или изменить значение определения MDR_LEGACY_SUPPORT в конфигурационном файле.
Исправление ошибки, связанной с "extern {", добавлено в список задач для следующей версии (2.0.3), спасибо за нахождение ошибки. Тем не менее, обратите, пожалуйста, внимание, что файлы поддержки предназначены в первую очередь при программировании на Си, и проверяются при использовании компилятора Си.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-сен-24 16:17 
Не в сети

Зарегистрирован: 2015-окт-29 15:54
Сообщения: 38
Добрый день! Перешел с keil на iar, собрал тот же самый проект что и в keil, заменив только стартап (*.s) файл. Перестали работать прерывания (начинаются "блуждания" по памяти)... Стартап файл взял из SPL, только заменил в нем "SystemInit" на "main", так как не использую SPL в своем проекте и не хочу ничего тянуть от туда. Что может быть не так? в Keil все работает хорошо, собираю из одних и тех же исходников, кроме *.s файла


Вернуться к началу
СообщениеДобавлено: 2021-сен-24 19:59 
Не в сети

Зарегистрирован: 2018-янв-05 23:41
Сообщения: 344
Организация: ФГУП "РФЯЦ-ВНИИЭФ"
nikitab900 писал(а): *
Что может быть не так?
Убедитесь, что в стартапе для IAR имена обработчиков прерываний одинаковые с вашими и с теми, что в стартапе для Кейла.
nikitab900 писал(а): *
заменил в нем "SystemInit" на "main", так как не использую SPL в своем проекте и не хочу ничего тянуть от туда.
Данная функция не является частью SPL и не использует её функции. Она из CMSIS.
Просто SPL использует CMSIS и потому содержит её файлы описания ресурсов ядра и периферии МК.


Вернуться к началу
СообщениеДобавлено: 2021-сен-27 12:51 
Не в сети

Зарегистрирован: 2015-окт-29 15:54
Сообщения: 38
Professor Chaos писал(а): *
nikitab900 писал(а): *
Что может быть не так?
Убедитесь, что в стартапе для IAR имена обработчиков прерываний одинаковые с вашими и с теми, что в стартапе для Кейла.
nikitab900 писал(а): *
заменил в нем "SystemInit" на "main", так как не использую SPL в своем проекте и не хочу ничего тянуть от туда.
Данная функция не является частью SPL и не использует её функции. Она из CMSIS.
Просто SPL использует CMSIS и потому содержит её файлы описания ресурсов ядра и периферии МК.
Имена проверил - все сходится...
Открыть
;/*****************************************************************************
; * @file: startup_MDR32F9Qx.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File for the
; * Milandr MDR32F9Qx device series
; * @version: V1.0
; * @date: 09/07/2010
; *****************************************************************************
; * @copy
; *
; * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
; * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
; * TIME. AS A RESULT, PHYTON SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
; * OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
; * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
; * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
; *
; * <h2><center>&copy; COPYRIGHT 2010 Phyton</center></h2>
; ******************************************************************************
; * FILE startup_MDR32F9Qx.s
; */


MODULE ?cstartup

;; Forward declaration of sections.
SECTION CSTACK:DATA:NOROOT(3)

SECTION .intvec:CODE:NOROOT(2)

EXTERN __iar_program_start
EXTERN main//SystemInit
PUBLIC __vector_table

DATA
__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

; External Interrupts
DCD CAN1_IRQHandler ; IRQ0
DCD CAN2_IRQHandler ; IRQ1
DCD USB_IRQHandler ; IRQ2
DCD 0 ; IRQ3 reserved
DCD 0 ; IRQ4 reserved
DCD DMA_IRQHandler ; IRQ5
DCD UART1_IRQHandler ; IRQ6
DCD UART2_IRQHandler ; IRQ7
DCD SSP1_IRQHandler ; IRQ8
DCD 0 ; IRQ9 reserved
DCD I2C_IRQHandler ; IRQ10
DCD POWER_IRQHandler ; IRQ11
DCD WWDG_IRQHandler ; IRQ12
DCD 0 ; IRQ13 reserved
DCD Timer1_IRQHandler ; IRQ14
DCD Timer2_IRQHandler ; IRQ15
DCD Timer3_IRQHandler ; IRQ16
DCD ADC_IRQHandler ; IRQ17
DCD 0 ; IRQ18 reserved
DCD COMPARATOR_IRQHandler ; IRQ19
DCD SSP2_IRQHandler ; IRQ20
DCD 0 ; IRQ21 reserved
DCD 0 ; IRQ22 reserved
DCD 0 ; IRQ23 reserved
DCD 0 ; IRQ24 reserved
DCD 0 ; IRQ25 reserved
DCD 0 ; IRQ26 reserved
DCD BACKUP_IRQHandler ; IRQ27
DCD EXT_INT1_IRQHandler ; IRQ28
DCD EXT_INT2_IRQHandler ; IRQ29
DCD EXT_INT3_IRQHandler ; IRQ30
DCD EXT_INT4_IRQHandler ; IRQ31

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;
THUMB

PUBWEAK Reset_Handler
SECTION .text:CODE:REORDER:NOROOT(2)
Reset_Handler
LDR R0, =main//SystemInit
BLX R0
LDR R0, =__iar_program_start
BX R0

PUBWEAK NMI_Handler
SECTION .text:CODE:REORDER:NOROOT(1)
NMI_Handler
B NMI_Handler

PUBWEAK HardFault_Handler
SECTION .text:CODE:REORDER:NOROOT(1)
HardFault_Handler
B HardFault_Handler

PUBWEAK MemManage_Handler
SECTION .text:CODE:REORDER:NOROOT(1)
MemManage_Handler
B MemManage_Handler

PUBWEAK BusFault_Handler
SECTION .text:CODE:REORDER:NOROOT(1)
BusFault_Handler
B BusFault_Handler

PUBWEAK UsageFault_Handler
SECTION .text:CODE:REORDER:NOROOT(1)
UsageFault_Handler
B UsageFault_Handler

PUBWEAK SVC_Handler
SECTION .text:CODE:REORDER:NOROOT(1)
SVC_Handler
B SVC_Handler

PUBWEAK DebugMon_Handler
SECTION .text:CODE:REORDER:NOROOT(1)
DebugMon_Handler
B DebugMon_Handler

PUBWEAK PendSV_Handler
SECTION .text:CODE:REORDER:NOROOT(1)
PendSV_Handler
B PendSV_Handler

PUBWEAK SysTick_Handler
SECTION .text:CODE:REORDER:NOROOT(1)
SysTick_Handler
B SysTick_Handler


PUBWEAK CAN1_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
CAN1_IRQHandler
B CAN1_IRQHandler

PUBWEAK CAN2_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
CAN2_IRQHandler
B CAN2_IRQHandler

PUBWEAK USB_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
USB_IRQHandler
B USB_IRQHandler

PUBWEAK DMA_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
DMA_IRQHandler
B DMA_IRQHandler

PUBWEAK UART1_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
UART1_IRQHandler
B UART1_IRQHandler

PUBWEAK UART2_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
UART2_IRQHandler
B UART2_IRQHandler

PUBWEAK SSP1_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
SSP1_IRQHandler
B SSP1_IRQHandler

PUBWEAK I2C_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
I2C_IRQHandler
B I2C_IRQHandler

PUBWEAK POWER_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
POWER_IRQHandler
B POWER_IRQHandler

PUBWEAK WWDG_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
WWDG_IRQHandler
B WWDG_IRQHandler

PUBWEAK Timer1_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
Timer1_IRQHandler
B Timer1_IRQHandler

PUBWEAK Timer2_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
Timer2_IRQHandler
B Timer2_IRQHandler

PUBWEAK Timer3_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
Timer3_IRQHandler
B Timer3_IRQHandler

PUBWEAK ADC_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
ADC_IRQHandler
B ADC_IRQHandler

PUBWEAK COMPARATOR_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
COMPARATOR_IRQHandler
B COMPARATOR_IRQHandler

PUBWEAK SSP2_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
SSP2_IRQHandler
B SSP2_IRQHandler

PUBWEAK BACKUP_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
BACKUP_IRQHandler
B BACKUP_IRQHandler

PUBWEAK EXT_INT1_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
EXT_INT1_IRQHandler
B EXT_INT1_IRQHandler

PUBWEAK EXT_INT2_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
EXT_INT2_IRQHandler
B EXT_INT2_IRQHandler

PUBWEAK EXT_INT3_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
EXT_INT3_IRQHandler
B EXT_INT3_IRQHandler

PUBWEAK EXT_INT4_IRQHandler
SECTION .text:CODE:REORDER:NOROOT(1)
EXT_INT4_IRQHandler
B EXT_INT4_IRQHandler

END
;/******************* (C) COPYRIGHT 2010 Phyton *********************************
;*
;* END OF FILE startup_MDR32F9Qx.s */
Закрыть


Вернуться к началу
СообщениеДобавлено: 2021-сен-27 13:36 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
nikitab900 писал(а): *
Добрый день! Перешел с keil на iar, собрал тот же самый проект что и в keil, заменив только стартап (*.s) файл. Перестали работать прерывания (начинаются "блуждания" по памяти)... Стартап файл взял из SPL, только заменил в нем "SystemInit" на "main", так как не использую SPL в своем проекте и не хочу ничего тянуть от туда. Что может быть не так? в Keil все работает хорошо, собираю из одних и тех же исходников, кроме *.s файла
Здравствуйте!

Имена обработчиков в startup файлах IDE Keil и IDE IAR для микроконтроллеров 1986ВЕ9х совпадают с точностью до регистра букв (регистр важен, иначе TIMER1_IRQHandler и Timer1_IRQHandler являются разными функциями).

Подскажите, пожалуйста, с какими конкретно прерываниями Вы работаете? Ведется ли корректная работа без замены в Reset_Handler функции "SystemInit" на "main"? Также следует выполнить тестирование в рамках простого проекта с организацией и обработкой прерывания вокруг используемого периферийного блока и любого другого - возникают ли в целом прерывания? В режиме отладки попытаться проконтролировать в обоих случаях наличие возникновения флагов прерывания или событий, которые предшествуют выходу в обработчик. Если Вами будет зафиксирована разность в работе упрощенных проектов с зафиксированным поведением в IDE Keil и IDE IAR, то прикрепите данные проекты либо в отдельном посте на форуме, либо есть возможность отправить проекты напрямую на электронную почту отдела технической поддержки компании Миландр support@milandr.ru. Спасибо.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-сен-27 13:42 
Не в сети

Зарегистрирован: 2018-дек-17 15:20
Сообщения: 168
Организация: частное лицо
PUBWEAK Reset_Handler
SECTION .text:CODE:REORDER:NOROOT(2)
Reset_Handler
LDR R0, =main//SystemInit
BLX R0
LDR R0, =__iar_program_start
BX R0
main//SystemInit - комментарии должны начинаться с ";" (точка с запятой) а не "//"


Вернуться к началу
СообщениеДобавлено: 2021-сен-27 13:56 
Не в сети

Зарегистрирован: 2015-окт-29 15:54
Сообщения: 38
Lampadov писал(а): *
nikitab900 писал(а): *
Добрый день! Перешел с keil на iar, собрал тот же самый проект что и в keil, заменив только стартап (*.s) файл. Перестали работать прерывания (начинаются "блуждания" по памяти)... Стартап файл взял из SPL, только заменил в нем "SystemInit" на "main", так как не использую SPL в своем проекте и не хочу ничего тянуть от туда. Что может быть не так? в Keil все работает хорошо, собираю из одних и тех же исходников, кроме *.s файла
Здравствуйте!

Имена обработчиков в startup файлах IDE Keil и IDE IAR для микроконтроллеров 1986ВЕ9х совпадают с точностью до регистра букв (регистр важен, иначе TIMER1_IRQHandler и Timer1_IRQHandler являются разными функциями).

Подскажите, пожалуйста, с какими конкретно прерываниями Вы работаете? Ведется ли корректная работа без замены в Reset_Handler функции "SystemInit" на "main"? Также следует выполнить тестирование в рамках простого проекта с организацией и обработкой прерывания вокруг используемого периферийного блока и любого другого - возникают ли в целом прерывания? В режиме отладки попытаться проконтролировать в обоих случаях наличие возникновения флагов прерывания или событий, которые предшествуют выходу в обработчик. Если Вами будет зафиксирована разность в работе упрощенных проектов с зафиксированным поведением в IDE Keil и IDE IAR, то прикрепите данные проекты либо в отдельном посте на форуме, либо есть возможность отправить проекты напрямую на электронную почту отдела технической поддержки компании Миландр support@milandr.ru. Спасибо.
Да, с именами все ок. В моем проекте используются прерывания от Timer1 и от DMA при работе с АЦП. С IAR работаю только пару дней, может есть какие-то особые настройки через саму среду, которые могут влиять на прерывания? Отладчик J-link оригинальный. Может быть, что эта проблема появляется только в дебаге? Может кто-то сталкивался. Без дебагинга пока не могу проверить.


Вернуться к началу
СообщениеДобавлено: 2021-сен-27 13:57 
Не в сети

Зарегистрирован: 2015-окт-29 15:54
Сообщения: 38
Sergey3141592 писал(а): *
PUBWEAK Reset_Handler
SECTION .text:CODE:REORDER:NOROOT(2)
Reset_Handler
LDR R0, =main//SystemInit
BLX R0
LDR R0, =__iar_program_start
BX R0
main//SystemInit - комментарии должны начинаться с ";" (точка с запятой) а не "//"
Спасибо! Поправил. Странно что компилятор не ругался...


Вернуться к началу
СообщениеДобавлено: 2021-сен-27 14:06 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
nikitab900 писал(а): *
Lampadov писал(а): *
nikitab900 писал(а): *
Добрый день! Перешел с keil на iar, собрал тот же самый проект что и в keil, заменив только стартап (*.s) файл. Перестали работать прерывания (начинаются "блуждания" по памяти)... Стартап файл взял из SPL, только заменил в нем "SystemInit" на "main", так как не использую SPL в своем проекте и не хочу ничего тянуть от туда. Что может быть не так? в Keil все работает хорошо, собираю из одних и тех же исходников, кроме *.s файла
Здравствуйте!

Имена обработчиков в startup файлах IDE Keil и IDE IAR для микроконтроллеров 1986ВЕ9х совпадают с точностью до регистра букв (регистр важен, иначе TIMER1_IRQHandler и Timer1_IRQHandler являются разными функциями).

Подскажите, пожалуйста, с какими конкретно прерываниями Вы работаете? Ведется ли корректная работа без замены в Reset_Handler функции "SystemInit" на "main"? Также следует выполнить тестирование в рамках простого проекта с организацией и обработкой прерывания вокруг используемого периферийного блока и любого другого - возникают ли в целом прерывания? В режиме отладки попытаться проконтролировать в обоих случаях наличие возникновения флагов прерывания или событий, которые предшествуют выходу в обработчик. Если Вами будет зафиксирована разность в работе упрощенных проектов с зафиксированным поведением в IDE Keil и IDE IAR, то прикрепите данные проекты либо в отдельном посте на форуме, либо есть возможность отправить проекты напрямую на электронную почту отдела технической поддержки компании Миландр support@milandr.ru. Спасибо.
Да, с именами все ок. В моем проекте используются прерывания от Timer1 и от DMA при работе с АЦП. С IAR работаю только пару дней, может есть какие-то особые настройки через саму среду, которые могут влиять на прерывания? Отладчик J-link оригинальный. Может быть, что эта проблема появляется только в дебаге? Может кто-то сталкивался. Без дебагинга пока не могу проверить.
Спасибо за дополнительную информацию. Проблема заключается в том, что когда происходит отработка исключения Reset_Handler, то Вы, вызывая переход сразу на функцию main, пропускаете запуск функции __iar_program_start, которая является глобальной в IAR и требуется для базовой конфигурации микроконтроллера по части установки стека/кучи, SP и др., соответственно, сбой может быть вызван отсутствием вызова данной функции. Важно отметить, что в конце отработки IDE IAR функции __iar_program_start, программа сама перейдет на Вашу функцию main, соответственно, можно вовсе из файла startup.s исключить вызов проприетарной функции SystemInit, не вызывать вместо неё функцию main, а отдать управление функции __iar_program_start.

Сообщите, пожалуйста, решает ли это Вашу проблему? Спасибо.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-сен-27 15:44 
Не в сети

Зарегистрирован: 2015-окт-29 15:54
Сообщения: 38
Lampadov писал(а): *
nikitab900 писал(а): *
Lampadov писал(а): *


Здравствуйте!

Имена обработчиков в startup файлах IDE Keil и IDE IAR для микроконтроллеров 1986ВЕ9х совпадают с точностью до регистра букв (регистр важен, иначе TIMER1_IRQHandler и Timer1_IRQHandler являются разными функциями).

Подскажите, пожалуйста, с какими конкретно прерываниями Вы работаете? Ведется ли корректная работа без замены в Reset_Handler функции "SystemInit" на "main"? Также следует выполнить тестирование в рамках простого проекта с организацией и обработкой прерывания вокруг используемого периферийного блока и любого другого - возникают ли в целом прерывания? В режиме отладки попытаться проконтролировать в обоих случаях наличие возникновения флагов прерывания или событий, которые предшествуют выходу в обработчик. Если Вами будет зафиксирована разность в работе упрощенных проектов с зафиксированным поведением в IDE Keil и IDE IAR, то прикрепите данные проекты либо в отдельном посте на форуме, либо есть возможность отправить проекты напрямую на электронную почту отдела технической поддержки компании Миландр support@milandr.ru. Спасибо.
Да, с именами все ок. В моем проекте используются прерывания от Timer1 и от DMA при работе с АЦП. С IAR работаю только пару дней, может есть какие-то особые настройки через саму среду, которые могут влиять на прерывания? Отладчик J-link оригинальный. Может быть, что эта проблема появляется только в дебаге? Может кто-то сталкивался. Без дебагинга пока не могу проверить.
Спасибо за дополнительную информацию. Проблема заключается в том, что когда происходит отработка исключения Reset_Handler, то Вы, вызывая переход сразу на функцию main, пропускаете запуск функции __iar_program_start, которая является глобальной в IAR и требуется для базовой конфигурации микроконтроллера по части установки стека/кучи, SP и др., соответственно, сбой может быть вызван отсутствием вызова данной функции. Важно отметить, что в конце отработки IDE IAR функции __iar_program_start, программа сама перейдет на Вашу функцию main, соответственно, можно вовсе из файла startup.s исключить вызов проприетарной функции SystemInit, не вызывать вместо неё функцию main, а отдать управление функции __iar_program_start.

Сообщите, пожалуйста, решает ли это Вашу проблему? Спасибо.
Большое спасибо за помощь! Но пока не помогло... Reset hendler изменил следующим видом:
Reset_Handler
;LDR R0, =main;SystemInit
;BLX R0
LDR R0, =__iar_program_start
BX R0
Т.е. закомментировал строки относящиеся к SystemInit. Но поведение осталось то же самое - когда взводится флаг прерывания по таймеру - в окне Disasembly (при нажатии паузы во время отладки) программа попадает на рандомные адреса далеко за рамки исполняемого кода...


Вернуться к началу
СообщениеДобавлено: 2021-сен-27 16:34 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
nikitab900 писал(а): *
Lampadov писал(а): *
nikitab900 писал(а): *


Да, с именами все ок. В моем проекте используются прерывания от Timer1 и от DMA при работе с АЦП. С IAR работаю только пару дней, может есть какие-то особые настройки через саму среду, которые могут влиять на прерывания? Отладчик J-link оригинальный. Может быть, что эта проблема появляется только в дебаге? Может кто-то сталкивался. Без дебагинга пока не могу проверить.
Спасибо за дополнительную информацию. Проблема заключается в том, что когда происходит отработка исключения Reset_Handler, то Вы, вызывая переход сразу на функцию main, пропускаете запуск функции __iar_program_start, которая является глобальной в IAR и требуется для базовой конфигурации микроконтроллера по части установки стека/кучи, SP и др., соответственно, сбой может быть вызван отсутствием вызова данной функции. Важно отметить, что в конце отработки IDE IAR функции __iar_program_start, программа сама перейдет на Вашу функцию main, соответственно, можно вовсе из файла startup.s исключить вызов проприетарной функции SystemInit, не вызывать вместо неё функцию main, а отдать управление функции __iar_program_start.

Сообщите, пожалуйста, решает ли это Вашу проблему? Спасибо.
Большое спасибо за помощь! Но пока не помогло... Reset hendler изменил следующим видом:
Reset_Handler
;LDR R0, =main;SystemInit
;BLX R0
LDR R0, =__iar_program_start
BX R0
Т.е. закомментировал строки относящиеся к SystemInit. Но поведение осталось то же самое - когда взводится флаг прерывания по таймеру - в окне Disasembly (при нажатии паузы во время отладки) программа попадает на рандомные адреса далеко за рамки исполняемого кода...
Спасибо за поясняющую информацию. Сообщите, пожалуйста, адреса переходов меняются при каждом событии прерывания? Что это за адреса и с каких адресов исполняется Ваша программа? Дополнительно сообщите, какие адреса обработчиков расположены в начале памяти исполняемой программы для используемых прерываний (адрес обработчика лежит по адресу согласно карте прерываний в начале памяти исполняемого кода)? Пытались ли Вы производить запуск программы из ОЗУ? В IAR это можно сделать согласно инструкции из статьи информационного портала отдела технической поддержки компании Миландр "Запуск программы из ОЗУ в среде IAR".

Просьба также обратить внимание на рекомендации, выданные ранее, в частности, работают ли в целом какие-либо прерывания на более простом проекте, в том числе с учётом прохождения функции SystemInit. Если возможно свести к минимуму объем Вашего проекта с наличием данной ошибки, то просьба прислать его нам, как и сообщалось ранее, для детального анализа.

Спасибо.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-сен-27 16:42 
Не в сети

Зарегистрирован: 2015-окт-29 15:54
Сообщения: 38
Lampadov писал(а): *
nikitab900 писал(а): *
Lampadov писал(а): *


Спасибо за дополнительную информацию. Проблема заключается в том, что когда происходит отработка исключения Reset_Handler, то Вы, вызывая переход сразу на функцию main, пропускаете запуск функции __iar_program_start, которая является глобальной в IAR и требуется для базовой конфигурации микроконтроллера по части установки стека/кучи, SP и др., соответственно, сбой может быть вызван отсутствием вызова данной функции. Важно отметить, что в конце отработки IDE IAR функции __iar_program_start, программа сама перейдет на Вашу функцию main, соответственно, можно вовсе из файла startup.s исключить вызов проприетарной функции SystemInit, не вызывать вместо неё функцию main, а отдать управление функции __iar_program_start.

Сообщите, пожалуйста, решает ли это Вашу проблему? Спасибо.
Большое спасибо за помощь! Но пока не помогло... Reset hendler изменил следующим видом:
Reset_Handler
;LDR R0, =main;SystemInit
;BLX R0
LDR R0, =__iar_program_start
BX R0
Т.е. закомментировал строки относящиеся к SystemInit. Но поведение осталось то же самое - когда взводится флаг прерывания по таймеру - в окне Disasembly (при нажатии паузы во время отладки) программа попадает на рандомные адреса далеко за рамки исполняемого кода...
Спасибо за поясняющую информацию. Сообщите, пожалуйста, адреса переходов меняются при каждом событии прерывания? Что это за адреса и с каких адресов исполняется Ваша программа? Дополнительно сообщите, какие адреса обработчиков расположены в начале памяти исполняемой программы для используемых прерываний (адрес обработчика лежит по адресу согласно карте прерываний в начале памяти исполняемого кода)? Пытались ли Вы производить запуск программы из ОЗУ? В IAR это можно сделать согласно инструкции из статьи информационного портала отдела технической поддержки компании Миландр "Запуск программы из ОЗУ в среде IAR".

Просьба также обратить внимание на рекомендации, выданные ранее, в частности, работают ли в целом какие-либо прерывания на более простом проекте, в том числе с учётом прохождения функции SystemInit. Если возможно свести к минимуму объем Вашего проекта с наличием данной ошибки, то просьба прислать его нам, как и сообщалось ранее, для детального анализа.

Спасибо.
Вот проект с минимумом функционала, который повторяет поведение с прерываниями: https://drive.google.com/file/d/1wyUlDx ... sp=sharing


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 377 сообщений ]  На страницу « 122 23 24 25 26 »

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB