Миландр

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

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: настройка проекта Keil
СообщениеДобавлено: 2019-июл-16 14:13 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 41
Появился вопрос по ПРАВИЛЬНОЙ начальной настройке проекта.
Использую Keil, Software pack от миландра v1.51.
Использую процессор 1986ВЕ92У

После создания нового проекта и добавления main.cpp файла, компилятор ругается на отсутствие MDR32F9Qx_board.h.
Допустим, я его скопирую в свой проект из одного из примеров, установлю в нем
Код:
#define USE_MDR1986VE9x 
.

Далее, что делать с файлом MDR32F9Qx_config.h, расположенном в директории Config миландровского пака, где определяются настройки процессора - частоты внешнего кварца, использование ножек JTAG. Этот файл получается один на все мои проекты, коих может быть много и с разными параметрами.
Как правильно разнести этот файл по проектам? Копировать в свой проект, удалив из миландровского пака? Не очень понятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: настройка проекта Keil
СообщениеДобавлено: 2019-июл-16 15:18 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1322
Откуда: Тула
1. Правильнее было бы задать процессор USE_MDR32F9Q1_Rev1 через опции Си компилятора и ассемблера, но см. ниже.

2. По поводу *_config.h и *_board.h - мой вариант слить всё в один файл и отключить автоинклюды viewtopic.php?p=24358#p24358

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: настройка проекта Keil
СообщениеДобавлено: 2019-июл-16 17:10 
Не в сети

Зарегистрирован: 2014-авг-05 17:25
Сообщения: 41
Спасибо за совет. Наверное так и сделаю.

А почему советуете выбирать USE_MDR32F9Q1_Rev1?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: настройка проекта Keil
СообщениеДобавлено: 2019-июл-17 09:00 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1322
Откуда: Тула
QuadMan писал(а):
А почему советуете выбирать USE_MDR32F9Q1_Rev1?

Исходя из того, как написан код примеров, он ждёт дефиницию как опцию компилятора, в противном случае выставляет что-то "по умолчанию".
В реальных проектах это всё даже вредно.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: настройка проекта Keil
СообщениеДобавлено: 2019-июл-17 11:50 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 389
Откуда: ПКК "Миландр"
На сколько я понимаю логику авторов, то файл MDR32F9Qx_board.h необходим был для Keil версии 4, когда еще не было пака с выбором МК из списка. Либо когда сборка идет не в Keil. Поэтому в MDR32F9Qx_config.h файл MDR32F9Qx_board.h подключается по версии компилятора.
Код:
#if ((__CC_ARM == 0) || (__ARMCC_VERSION < 5000000))
   #include "MDR32F9Qx_board.h"
#endif

В файле board.h необходимо было раскомментировать версию отладочной платы на которой будут запускаться примеры (или самого микроконтроллера)). Поэтому видимо MDR32F9Qx_board.h и лежит в папке с примерами. Например, в PACK\Keil\MDR1986BExx\1.51\Examples\MDR1986VE1T.
Код:
#if !defined (USE_MDR32F9Q1_Rev0)  && !defined (USE_MDR32F9Q1_Rev1)  && \
    !defined (USE_MDR32F9Q2_Rev0) && !defined (USE_MDR32F9Q2_Rev1) && \
    !defined (USE_MDR32F9Q3_Rev0) && !defined (USE_MDR32F9Q3_Rev1) && \
    !defined (USE_MDR1986VE1T) && !defined(USE_MDR1986BE7T) && \
    !defined (USE_MDR1986VE3) && !defined(USE_MDR1986VE94)
/* #define USE_MDR32F9Q1_Rev0 */
/* #define USE_MDR32F9Q1_Rev1  */
/* #define USE_MDR32F9Q2_Rev0 */
/* #define USE_MDR32F9Q2_Rev1 */
/* #define USE_MDR32F9Q3_Rev0 */
/* #define USE_MDR32F9Q3_Rev1 */
/*  #define USE_MDR1986VE1T */
/* #define USE_MDR1986VE7T */

#define USE_MDR1986VE3

/* #define USE_MDR1986VE9x  */
/* #define USE_MDR1986VE94 */
#endif

Активное определение используемой демоплаты или микроконтроллера попадало в MDR32F9Qx_config.h, который по ним подключал файл описания микроконтроллера.
Код:
#if defined (USE_MDR32F9Q1_Rev0) || defined (USE_MDR32F9Q1_Rev1) ||\
    defined (USE_MDR32F9Q2_Rev0) || defined (USE_MDR32F9Q2_Rev1) ||\
    defined (USE_MDR32F9Q3_Rev0) || defined (USE_MDR32F9Q3_Rev1) ||\
    defined (USE_MDR1986VE94)
   #define USE_MDR1986VE9x
#endif

#if defined ( USE_MDR1986VE9x )
   #include "MDR32Fx.h"
#elif defined (USE_MDR1986VE1T)
   #include "MDR1986VE1T.h"
#elif defined ( USE_MDR1986VE3 )
   #include "MDR1986VE3.h"
#elif defined ( USE_MDR1901VC1T )
   #include "MDR1901VC1T.h"
#elif defined (USE_MDR1986BE4)
   #include "MDR1986BE4.h"
#endif

С появлением Keil 5 и паков, определения типа USE_MDR1986VE1T прописаны в конфигурации пака (файл Keil.MDR1986BExx.pdsc) и выставляются автоматически для проекта при выборе микроконтроллера Миландр из списка Target. Например:
Код:
  <device Dname="MDR1986BE91">
    <processor  Dcore="Cortex-M3" DcoreVersion="r0p0" Dfpu="NO_FPU" Dmpu="NO_MPU" Dendian="Little-endian" Dclock="80000000"/>
    <compile    header="Libraries/CMSIS/CM3/DeviceSupport/MDR32F9Qx/inc/MDR32Fx.h" define="USE_MDR32F9Q1_Rev1"/>
    .....
  </device>
  ....
  <device Dname="MDR1986BE1T">
    <processor Dcore="Cortex-M1" DcoreVersion="r0p0" Dfpu="0" Dmpu="0" Dendian="Little-endian" Dclock="144000000"/>
    <compile header="Libraries/CMSIS/CM1/DeviceSupport/MDR1986VE1T/inc/MDR1986VE1T.h" define="USE_MDR1986VE1T"/>
  </device>

Поэтому принципиально при работе в Keil 5 файл MDR32F9Qx_board.h не нужен. Определения для MDR32F9Qx_config.h берутся из Keil.MDR1986BExx.pdsc.

Файл MDR32F9Qx_config.h конечно должен быть для каждого проекта свой, потому что и настройки можно поменять и частоты выставить под свою плату. На мой взгляд он должен копироваться локально в проект, как это происходит с файлами startup_MDR32F9Qx.s, system_MDR32F9Qx.c и system_MDR32F9Qx.h. Они копируются Кейлом при создании проекта в директорию RTE, например в RTE\Device\MDR1986BE93. Чтобы это происходило, необходимо в Keil.MDR1986BExx.pdsc дописать для файл MDR32F9Qx_config.h атрибут config, аналогично этому ():
Код:
    <component Cclass="Device" Cgroup="Startup" Cversion="1.5" condition="CON_MDR1986BE9x">
      <description>System Startup for MDR1986BE9x device series</description>
      <files>
        <!-- startup files -->
        <file category="source" name="Libraries/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/arm/startup_MDR32F9Qx.s" attr="config"/>
        <!-- system file -->     
        <file category="source" name="Libraries/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/arm/system_MDR32F9Qx.c" attr="config"/>
        <!-- header file-->
        <file category="header" name="Libraries/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/arm/system_MDR32F9Qx.h" attr="config"/>
        <!-- header file-->
        <file category="header" name="Libraries/CMSIS/CM3/CoreSupport/core_cm3.h"/>
        <!-- header file-->
        <file category="header" name="Config/MDR32F9Qx_config.h"/>
      </files>
    </component>

Не факт что я прав, но представление об этом у меня такое.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: настройка проекта Keil
СообщениеДобавлено: 2019-июл-17 12:32 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1322
Откуда: Тула
Vasiliy писал(а):
Код:
  <device Dname="MDR1986BE91">
    <processor  Dcore="Cortex-M3" DcoreVersion="r0p0" Dfpu="NO_FPU" Dmpu="NO_MPU" Dendian="Little-endian" Dclock="80000000"/>
    .....
  </device>
  ....
  <device Dname="MDR1986BE1T">
    <processor Dcore="Cortex-M1" DcoreVersion="r0p0" Dfpu="0" Dmpu="0" Dendian="Little-endian" Dclock="144000000"/>
  </device>

Почему, интересно у ВЕ91 прописано Dmpu="NO_MPU" и у ВЕ1 Dmpu="0"? В доках хотя тоже есть нули, но, по крайней мере, MPU у ВЕ91 есть.
https://www.keil.com/pack/doc/CMSIS/Pac ... l#DmpuEnum
То же и про ревизии DcoreVersion="r0p0" - вроде бы они не нулевые.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: настройка проекта Keil
СообщениеДобавлено: 2019-июл-19 11:42 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 389
Откуда: ПКК "Миландр"
Вероятно копировали шапку по умолчанию, надо исправлять.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB