Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC1

Вопросы по определенному микроконтроллеру необходимо задавать в соответствующем подразделе.
Serg152
Сообщения: 12
Зарегистрирован: 2016-фев-10 08:03
Организация: ПАО ПКО "Теплообменник"

Re: MDR32F9x Standart Peripheral Library

Сообщение Serg152 » 2016-июн-29 13:28

-=Sergei=- писал(а):Исправлено:
1. Поправленный файл MDR32F9Qx_USB_Library.pdf.
2. Демо пример с добавленным каталогом Library.
Добрый день. Ссылка не работает, выложите этот файл еще раз. Спасибо.

H_h
Сообщения: 4
Зарегистрирован: 2016-июл-05 19:21
Организация: ISTU

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение H_h » 2016-июл-05 19:30

Добрый вечер. Окунулся в мир мк миландр , и вообще мк .
А если быть точнее тону .
Пытался установить mdr_spl_v1.4.1.pack для кейл , получил ошибку No uVision SystemViewer file created .
Нужный мне MDR1986BE91 при создании проэкта , кейл показывает . Но в Manage Run - Time Environment нету Cortex M3.
Возможно я , что - то не обновил . Так как вообще в первый раз сталкиваюсь со всем этим . И руководствуюсь https://www.youtube.com/watch?v=jhQp_5- ... WOXBV_jXNm.
P.S Сильно не ругайте , лучше посоветуй те что нибудь . ( если в скайпе то вообще шикарно)

Аватара пользователя
kravitz
Сообщения: 65
Зарегистрирован: 2014-дек-09 15:26

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение kravitz » 2016-июл-05 23:05

H_h писал(а): Пытался установить mdr_spl_v1.4.1.pack для кейл , получил ошибку No uVision SystemViewer file created .
Попробуйте взять .pack отсюда: Пакет для GNU ARM Eclipse CMSIS Packs Manager

upd
Прямая ссылка на пакет: Milandr.MDR1986BExx.1.4.2.pack

LinuxFanatic
Сообщения: 109
Зарегистрирован: 2014-сен-16 11:58

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение LinuxFanatic » 2016-сен-06 23:02

8daemon писал(а):Я разделил библиотеку периферии от примеров и дополнительных файлов IDE с целью уменьшение размера библиотеки:
https://github.com/eldarkg/emdr1986x-std-per-lib
https://github.com/eldarkg/emdr1986x-std-per-lib-doc
Здравствуйте! Я совершенно новый пользователь этой библиотеки. Ранее имел дело с Keil для 1986ве92. Меня интересует то, как собрать пример USB Echo для LDM-K1986BE92QI.

Прежде чем написать сюда, я попытался это сделать в среде Keil 4.72, получил кучу ошибок типов и понял что что-то делаю не так. Подскажите, что нужно сделать чтобы собрать? Подходит также Embedded ARM набор компиляторов из PPA Ubuntu.

8daemon
Сообщения: 170
Зарегистрирован: 2012-дек-11 21:35
Организация: ...
Откуда: Казань

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение 8daemon » 2016-сен-07 20:03

LinuxFanatic писал(а):
8daemon писал(а):Я разделил библиотеку периферии от примеров и дополнительных файлов IDE с целью уменьшение размера библиотеки:
https://github.com/eldarkg/emdr1986x-std-per-lib
https://github.com/eldarkg/emdr1986x-std-per-lib-doc
Здравствуйте! Я совершенно новый пользователь этой библиотеки. Ранее имел дело с Keil для 1986ве92. Меня интересует то, как собрать пример USB Echo для LDM-K1986BE92QI.

Прежде чем написать сюда, я попытался это сделать в среде Keil 4.72, получил кучу ошибок типов и понял что что-то делаю не так. Подскажите, что нужно сделать чтобы собрать? Подходит также Embedded ARM набор компиляторов из PPA Ubuntu.
1) определитесь с набором компиляции (допустим набор gcc)
2) напишите скрипт сборки (make или cmake). Для справки смотрите тут /usr/share/gcc-arm-embedded/samples/src/ (на линухе) и https://github.com/eldarkg/emdr1986x-st ... /README.md
3) произведите сборку примера. Пример тут https://github.com/eldarkg/emdr1986x-st ... /VCOM_Echo
4) выложите свои ошибки сборки, которые вызывают у вас сложность
Там будем уже смотреть

LinuxFanatic
Сообщения: 109
Зарегистрирован: 2014-сен-16 11:58

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение LinuxFanatic » 2016-сен-07 22:17

8daemon писал(а):2) напишите скрипт сборки (make или cmake). Для справки смотрите тут /usr/share/gcc-arm-embedded/samples/src/ (на линухе) и https://github.com/eldarkg/emdr1986x-st ... /README.md
3) произведите сборку примера. Пример тут https://github.com/eldarkg/emdr1986x-st ... /VCOM_Echo
Всё это я читал, из ..samples/src взял Makefile и makefile.conf, но всё равно не понимаю куда прописать include-path и вообще исходники.

Можно ли Вас попросить скинуть хотя бы один пример Makefile для проектов для mdr1986 и компилятора GCC? А может уже готовый есть пример где-то лежит? Моего 10 лет опыта работы работы с МК не хватает на Makefile, ибо всегда использовал всё что угодно кроме него...

Код: Выделить всё

├── inc
│   ├── MDR32F9Qx_config.h
│   └── MDR32F9Qx_usb_handlers.h
├── Makefile
├── makefile.conf
├── readme.txt
├── src
│   └── main.c
└── USB_CDC_DRIVER
    └── MDRVComport.inf

Код: Выделить всё

# Selecting Core
CORTEX_M=3

# Use newlib-nano. To disable it, specify USE_NANO=
USE_NANO=--specs=nano.specs

# Use seimhosting or not
USE_SEMIHOST=--specs=rdimon.specs
USE_NOHOST=--specs=nosys.specs

CORE=CM$(CORTEX_M)
BASE=../..

# Compiler & Linker
CC=arm-none-eabi-gcc
CXX=arm-none-eabi-g++

# Options for specific architecture
ARCH_FLAGS=-mthumb -mcpu=cortex-m$(CORTEX_M)

# Startup code
STARTUP=$(BASE)/startup/startup_ARM$(CORE).S

# -Os -flto -ffunction-sections -fdata-sections to compile for code size
CFLAGS=$(ARCH_FLAGS) $(STARTUP_DEFS) -Os -flto -ffunction-sections -fdata-sections
CXXFLAGS=$(CFLAGS)

# Link for code size
GC=-Wl,--gc-sections

# Create map file
MAP=-Wl,-Map=$(NAME).map

Код: Выделить всё

include makefile.conf
NAME=usb
STARTUP_DEFS=-D__STARTUP_CLEAR_BSS -D__START=main

LDSCRIPTS=-L. -L$(BASE)/ldscripts -T nokeep.ld
LFLAGS=$(USE_NANO) $(USE_NOHOST) $(LDSCRIPTS) $(GC) $(MAP)

$(NAME)-$(CORE).axf: src/main.c $(STARTUP)
        $(CC) $^ $(CFLAGS) $(LFLAGS) -o $@

clean: 
        rm -f $(NAME)*.axf *.map *.o
Результат:

Код: Выделить всё

make: *** Нет правила для сборки цели `../../startup/startup_ARMCM3.S', требуемой для `usb-CM3.axf'.  Останов.
Я конечно же понимаю почему такой результат, просто нужен пример чтобы прописать все пути верно. Боюсь, совет смотреть примеры в этом каталоге не годятся.

8daemon
Сообщения: 170
Зарегистрирован: 2012-дек-11 21:35
Организация: ...
Откуда: Казань

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение 8daemon » 2016-сен-08 19:06

LinuxFanatic писал(а):
8daemon писал(а):2) напишите скрипт сборки (make или cmake). Для справки смотрите тут /usr/share/gcc-arm-embedded/samples/src/ (на линухе) и https://github.com/eldarkg/emdr1986x-st ... /README.md
3) произведите сборку примера. Пример тут https://github.com/eldarkg/emdr1986x-st ... /VCOM_Echo
Всё это я читал, из ..samples/src взял Makefile и makefile.conf, но всё равно не понимаю куда прописать include-path и вообще исходники.

Можно ли Вас попросить скинуть хотя бы один пример Makefile для проектов для mdr1986 и компилятора GCC? А может уже готовый есть пример где-то лежит? Моего 10 лет опыта работы работы с МК не хватает на Makefile, ибо всегда использовал всё что угодно кроме него...

Код: Выделить всё

├── inc
│   ├── MDR32F9Qx_config.h
│   └── MDR32F9Qx_usb_handlers.h
├── Makefile
├── makefile.conf
├── readme.txt
├── src
│   └── main.c
└── USB_CDC_DRIVER
    └── MDRVComport.inf

Код: Выделить всё

# Selecting Core
CORTEX_M=3

# Use newlib-nano. To disable it, specify USE_NANO=
USE_NANO=--specs=nano.specs

# Use seimhosting or not
USE_SEMIHOST=--specs=rdimon.specs
USE_NOHOST=--specs=nosys.specs

CORE=CM$(CORTEX_M)
BASE=../..

# Compiler & Linker
CC=arm-none-eabi-gcc
CXX=arm-none-eabi-g++

# Options for specific architecture
ARCH_FLAGS=-mthumb -mcpu=cortex-m$(CORTEX_M)

# Startup code
STARTUP=$(BASE)/startup/startup_ARM$(CORE).S

# -Os -flto -ffunction-sections -fdata-sections to compile for code size
CFLAGS=$(ARCH_FLAGS) $(STARTUP_DEFS) -Os -flto -ffunction-sections -fdata-sections
CXXFLAGS=$(CFLAGS)

# Link for code size
GC=-Wl,--gc-sections

# Create map file
MAP=-Wl,-Map=$(NAME).map

Код: Выделить всё

include makefile.conf
NAME=usb
STARTUP_DEFS=-D__STARTUP_CLEAR_BSS -D__START=main

LDSCRIPTS=-L. -L$(BASE)/ldscripts -T nokeep.ld
LFLAGS=$(USE_NANO) $(USE_NOHOST) $(LDSCRIPTS) $(GC) $(MAP)

$(NAME)-$(CORE).axf: src/main.c $(STARTUP)
        $(CC) $^ $(CFLAGS) $(LFLAGS) -o $@

clean: 
        rm -f $(NAME)*.axf *.map *.o
Результат:

Код: Выделить всё

make: *** Нет правила для сборки цели `../../startup/startup_ARMCM3.S', требуемой для `usb-CM3.axf'.  Останов.
Я конечно же понимаю почему такой результат, просто нужен пример чтобы прописать все пути верно. Боюсь, совет смотреть примеры в этом каталоге не годятся.
Я щас использую cmake.
Открыть Пример
CMakeLists.txt

Код: Выделить всё

cmake_minimum_required(VERSION 3.5)

set(CMAKE_SYSTEM_NAME Generic)
set(CROSS_COMPILE arm-none-eabi-)
set(CMAKE_C_COMPILER ${CROSS_COMPILE}gcc)
set(CMAKE_C_COMPILER_FORCED TRUE)

project(my-prj C ASM)

# Definitions
add_definitions(-DUSE_MDR1986VE9x)
add_definitions(-D__STARTUP_CLEAR_BSS)
add_definitions(-D__START=main)

# Compiler flags
set(ARCH_FLAGS "-mcpu=cortex-m3 -mthumb")
set(OPT_FLAGS "-O2")
set(N_OPT_FLAGS "-O0 -ggdb3")

add_subdirectory(lib)

# Project files
include_directories(
	include
)

set(SRC
	main.c
        other.c
)

# Library files
include_directories(
	lib/emdr/Config
	lib/emdr/CMSIS/CM3/CoreSupport
	lib/emdr/CMSIS/CM3/DeviceSupport/MDR32F9Qx/inc
	lib/emdr/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup
	lib/emdr/MDR32F9Qx_StdPeriph_Driver/inc
)

set(LINKER_SCRIPT
	lib/emdr/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/gcc/MDR32F9Qx.ld
)

# Compiler flags
set(COMMON_FLAGS "-Wall -Wextra -Wshadow -Wsign-conversion")
set(CLEAR_SECTION_FLAGS "-ffunction-sections -fdata-sections")

set(RELEASE_FLAGS "${ARCH_FLAGS} ${OPT_FLAGS} ${COMMON_FLAGS} ${CLEAR_SECTION_FLAGS}")
set(DEBUG_FLAGS "${ARCH_FLAGS} ${N_OPT_FLAGS} ${COMMON_FLAGS}")

if(CMAKE_BUILD_TYPE STREQUAL "")
	set(CMAKE_ASM_FLAGS "${DEBUG_FLAGS}")
	set(CMAKE_C_FLAGS "${DEBUG_FLAGS}")
endif()

set(CMAKE_ASM_FLAGS_RELEASE "${RELEASE_FLAGS}")
set(CMAKE_ASM_FLAGS_DEBUG "${DEBUG_FLAGS}")
set(CMAKE_C_FLAGS_RELEASE "${RELEASE_FLAGS}")
set(CMAKE_C_FLAGS_DEBUG "${DEBUG_FLAGS}")

# Linker flags
# Use free environment
set(USE_FREE "-ffreestanding -nostartfiles")
# Use newlib-nano
set(USE_NANO "--specs=nano.specs")
# Use semihosting or not
set(USE_SEMIHOST "--specs=rdimon.specs")
set(USE_NOHOST "--specs=nosys.specs")
# Use garbage collection
set(USE_GC "-Wl,--gc-sections")
# Create map file
set(USE_MAP "-Wl,-Map=${PROJECT_NAME}.map")

set(CMAKE_EXE_LINKER_FLAGS "-T${CMAKE_SOURCE_DIR}/${LINKER_SCRIPT}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${USE_MAP} ${USE_GC}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${USE_FREE}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${USE_NOHOST}")

add_executable(${PROJECT_NAME} ${SRC})
target_link_libraries(${PROJECT_NAME} stddrv)
set_property(TARGET ${PROJECT_NAME} PROPERTY C_STANDARD 11)
set_property(TARGET ${PROJECT_NAME} PROPERTY C_STANDARD_REQUIRED ON)

add_custom_target(hex
	ALL
	COMMAND ${CMAKE_OBJCOPY} -Oihex ${PROJECT_NAME} ${PROJECT_NAME}.hex
	DEPENDS ${PROJECT_NAME}
	COMMENT "Generating Hex file ${PROJECT_NAME}.hex"
)
lib/CMakeLists.txt

Код: Выделить всё

add_subdirectory(emdr)
lib/emdr/CMakeLists.txt

Код: Выделить всё

include_directories(
	Config
	CMSIS/CM3/CoreSupport
	CMSIS/CM3/DeviceSupport/MDR32F9Qx/inc
	CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup
	MDR32F9Qx_StdPeriph_Driver/inc
)

set(SRC
	CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/gcc/startup_MDR32F9Qx.S
	CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/system_MDR32F9Qx.c
	MDR32F9Qx_StdPeriph_Driver/src/MDR32F9Qx_adc.c
	MDR32F9Qx_StdPeriph_Driver/src/MDR32F9Qx_dac.c
	MDR32F9Qx_StdPeriph_Driver/src/MDR32F9Qx_eeprom.c
	MDR32F9Qx_StdPeriph_Driver/src/MDR32F9Qx_port.c
	MDR32F9Qx_StdPeriph_Driver/src/MDR32F9Qx_power.c
	MDR32F9Qx_StdPeriph_Driver/src/MDR32F9Qx_rst_clk.c
	MDR32F9Qx_StdPeriph_Driver/src/MDR32F9Qx_ssp.c
	MDR32F9Qx_StdPeriph_Driver/src/MDR32F9Qx_timer.c
)

# Compiler flags
set(COMMON_FLAGS "-Wall -Wextra -Wshadow")
set(COMMON_FLAGS "${COMMON_FLAGS} -ffunction-sections -fdata-sections")

set(RELEASE_FLAGS "${ARCH_FLAGS} ${OPT_FLAGS} ${COMMON_FLAGS}")
set(DEBUG_FLAGS "${ARCH_FLAGS} ${N_OPT_FLAGS} ${COMMON_FLAGS}")

if(CMAKE_BUILD_TYPE STREQUAL "")
	set(CMAKE_ASM_FLAGS "${DEBUG_FLAGS}")
	set(CMAKE_C_FLAGS "${DEBUG_FLAGS}")
endif()

set(CMAKE_ASM_FLAGS_RELEASE "${RELEASE_FLAGS}")
set(CMAKE_ASM_FLAGS_DEBUG "${DEBUG_FLAGS}")
set(CMAKE_C_FLAGS_RELEASE "${RELEASE_FLAGS}")
set(CMAKE_C_FLAGS_DEBUG "${DEBUG_FLAGS}")

add_library(stddrv STATIC ${SRC})
Закрыть
Это только пример, не обязательно к исполнению как есть

LinuxFanatic
Сообщения: 109
Зарегистрирован: 2014-сен-16 11:58

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение LinuxFanatic » 2016-сен-08 21:15

8daemon писал(а):Это только пример, не обязательно к исполнению как есть
Жуть, неужели у автора библиотеки нет более простого примера ее использования?
Какие параметры являются ключевыми из всего этого гигантского списка?

Есть статья на хабре как обучить Qt Creator для миландров - я наверное это попробую и выложу сюда результат попыток.

8daemon
Сообщения: 170
Зарегистрирован: 2012-дек-11 21:35
Организация: ...
Откуда: Казань

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение 8daemon » 2016-сен-08 22:11

LinuxFanatic писал(а):
8daemon писал(а):Это только пример, не обязательно к исполнению как есть
Жуть, неужели у автора библиотеки нет более простого примера ее использования?
Какие параметры являются ключевыми из всего этого гигантского списка?

Есть статья на хабре как обучить Qt Creator для миландров - я наверное это попробую и выложу сюда результат попыток.
Во-первых я не автор этой библиотеки, а я и другие люди лишь вносим и исправляем различные ошибки в этой библиотеки.
Во-вторых у "автора" нет времени объяснять азы.
В-третьих ключевые моменты описаны здесь https://github.com/eldarkg/emdr1986x-st ... /README.md.
Проще уж написать скрипт сборки, чем обучать Qt. Все равно скрипт писать придется.
Если вы программист думаю сможете разобраться без посторонней помощи, благо весь интернет кишит примерами по работе с микроконтроллерами, а make изучить недолго (основные возможности).

LinuxFanatic
Сообщения: 109
Зарегистрирован: 2014-сен-16 11:58

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение LinuxFanatic » 2016-сен-08 22:46

8daemon писал(а):Во-первых я не автор этой библиотеки, а я и другие люди лишь вносим и исправляем различные ошибки в этой библиотеки.
Во-вторых у "автора" нет времени объяснять азы.
В-третьих ключевые моменты описаны здесь https://github.com/eldarkg/emdr1986x-st ... /README.md.
Проще уж написать скрипт сборки, чем обучать Qt. Все равно скрипт писать придется.
Если вы программист думаю сможете разобраться без посторонней помощи, благо весь интернет кишит примерами по работе с микроконтроллерами, а make изучить недолго (основные возможности).
Всё понятно. Пробовал статью https://sohabr.net/habr/post/259269/ и прописал свои правильные пути - не подает признаков жизни, процесс сборки даже не начинается, буду пробовать еще.

Хорошо, а эта SPL может собираться всё таки в Keil (с чего я и начинал пробовать). Вроде на страницах этой темы просматривается возможность этого. Мои первые попытки уткнулись в ошибки, которые можно было объяснить лишь компилятором (например, не знало uint32 или как-то так типы назывались, а нигде в хедерах это не объявлялось).

Пожалуйста, у меня абсолютно никаких претензий. Буду пробовать еще раз всё - и Keil и cmake и просто make и Qt/QBS. Просто это немного странно, есть библиотека, есть примера, однако возможности собрать это посмотреть прямо сейчас - нет. Но я не сдаюсь :)

prostoRoman
Сообщения: 1388
Зарегистрирован: 2009-июл-21 14:13
Откуда: Тула
Контактная информация:

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение prostoRoman » 2016-сен-09 21:47

LinuxFanatic писал(а):Здравствуйте! Я совершенно новый пользователь этой библиотеки. Ранее имел дело с Keil для 1986ве92. Меня интересует то, как собрать пример USB Echo для LDM-K1986BE92QI.

Прежде чем написать сюда, я попытался это сделать в среде Keil 4.72, получил кучу ошибок типов и понял что что-то делаю не так. Подскажите, что нужно сделать чтобы собрать? Подходит также Embedded ARM набор компиляторов из PPA Ubuntu.
Вот ссылка на пак для Keil 5 https://github.com/in4lio/mdr1986x-pack-repo
Для более старых версий придётся открыть пак как ZIP-архив, распаковать по подпапкам кейла и прописать пути.

ЗЫ: у меня подружить МК и QtCreator толком так и не вышло. Разве что только код набирать удобно.
сочувствующий…

igorbounov
Сообщения: 76
Зарегистрирован: 2009-июл-20 10:04
Откуда: Волгодонск
Контактная информация:

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение igorbounov » 2016-сен-22 09:14

Читал-читал, так и не понял: можно ли, аналогично тому, как это делается в процессорах stm32, использовать часть Flash-памяти для записи и чтения своих данных. Не нашел тут ни такого примера в библиотеке, ни документации, в которой бы это внятно описывалось. В документации на процессор говорится, что запись в flash-память можно делать из кода, выполняющегося в ОЗУ. В stm32f103 я такого ограничения не увидел. Получается, что использовать память в 1986ВЕ92 для записи данных неудобно?


igorbounov
Сообщения: 76
Зарегистрирован: 2009-июл-20 10:04
Откуда: Волгодонск
Контактная информация:

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение igorbounov » 2016-сен-22 09:44

Спасибо!
Но все равно нужно делать по-своему, так, как указано в ссылке, и совсем не так, как в заметках (Appllcation Note 2594) STmicroelectronics? То есть, я хочу выяснить - механизм записи в flash-память в 1986ВЕ92 реализован совсем не так, как в stm32?

prostoRoman
Сообщения: 1388
Зарегистрирован: 2009-июл-21 14:13
Откуда: Тула
Контактная информация:

Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC

Сообщение prostoRoman » 2016-сен-22 12:29

1986ВЕ9х вообще никак не соотносится с STM32.
сочувствующий…

Ответить

Вернуться в «32-разрядные микроконтроллеры (1986ВЕ9х, 1986ВЕ1Т, 1986ВЕ2х, 1986ВЕ3Т, 1986ВЕ4У, 1986ВЕ8Т, 1923ВК014)»