Быстрый старт с МК K1921BK01T
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
-
- Сообщения: 5
- Зарегистрирован: 15 июл 2016, 11:59
Re: Быстрый старт с МК K1921BK01T
Установил в IAR как указано в инструкции, однако возникает ошибка с файлом.
Fri Jul 15, 2016 11:00:26: SFR registration problem: Empty SFR group declaration found.
group =
C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.3\арм\CONFIG\debugger\Niiet\ioK1921BK01T.ddf
Fri Jul 15, 2016 11:00:26: SFR registration problem: Empty SFR group declaration found.
group =
C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.3\арм\CONFIG\debugger\Niiet\ioK1921BK01T.ddf
-
- Сообщения: 209
- Зарегистрирован: 14 дек 2015, 09:21
- Предприятие: АО НИИЭТ
- Откуда: АО НИИЭТ, Воронеж
Re: Быстрый старт с МК K1921BK01T
Попробуйте заменить файл "C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.3\арм\CONFIG\debugger\Niiet\ioK1921BK01T.ddf" на файл из архива во вложении.overmars13 писал(а):Установил в IAR как указано в инструкции, однако возникает ошибка с файлом.
Fri Jul 15, 2016 11:00:26: SFR registration problem: Empty SFR group declaration found.
group =
C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.3\арм\CONFIG\debugger\Niiet\ioK1921BK01T.ddf
- Вложения
-
- ioK1921BK01T.zip
- файл ioK1921BK01T.ddf
- (256.17 КБ) 243 скачивания
Re: Быстрый старт с МК K1921BK01T
Пытаюсь начать работать с мк К1921ВК01Т в Keil, но пока безуспешно.
1. Попытался подключить файл .pack, предоставленный пользователем R Max, но Keil ругается, что он поддерживает pack файлы только до версии 1.2 и рекомендует обновить MDK-арм. По некоторым причинам я не могу этого сделать.
2. Попытался подключить .zip файл, предоставленный пользователем dav, но Pack Installer ругается на отсутствие PDSC файла.
3. Пытаюсь вручную вбить в базу данных как описано в Быстрый_старт_К1921ВК01Т.pdf, но данные почему-то не добавляются. Т.е. ввожу данные (копи-паст), нажимаю кнопку ADD окна Device Database, но при создании нового проекта микроконтроллер не отображается.
uVision V5.10.0.2
Что посоветуете?
1. Попытался подключить файл .pack, предоставленный пользователем R Max, но Keil ругается, что он поддерживает pack файлы только до версии 1.2 и рекомендует обновить MDK-арм. По некоторым причинам я не могу этого сделать.
2. Попытался подключить .zip файл, предоставленный пользователем dav, но Pack Installer ругается на отсутствие PDSC файла.
3. Пытаюсь вручную вбить в базу данных как описано в Быстрый_старт_К1921ВК01Т.pdf, но данные почему-то не добавляются. Т.е. ввожу данные (копи-паст), нажимаю кнопку ADD окна Device Database, но при создании нового проекта микроконтроллер не отображается.
uVision V5.10.0.2
Что посоветуете?
-
- Сообщения: 209
- Зарегистрирован: 14 дек 2015, 09:21
- Предприятие: АО НИИЭТ
- Откуда: АО НИИЭТ, Воронеж
Re: Быстрый старт с МК K1921BK01T
Доброго времени суток!AlexPo писал(а):Пытаюсь начать работать с мк К1921ВК01Т в Keil, но пока безуспешно.
1. Попытался подключить файл .pack, предоставленный пользователем R Max, но Keil ругается, что он поддерживает pack файлы только до версии 1.2 и рекомендует обновить MDK-арм. По некоторым причинам я не могу этого сделать.
2. Попытался подключить .zip файл, предоставленный пользователем dav, но Pack Installer ругается на отсутствие PDSC файла.
3. Пытаюсь вручную вбить в базу данных как описано в Быстрый_старт_К1921ВК01Т.pdf, но данные почему-то не добавляются. Т.е. ввожу данные (копи-паст), нажимаю кнопку ADD окна Device Database, но при создании нового проекта микроконтроллер не отображается.
uVision V5.10.0.2
Что посоветуете?
Добавление микроконтроллера K1921BK01T в базу данных устройств «LegacyDeviceDatabase» возможно только в полной версии Keil.
В "Быстром старте" также даны указания по настройкам в пробной версии Keil:
Если Вы используете пробную версию Keil, то в качестве микроконтроллера выберите «ARMCortexM4»-> «ARMCM4_FP». В этом случае придется вручную настроить:
- параметры микроконтроллера (IRAM(0x20000000-0x2002FFFF) IROM(0x00000000-0x000FFFFF)),
- для отладки и просмотра регистров МК дополнительно настраиваем файл System-ViewerFile (*.Sfr) – указываем «арм\ SFD\Niiet\ K1921BK01T\ K1921BK01T.SFR».
- файл алгоритма программирования загрузочной Flash (указываем путь «арм\Flash\ K1921BK01T.FLM» выбрать из списка при нажатии на кнопку “Add”, см. рисунок 2.5)
- копировать файлы startup_K1921BK01T.s (расположен в «арм\Startup\Niiet\ K1921BK01T\ startup_K1921BK01T.s»), K1921BK01T.h (расположен в «арм\INC\Niiet\ K1921BK01T\ K1921BK01T.h») в директорию нового проекта.
Re: Быстрый старт с МК K1921BK01T
Большое спасибо, dav за быстрый ответ. Всё таки дело было в устаревшей версии MDK-арм. Файл .pack встал на более свежую версию (кажется 5.15 или 5.16). Правда немного кривовато. При отображении дерева подключенных микроконтроллеров, отображается не как у других производителей непосредственно в корне дерева, а вложен в папку General. Ну это мелочи. Попробовал откомпилировать и залить во flash предлагаемую программку blinky. Правда, у меня платка от Вектора, но для начала это не важно. Откомпилировалось и прошилось всё нормально. Но при отладке вылетает в HardFault. Попробовал с симулятором, без железа, то же самое. Вылетает в startup_K1921BK01T.s
при переходе к main:
LDR R0, =__main
BX R0
Не могли бы вы прояснить эту ситуацию? Кроме этого нет ли нормального файла инициализации микроконтроллера system_K1921BK01T.c (прежде всего PLL с установкой на максимальную частоту)? И, вообще, есть ли примеры написанные непосредственно для Keil?
при переходе к main:
LDR R0, =__main
BX R0
Не могли бы вы прояснить эту ситуацию? Кроме этого нет ли нормального файла инициализации микроконтроллера system_K1921BK01T.c (прежде всего PLL с установкой на максимальную частоту)? И, вообще, есть ли примеры написанные непосредственно для Keil?
- Лашкевич
- Сообщения: 373
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
- Контактная информация:
Re: Быстрый старт с МК K1921BK01T
Добрый день. Раз вы работаете с нашим VectorCARD в кейле, то надо бы выпустить уже мигание светодиодиков именно для неё. Собрал сегодня проект для кейла на основе тех примеров, что мы поставляем со средой на эклипсе. Возможно, проект собран не по канонам разработки в кейле (мы в нем не работаем), но светодиоды мигают. Проект можно скачать здесь, пробуйте. Проект сделан в Keil V5.17.
Re: Быстрый старт с МК K1921BK01T
Вопрос по файлу линкера "K1921BK01T_RAM.icf". Он содержит следующие строки:
Такое положение вещей вызывает ошибку линкера:
Error[Lp050]: placement includes both uninitialized sections and sections with content
Практика показала, что если закомментить строку do not initialize { readwrite };, ошибка превратится в предупреждение аналогичного содержания, и проект соберется. Собственно, вопрос заключается в том, почему необходимо не инициализировать секции памяти, доступные для чтения и записи, и вообще зачем сделано так, если и без этого все работает?
Код: Выделить всё
do not initialize { readwrite };
//initialize by copy with packing = none { section __DLIB_PERTHREAD }; // Required in a multi-threaded application
do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
/* place in ROM_region { readonly }; */
place in RAM_region { readonly, readwrite,
block CSTACK, block HEAP };
Error[Lp050]: placement includes both uninitialized sections and sections with content
Практика показала, что если закомментить строку do not initialize { readwrite };, ошибка превратится в предупреждение аналогичного содержания, и проект соберется. Собственно, вопрос заключается в том, почему необходимо не инициализировать секции памяти, доступные для чтения и записи, и вообще зачем сделано так, если и без этого все работает?
- Лашкевич
- Сообщения: 373
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
- Контактная информация:
Re: Быстрый старт с МК K1921BK01T
Я абсолютно не разбираюсь в синтаксисе IARовского линкера, но когда мы на фирме работали в иаре с K1921BK01T, мы использовали вот такой файл компоновщика:
Может быть, это поможет. Что тут написано сказать не могу, не разбираюсь.
Код: Выделить всё
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\кортекс_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x20000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x00000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x000FFFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x2002FFFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__ = 0x800;
/**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
do not initialize { readwrite };
//initialize by copy with packing = none { section __DLIB_PERTHREAD }; // Required in a multi-threaded application
do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
/* place in ROM_region { readonly }; */
place in RAM_region { readonly, readwrite,
block CSTACK, block HEAP };
Re: Быстрый старт с МК K1921BK01T
Добрый день.
Пытаюсь разобраться с модулем захвата контроллера К1921ВК01Т. Необходимо захватывать с прерываниями передний и задний фронт.
Почему-то работает захват только в регистр cap0, в cap1-3 захват не происходит.
Пытаюсь разобраться с модулем захвата контроллера К1921ВК01Т. Необходимо захватывать с прерываниями передний и задний фронт.
Почему-то работает захват только в регистр cap0, в cap1-3 захват не происходит.
Код: Выделить всё
void Cap_Init(uint8_t priority)
{
GPIO_Init_TypeDef GPIOInit;
// инициализация выводов блоков CAP0
GPIO_Init_TypeDef GPIO_InitStruct;
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Dir = GPIO_Dir_In;
GPIO_InitStruct.GPIO_Out = GPIO_Out_Dis;
GPIO_InitStruct.GPIO_AltFunc = GPIO_AltFunc_2;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AltFunc;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4| GPIO_Pin_5 | GPIO_Pin_6;
GPIO_Init(NT_GPIOE, &GPIO_InitStruct);
// инициализация блока захвата
RCC_PeriphRstCmd(RCC_PeriphRst_CAP0, ENABLE);
RCC_PeriphRstCmd(RCC_PeriphRst_CAP1, ENABLE);
RCC_PeriphRstCmd(RCC_PeriphRst_CAP2, ENABLE);
// выбираем CAP режим
CAP_Init_TypeDef CAP_InitStruct;
CAP_StructInit(&CAP_InitStruct);
CAP_InitStruct.CAP_Mode = CAP_Mode_Capture;
CAP_Init(NT_CAP0, &CAP_InitStruct);
CAP_Init(NT_CAP1, &CAP_InitStruct);
CAP_Init(NT_CAP2, &CAP_InitStruct);
// настраиваем CAP режим
CAP_Capture_Init_TypeDef CAP_Capture_InitStruct;
CAP_Capture_StructInit(&CAP_Capture_InitStruct);
CAP_Capture_InitStruct.CAP_CaptureMode = CAP_Capture_Mode_Cycle;
CAP_Capture_InitStruct.CAP_Capture_PolarityEvent0 = CAP_Capture_Polarity_PosEdge;
CAP_Capture_InitStruct.CAP_Capture_PolarityEvent1 = CAP_Capture_Polarity_NegEdge;
CAP_Capture_InitStruct.CAP_Capture_RstEvent0 = ENABLE;
CAP_Capture_InitStruct.CAP_Capture_RstEvent1 = ENABLE;
CAP_Capture_Init(NT_CAP0, &CAP_Capture_InitStruct);
CAP_Capture_Init(NT_CAP1, &CAP_Capture_InitStruct);
CAP_Capture_Init(NT_CAP2, &CAP_Capture_InitStruct);
// включаем прерывание по событию
CAP_ITCmd(NT_CAP0, CAP_ITSource_CapEvent0 | CAP_ITSource_CapEvent1, ENABLE);
CAP_ITCmd(NT_CAP1, CAP_ITSource_CapEvent0 | CAP_ITSource_CapEvent1, ENABLE);
CAP_ITCmd(NT_CAP2, CAP_ITSource_CapEvent0 | CAP_ITSource_CapEvent1, ENABLE);
Энвик_EnableIRQ(CAP0_IRQn);
Энвик_EnableIRQ(CAP1_IRQn);
Энвик_EnableIRQ(CAP2_IRQn);
CAP_TimerCmd(NT_CAP0, ENABLE);
CAP_TimerCmd(NT_CAP1, ENABLE);
CAP_TimerCmd(NT_CAP2, ENABLE);
CAP_Capture_Cmd(NT_CAP0, ENABLE);
CAP_Capture_Cmd(NT_CAP1, ENABLE);
CAP_Capture_Cmd(NT_CAP2, ENABLE);
}
void CAP0_IRQHandler(void)
{
CAP_ITStatusClear(NT_CAP0, CAP_ITSource_CapEvent0);
CAP_ITStatusClear(NT_CAP0, CAP_ITSource_CapEvent1);
CAP_ITStatusClear(NT_CAP0, CAP_ITSource_GeneralInt);
CAP_ITPendClear(NT_CAP0);
}
Re: Быстрый старт с МК K1921BK01T
Здравствуйте!dks1980 писал(а):Добрый день.
Пытаюсь разобраться с модулем захвата контроллера К1921ВК01Т. Необходимо захватывать с прерываниями передний и задний фронт.
Почему-то работает захват только в регистр cap0, в cap1-3 захват не происходит.Код: Выделить всё
// настраиваем CAP режим CAP_Capture_Init_TypeDef CAP_Capture_InitStruct; CAP_Capture_StructInit(&CAP_Capture_InitStruct); CAP_Capture_InitStruct.CAP_CaptureMode = CAP_Capture_Mode_Cycle; CAP_Capture_InitStruct.CAP_Capture_PolarityEvent0 = CAP_Capture_Polarity_PosEdge; CAP_Capture_InitStruct.CAP_Capture_PolarityEvent1 = CAP_Capture_Polarity_NegEdge; CAP_Capture_InitStruct.CAP_Capture_RstEvent0 = ENABLE; CAP_Capture_InitStruct.CAP_Capture_RstEvent1 = ENABLE; CAP_Capture_Init(NT_CAP0, &CAP_Capture_InitStruct); CAP_Capture_Init(NT_CAP1, &CAP_Capture_InitStruct); CAP_Capture_Init(NT_CAP2, &CAP_Capture_InitStruct);
При таком варианте инициализации, поле CAP_Capture_InitStruct.CAP_Capture_StopVal остается равным 0 (по умолчанию).
В одиночном режиме захвата это значение используется для остановки счетчика событий. В циклическом режиме это значение определяет количество захватываемых событий.
Судя по коду, вы желаете захватывать 2 события - одно по переднему фронту, другое по заднему, а значит вам нужно добавить в код строку вида:
Код: Выделить всё
// настраиваем CAP режим
...
CAP_Capture_InitStruct.CAP_Capture_StopVal = 1;
...