Быстрый старт с МК K1921BK01T
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
Re: Быстрый старт с МК K1921BK01T
Так как официального .pack для Keil 5 до сих пор нет, решил сделать самопальный https://yadi.sk/d/P5hlwFHzr3d49
Re: Быстрый старт с МК K1921BK01T
В файле констант K1921BK01T_enum.h заменил все ключевые слова enum на typedef enum, иначе линкер Keil жалуется на двойное определение... https://yadi.sk/d/s2ddfeSHr4mhN
Re: Быстрый старт с МК K1921BK01T
Выложите пожалуйста на форум ваш вариант файла "K1921BK01T.FLM".-=Sergei=- писал(а): Далее пока предположение, что контроллер Flash не успевает запрограммировать память. Маленькие программки шьются, а вот большие выпадают по таймауту при программировании. Увеличил в FLM "Erase Sector Timeout 3000 mSec" до 30000. Заработало. Достаточно ли этого, не знаю, нужно знать как работает ваш контроллер Флеша.
В каталоге C:\Keil\арм\Flash\K1921BK01T я открыл проект с алгоритмом программирования флешки и в файле "FlashDev.c" поправил соответствующее значение на 30000 как Вы и советовали. Пересобрал, подменил FLM.
Однако, все равно получаю ошибку при размере программы чуть больше (2000 байт), чем "совсем маленькая" (1732 байт).
Спасибо!
Re: Быстрый старт с МК K1921BK01T
Проблему решил путем увеличения таймаута записи страницы флешки (параметр "Program Page Timeout") до 1000 mSec.MR.Smith писал(а): В каталоге C:\Keil\арм\Flash\K1921BK01T я открыл проект с алгоритмом программирования флешки и в файле "FlashDev.c" поправил соответствующее значение на 30000 как Вы и советовали. Пересобрал, подменил FLM.
Однако, все равно получаю ошибку при размере программы чуть больше (2000 байт), чем "совсем маленькая" (1732 байт).
Re: Быстрый старт с МК K1921BK01T
Наткнулся на странную ошибку.
В Keil со стандартным арм компилятором Keil программа падает в HardFault_Handler при попытке преобразования типа:
FPU для одинарной точности включен. Но и без него ситуация аналогичная.
Переношу проект с CCS. У компилятора TI проблем здесь не было.
Кто-нибудь сталкивался с подобной проблемой? Как лечить?
В Keil со стандартным арм компилятором Keil программа падает в HardFault_Handler при попытке преобразования типа:
Код: Выделить всё
int varInt = 12;
float varFloat;
...
varFloat = (float)varInt;
Переношу проект с CCS. У компилятора TI проблем здесь не было.
Кто-нибудь сталкивался с подобной проблемой? Как лечить?
Re: Быстрый старт с МК K1921BK01T
У меня такой код работает, это что-то в основной программе значит...
Re: Быстрый старт с МК K1921BK01T
Действительно, в чистом проекте все ОК.R Max писал(а):У меня такой код работает, это что-то в основной программе значит...
Вообще в keil 5 с их стандартным компилятором происходят какие-то чудеса.
Произвольный кусок кода, который совершенно корректно работал на TMS320F28335 и STM32F429ZI, может вызвать HardFault_Handler и даже изменения тактовой частоты процессора!
При попытке провести несколько элементарных математических операций в ряде случаев я столкнулся с тем, что процессор начинает "тикать" в десятки раз медленнее. И это при том, что после инициализации я совершенно не трогаю регистры PLL. Например, банальная операция сравнения в некоторых случаях вызывает такой эффект.
Мистика...
Сейчас пока отложил Keil в сторону. Попробую повторить все в Vector IDE с компилятором GCC арм Embedded.
У производителя вообще есть какие-нибудь рекомендации по компилятору? А то, может быть, я зря пытаюсь использовать Keil арм Compiller и надо применять априори GCC арм Embedded ?
Re: Быстрый старт с МК K1921BK01T
Похоже, что я неверно настроил Keil. Или дело действительно в компиляторе.
Все вышеописанные проблемы не воспроизводятся в VectorIDE с использованием компилятора GCC арм Embedded.
Все вышеописанные проблемы не воспроизводятся в VectorIDE с использованием компилятора GCC арм Embedded.
- Лашкевич
- Сообщения: 373
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
- Контактная информация:
Re: Быстрый старт с МК K1921BK01T
Проблема может быть еще с неверной инициализацией регистров тактирования и задержки флеш-памяти. От этого сам микроконтроллер может начать глючить при некоторых специфических операциях. Также операции с плавающей точкой могут генерировать очень разный ассемблерный код - надо проверять, что там нагенерилось, аппаратные ли это команды, те ли они, какие должны быть, или это вообще вызовы несуществующих библиотек и т.п.
Re: Быстрый старт с МК K1921BK01T
=) https://en.wikipedia.org/wiki/арм_HoldingsMR.Smith писал(а): У производителя вообще есть какие-нибудь рекомендации по компилятору? А то, может быть, я зря пытаюсь использовать Keil арм Compiller и надо применять априори GCC арм Embedded ?
арм Holdings plc (арм) is a British multinational semiconductor and software design company headquartered in Cambridge, England. Its primary business is in the design of арм processors (CPUs), although it also designs software development tools under the DS-5, RealView and Keil brands
2005[edit]
KEIL Software, a leading developer of software development tools for the microcontroller (MCU) market, including 8051 and C16x platforms.[39] арм also acquired the engineering team of PowerEscape.