Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F042 pack для Keil 5
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
smk
Кто может работал с STM32F042? Есть ли pack для них? Не вижу их в меню контроллеров, а очень бы нужно.
Jekin
Есть для этих контроллеров pack. Смотрите прикрепленный файл.
smk
С проблемой разобрался теперь библиотеки USB и ETH отсутствуют. С официального сайта они ставятся?
Jekin
Теперь эти библиотеки называются Middleware, точно также в виде пакета устанавливаются.
smk
Если верить инсталлеру то стоят, а если визарду то нет
smk
Если верить инсталлеру то стоят, а если визарду то нет

Вот такая картина:

Нажмите для просмотра прикрепленного файла
Jekin
Просит добавить операционную систему. Некоторые компоненты из Middlware сейчас обязательно требуют для своей работы RTOS. Можете здесь еще дополнительно почитать:
http://www.keil.com/pack/doc/mw/USB/html/_...#Creation_Steps

Еще имейте в виду что CMSIS и Middlware последней версии несовместимы с последними паками для STM32. Тут написано как действовать:
http://www.keil.com/appnotes/files/apnt_266.pdf
smk
Кнопку Click the Select Pack button не вижу. нет ее.
Jekin
Цитата(smk @ Sep 24 2014, 12:19) *
Кнопку Click the Select Pack button не вижу. нет ее.

Странно, у меня она именно в том месте как в апноуте показано и расположена.
smk
Я так понимаю лишние поудалять нужно или как тут поступить

кейл 5,10 тоже?
Jekin
Надо выбрать fixed, а затем необходимую версию.

У меня 5.11
smk
Это где такое окошко?

Ладно. Ставлю 5,11. посмотрим что покажет
Jekin
Здесь:
smk
Вот-вот. Нету. Переставлю кейл, посмотрим.

Переставил на 5.11. Кнопка появилась.

Всеравно что-то не так:
Нажмите для просмотра прикрепленного файла

Вот у кого все работает сможете создать проект для stm32f042K6 c USB HID устройством?
smk
Как я понял не видит библиотеки. Что можно сделать? Пакет МДК подключен.
Jekin
Я же вам писал уже, что необходимо подключить RTOS (галочку поставить напротив Keil RTX). В вашем скриншоте это четко видно.
Посмотрите в окошко Validation Output, там сказано, чего не хватает.
smk
Вот поставил. Всеравно красное. Если убрать галку на красном то все что юсб станет желтым.
Нажмите для просмотра прикрепленного файла
Jekin
Зайдите в CMSIS Driver и отметьте там USB device. Или можете нажать кнопку Resolve: должно автоматически нужное отметить.
smk
USB device там нет. Resolve не помогает (соответственно я так понимаю) .
Jekin
А вы выбрали нужные версии библиотек в соответствии с апноутом ссылку на который я приводил выше?
smk
Кажись что-то получилось. Только пока вопрос висит, если я отметил операционку то в проекте ее использовать ведь не обязательно, это только чтоб задействовать нужные библиотеки?

У контроллера STM32F042K6 есть на борту юсб. При создании проекта юсб библиотеки я подключить не могу. Это что я не так делаю? Для 103 серии вс нормально подключается.
Jekin
Да, использовать необязательно. Но надо ее настроить через configuration wizard (файл RTX_Conf_CM.с). И имейте в виду, что функция main уже по умолчанию является отдельным процессом операционной системы.

Цитата(smk @ Sep 24 2014, 21:01) *
У контроллера STM32F042K6 есть на борту юсб. При создании проекта юсб библиотеки я подключить не могу. Это что я не так делаю? Для 103 серии вс нормально подключается.

Какие-то ошибки при подключении отображаются?
smk
Драйвера нет и ошибки что и раньше.
Jekin
Какого драйвера? скриншот прикрепите
Jekin
Так у вас же снова таже проблема: неверные версии библиотек
smk
Так это под каждый проект настраивать? не сообразил

Не помогло
Jekin
Да, под каждый проект.

Какие теперь ошибки?
smk
Если я Вас попрошу завести новый проект для STM32F042K6 и проверить есть ли там юсб драйвер и как там подключатся библиотеки для хид или сдс, не попробуете? Спасибо.

Ошибки те же. без изменений

для stm32f072 та же история
Jekin
Попробовал. В пакете STM32F0 нету драйвера для модуля USB МК. Надо брать из другого пакета (для семейства F1 или F2, там точно будет) и модифицировать его под нужный вам контроллер.
smk
Добро. Нужно искать примеры или проекты. Как взять другой драйвер не знаю. Еще бы как-то научиться подключать драйвер под RTL8201CP (ethernet).
Jekin
Создаете проект для контроллера STM32F1, добавляете USB. Либо можете взять пример (из инсталлятора пакетов). И оттуда копируете нужный вам файл, я его прикрепил (взял из проекта для STM32F103). Модифицируете его.

Что касается драйвера для RTL8201CP. Берете любой из тех, что пакет предлагает, и модифицируете его в соответствии с даташитом на RTL8201CP. Можете готовый поискать, возможно найдется где-то. Я сам когда-то для этой микросхемы физического уровня писал драйвер под Keil, но он, к сожалению, не сохранился.
smk
Не совсем понимаю какого характера модификация? Ну и хотельсь бы фирмовую библиотечку попользовать. Под 4.72 работало. Хочу stm32f042 попользовать. Хорошо под нужды подходит.

Цитата(Jekin @ Sep 24 2014, 21:05) *
Да, использовать необязательно. Но надо ее настроить через configuration wizard (файл RTX_Conf_CM.с). И имейте в виду, что функция main уже по умолчанию является отдельным процессом операционной системы.

Вот про это не совсем понял. Т.е. писать главную функцию как это обычно делается уже нельзя?
Jekin
Цитата(smk @ Sep 25 2014, 12:03) *
Не совсем понимаю какого характера модификация? Ну и хотельсь бы фирмовую библиотечку попользовать. Под 4.72 работало. Хочу stm32f042 попользовать. Хорошо под нужды подходит.


Этот драйвер - слой между периферийным модулем USB МК и компонентом File System из Middleware. Там чтение/запись в регистры, работа с прерываниями USB. Надо все это для вашего МК переписать.
smk
Цитата(Jekin @ Sep 24 2014, 21:05) *
Да, использовать необязательно. Но надо ее настроить через configuration wizard (файл RTX_Conf_CM.с). И имейте в виду, что функция main уже по умолчанию является отдельным процессом операционной системы.

Вот про это не совсем понял. Т.е. писать главную функцию как это обычно делается уже нельзя?

Цитата(Jekin @ Sep 25 2014, 12:12) *
Этот драйвер - слой между периферийным модулем USB МК и компонентом File System из Middleware. Там чтение/запись в регистры, работа с прерываниями USB. Надо все это для вашего МК переписать.

Т.е. просто адаптировать к конкретному аппаратному модулю USB? Правильно понял?
Jekin
Конечно, можно. Просто надо иметь в виду, что main - это уже не просто главная функция, а процесс операционной системы. В этой функции можно использовать API CMSIS-RTOS. Ну и не забудьте достаточный размер стека установить (там для main в конфигурационном файле операционной системы отдельная строка размера стека предусмотрена)

Цитата(smk @ Sep 25 2014, 12:35) *
Т.е. просто адаптировать к конкретному аппаратному модулю USB? Правильно понял?

Да, все верно.
smk
Код
#define OS_MAINSTKSIZE 50


Это размер стека, что имелся ввиду? Каким его обычно делают?

Цитата
.\stm32f103.axf: Error: L6218E: Undefined symbol main (referred from rtx_conf_cm.o).


Вот такая еще ошибка при компиляции. Это с галочкой ОС связано?
Jekin
Цитата(smk @ Sep 25 2014, 16:22) *
Код
#define OS_MAINSTKSIZE 50


Это размер стека, что имелся ввиду? Каким его обычно делают?

Размер стека специфичен для каждой программы. Нету универсального размера.
В конфигураторе RTOS есть галочка "проверять переполнение стека". Можете ее установить, чтобы увидеть, если размер стека недостаточен.

Цитата(smk @ Sep 25 2014, 16:22) *
Вот такая еще ошибка при компиляции. Это с галочкой ОС связано?

Похоже, что в вашей программе нет функции main
smk

Цитата
Размер стека специфичен для каждой программы. Нету универсального размера.
В конфигураторе RTOS есть галочка "проверять переполнение стека". Можете ее установить, чтобы увидеть, если размер стека недостаточен.

Я понимаю. думал есть какие-то общепринятые цифирки. А где галка? Она без ОС работает?

Цитата
Похоже, что в вашей программе нет функции main

Переработался
Jekin
Цитата(smk @ Sep 25 2014, 16:40) *
А где галка? Она без ОС работает?


Галка в файле RTX_Conf_CM.c. Это проверка стека процессов. Без ОС нету процессов.
smk
Цитата(Jekin @ Sep 25 2014, 16:45) *
Галка в файле RTX_Conf_CM.c. Это проверка стека процессов. Без ОС нету процессов.

Есть такая. Стоит по умолчанию
smk
Попытался создать проект через CubeMX. Не собирается. Відает 10 ошибок типа:
Код
usb_042 Configuration\usb_042 Configuration.axf: Error: L6406E: No space in execution regions with .ANY selector matching usbd_desc.o(.bss).

Єто что означает? Лечится как-то ? Спасибо.
toweroff
Места не хватает для размещения данных (.bss секции модуля)
smk
Странно. Это же не я нахимичил а CubeMX от ST проект создавал. Да и ничего кроме USB туда не подключалось. Как бы разобраться откуда перегруз.
toweroff
Цитата(smk @ Sep 30 2014, 13:29) *
Странно. Это же не я нахимичил а CubeMX от ST проект создавал. Да и ничего кроме USB туда не подключалось. Как бы разобраться откуда перегруз.

смотреть *.map файл, что там не помещается
smk
Цитата(toweroff @ Sep 30 2014, 12:39) *
смотреть *.map файл, что там не помещается

Нашел единственный мап и ничего он мне не дал.
Код
178 unused section(s) (total 6206 bytes) removed from the image.

Других циферок там нет
toweroff
Хмм.. действительно. Сейчас у себя объявил огромный массив, тоже нигде не увидел информации о том, что не помещается именно он.
Значит просмотреть все объявления, особое внимание обратить на глобальные массивы, кучу и т.д.
smk
Пока не ясно, но судя по буржуйским форума причина в динамическом выделении памяти. Что и как пока не знаю.
toweroff
Цитата(smk @ Sep 30 2014, 14:47) *
Пока не ясно, но судя по буржуйским форума причина в динамическом выделении памяти. Что и как пока не знаю.

нет, это не динамическое выделение, да и невозможно оно на этапе линковки wink.gif
это линкер не может уложить объявленные ZI и RW данные в указанной (указанных) для них области (областях)
а динамически память выделяется из кучи, которая, кстати, также объявлена в той же области
smk
Ставил Keil5 чтобы USB на STM32F042K6 поднять, а выходит ерунда какая-то. Что делать....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.