Перейти к содержанию

Список проблемных моментов при программировании Kinetis

Кое-какие вещи могущие быть неочевидными при инициализации периферии и программировании Kinetis

1. Инициализация осциллятора от кварца.
В целом кварцы у Kinetis запускаются очень надежнов в отличие от того же STM32.
Но если установить в регистре MCG_C2 бит HGO0 в 1 (чтобы увеличить усиление генератора) для высокочастотных уварцев (> 10 МГц),
то может не включится PLL0. Хотя осциллограф покажет очень хорошую осцилляцию с высокой амплитудой.

2. Ватчдог (WDOG) надо выключать сразу в первых командах инициализации. Иначе можете не успеть завершить даже саму инициализацию. Потом можно включить снова.

3. Чтобы USB могла передавать строки прямо из FLASH памяти надо отдельно разрешить мастеру DMA USB доступ к чтению FLASH памяти в регистре FMC_PFAPR
В демо примерах от NXP это не делают.
Также не забываем и про основной DMA и других мастеров на шине которым тоже надо открыть доступ к FLASH памяти.

4. Чтобы нормально работал модуль измерения скорости на 3-х фазных датчиках Холла мало включить бит 22 в регистре SIM_SOPT4,
но надо еще и инициализировать все три канала таймеров FTM1 (канал 1) и FTM2 (канал 0 и 1) на захват по фронту и спаду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(AlexandrY @ Jan 4 2017, 15:13) <{POST_SNAPBACK}>
2. Ватчдог (WDOG) надо выключать сразу в первых командах инициализации. Иначе можете не успеть завершить даже саму инициализацию. Потом можно включить снова.


Прикольно. А если зависнем в инициализации, то навечно? Может просто сбросить и увеличить интервал, пока не прошли инит и зашли в основной цикл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(mantech @ Jan 4 2017, 22:11) <{POST_SNAPBACK}>
Прикольно. А если зависнем в инициализации, то навечно? Может просто сбросить и увеличить интервал, пока не прошли инит и зашли в основной цикл?


Тут логика была такая:
если вы зависли в инициализации, то вачдог не поможет , вы всегда там будете зависать.




Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(AlexandrY @ Jan 4 2017, 23:23) <{POST_SNAPBACK}>
Тут логика была такая:
если вы зависли в инициализации, то вачдог не поможет , вы всегда там будете зависать.

Не факт. Ватчдог иногда помогает от аппаратных помех. Он не только для защиты от программных багов.
Прошла такая помеха в некую периферию, ну и завис её драйвер. Собака всё пересбросит и следующий инит пройдёт успешно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Вылазила у кого нибудь проблема с залочиванием процессора и не возможностью стереть через SWD ?
Вот что дает командер !

J-Link>unlock kinetis
Found SWD-DP with ID 0x2BA01477
Unlocking device...O.K.
J-Link>erase
Found SWD-DP with ID 0x2BA01477

****** Error: Kinetis (connect): Timeout while unsecuring device. Erase never st
arts.
Kinetis (connect): Failed to unsecure Kinetis device.
Found SWD-DP with ID 0x2BA01477

****** Error: Kinetis (connect): Timeout while unsecuring device. Erase never st
arts.
Kinetis (connect): Failed to unsecure Kinetis device.
Erasing device (MK66FX1M0xxx18)...
Found SWD-DP with ID 0x2BA01477

****** Error: Kinetis (connect): Timeout while unsecuring device. Erase never st
arts.
Kinetis (connect): Failed to unsecure Kinetis device.
Found SWD-DP with ID 0x2BA01477

****** Error: Kinetis (connect): Timeout while unsecuring device. Erase never st
arts.
Kinetis (connect): Failed to unsecure Kinetis device.
ERROR: Erase returned with error code -1.
J-Link>device MK66FX1M0xxx18
Disconnecting from J-Link...O.K.
Device "MK66FX1M0XXX18" selected.


Found SWD-DP with ID 0x2BA01477

****** Error: Kinetis (connect): Timeout while unsecuring device. Erase never st
arts.
Kinetis (connect): Failed to unsecure Kinetis device.
Found SWD-DP with ID 0x2BA01477

****** Error: Kinetis (connect): Timeout while unsecuring device. Erase never st
arts.
Kinetis (connect): Failed to unsecure Kinetis device.
Found SWD-DP with ID 0x2BA01477

****** Error: Kinetis (connect): Timeout while unsecuring device. Erase never st
arts.
Kinetis (connect): Failed to unsecure Kinetis device.
Found SWD-DP with ID 0x2BA01477

****** Error: Kinetis (connect): Timeout while unsecuring device. Erase never st
arts.
Kinetis (connect): Failed to unsecure Kinetis device.
Cannot connect to target.
Found SWD-DP with ID 0x2BA01477

****** Error: Kinetis (connect): Timeout while unsecuring device. Erase never st
arts.
Kinetis (connect): Failed to unsecure Kinetis device.
Found SWD-DP with ID 0x2BA01477

****** Error: Kinetis (connect): Timeout while unsecuring device. Erase never st
arts.
Kinetis (connect): Failed to unsecure Kinetis device.
J-Link>d



Есть какие либо решения ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Такая же проблема с залочиванием контроллера... (NXP MK22FN128xxx10)

* JLink Info: Protection bytes in flash at addr. 0x400 - 0x40F indicate that readout protection is set.
For debugger connection the device needs to be unsecured.
Note: Unsecuring will trigger a mass erase of the internal flash.
...
...
***JLink Error: Could not find core in Coresight setup
Error: Flash Erase failed - Target DLL has been cancelled

Кто-н знает решение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Кто-н знает решение?

Не знаю как в современных Кинетисах, но когда работал с разными LPC, то если возникали проблемы с работой JTAG/SWD, то всегда спасало подключение через FlashMagic к UART и полное стирание чипа (именно команда "стереть весь чип", а не отдельные сектора флешь).

 

PS: Странно однако - почему молчит адепт Кинетисов, присутствующий здесь? B)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Такая же проблема с залочиванием контроллера... (NXP MK22FN128xxx10)

 

Кто-н знает решение?

Во первых микроконтроллеры часто, как ни странно, просто умирают. С этим ничего поделать нельзя.

Например взяли немытыми руками, и пробили по SWD DIO.

Тут просто выкидываем в урну.

Не далее как позавчера на моих глазах так убили.

Просто мужик взялся переключать чета-там на плате не отключив питания.

 

Во вторых народу очень полюбились китайские клоны. Ко мне коллега прибегает постоянно, то одно у него клон не программирует, то другое.

В третьих сама схемотехника SWD на плате может быть слегка кривоватой.

 

Короче, не важно что показывает JFlash, важно что было до этого.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:bb-offtopic:

Во первых микроконтроллеры часто, как ни странно, просто умирают. С этим ничего поделать нельзя.

 

Да, микроконтроллер смертен, но это было бы ещё полбеды. Плохо то, что он иногда внезапно смертен, вот в чём фокус!
Воланд

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про немытые руки особенно понравилось. :biggrin:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Про немытые руки особенно понравилось. :biggrin:

Ну, вдруг, они у вас испачканы эбонитовой пылью. Думаю, именно такой особый случай грязных рук имелся ввиду :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Статика конечно иногда имеет место быть, но очень не хочется в это верить... Один экземпляр из 3х работает - стирается/шьется исправно.

JLink конечно китайский, но неужели нельзя верить логу, в котором сказано что установлена защита по таким-то адресам и что-то вроде бы читается.

 

Вот полный лог:

 

* JLink Info: InitTarget()

* JLink Info: Protection bytes in flash at addr. 0x400 - 0x40F indicate that readout protection is set.

For debugger connection the device needs to be unsecured.

Note: Unsecuring will trigger a mass erase of the internal flash.

* JLink Info: Executing default behavior previously saved in the registry.

* JLink Info: Device will be unsecured now.

* JLink Info: Found SW-DP with ID 0x2BA01477

* JLink Info: Scanning AP map to find all available APs

* JLink Info: AP[2]: Stopped AP scan as end of AP map has been reached

* JLink Info: AP[0]: AHB-AP (IDR: 0x24770011)

* JLink Info: AP[1]: JTAG-AP (IDR: 0x001C0000)

* JLink Info: Iterating through AP map to find AHB-AP to use

* JLink Info: AP[0]: Skipped. Invalid implementer code read from CPUIDVal[31:24] = 0x00

* JLink Info: AP[1]: Skipped. Not an AHB-AP

***JLink Error: Could not find core in Coresight setup

Error: Flash Erase failed - Target DLL has been cancelled

Flash Erase finished 10:48:54

 

Есть еще отладочная плата FRDM-K22F, пытались использовать ее программатор на OpenSDA, но там оказалось еще больше геморроя, хотя с установленным на отладочной MK22FN512 работает отлично.

 

Не знаю как в современных Кинетисах, но когда работал с разными LPC, то если возникали проблемы с работой JTAG/SWD, то всегда спасало подключение через FlashMagic к UART и полное стирание чипа (именно команда "стереть весь чип", а не отдельные сектора флешь).

 

PS: Странно однако - почему молчит адепт Кинетисов, присутствующий здесь? B)

 

В моем случае для отладки выведены SWD и JTAG, они предусмотрены по умолчанию, к тому же FlashMagic просто не поддерживает эти семейства.

 

Кто этот адепт? Таких людей должно быть ну очень мало, ибо уж слишком специфичный МК.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Про немытые руки особенно понравилось. :biggrin:

А Вы что не в курсе что совсем недавно британскими учёными обнаружен новый вид электрогенерирующих бактерий?: https://www.infox.ru/news/232/science/medic...t-elektricestvo

Вот так - подержались за железный пинцет, а потом - хвать за чип (этим же пинцетом)! и уноси готовенького... :crying:

Так что, как тут уже советовали специалисты по кинетисам: чаще мойте руки и держитесь только за пинцеты из цветных металлов! :biggrin:

 

Кто этот адепт? Таких людей должно быть ну очень мало, ибо уж слишком специфичный МК.

Вы можете наблюдать его даже в этом топике. Тока он не признаётся, но все знают B)

Наберите в поиске "kinetis" по форуму. :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую всех! Столкнулся со следующей проблемой...

 

Есть рабочий код Bootloader-а, который работает на отладочной плате FRDM-K22F. Он же при замене файлов стартапа и разметки памяти работает на моей плате на чипе MK22FN128VDC10.

Далее, заменили 128й чип на MK22FN512VDC12. Теперь Bootloader грузится в чип (из под KDS), но не работает, т.е. не коннектится к проге KinetisFlashTool...

Кто может подсказать в чем проблема? Заранее спасибо.

 

P.S. Есть другой Bootloader (Kinetis Bootloader v2.0.0, собранный в Keil), версия под 128й чип также работет нормально, а версия под 512й запускается только если поставить галочку на опции "Reset and Run" в настройках загрузки.

Причем после снятия и подачи снова питания на плату больше не стартует...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Опытным путем было выяснено, что процессор(MK22FN512) не делает Reset при старте... вроде и pull-up ставил/убирал, и с конденсатором игрался... картина не меняется.

Где вы Адепт - очень нужно экспертное мнение

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация