Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

J-Link - WARNING: CPU could not be halted
http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=13540
Страница 1 от 3

Автор:  paregov [ Пон Яну 26, 2015 7:26 pm ]
Заглавие:  J-Link - WARNING: CPU could not be halted

Имам някакъв странен проблем когато се опитвам да дебъгвам.

ERROR: Can not read register 16 (XPSR) while CPU is running
ERROR: Can not read register 20 (CFBP) while CPU is running
ERROR: Can not read register 0 (R0) while CPU is running
ERROR: Can not read register 1 (R1) while CPU is running
...
ERROR: Can not read register 18 (PSP) while CPU is running
WARNING: CPU could not be halted

Добавям пълният трейс в прикачен файл.

Също така на платката осцилатора не тръгва. Не знам дали той е причината да не може да се халтне процесора или е обратното.

Конфигурацията на дебъгера е наред. Същият процесор на друг модел платка си го дебъгва без проблем.
Пробвах две платки от този модел (толкова имам наситени) и двете се държат по еднакъв начин. Навеждаме на мисълта, че най-вероятно е хардуерен проблем.

Някакви идеи ?

Прикачени файлове:
jlink-trace.txt [8.86 KiB]
419 пъти

Автор:  gicho [ Вто Яну 27, 2015 1:40 am ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

Пусни схемата на около микроконтролера да видим дали има нещо съмнително. Как са вързани ресетите и SWD?

Автор:  paregov [ Вто Яну 27, 2015 3:20 am ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

Това са схемите около процесора и JTAG/SWD. Използвам преходна платка заради FCC конектора на основната платка. Просто нямам място за нещо по-голямо.
Прикачих и част от самата платка със слоя където са процесора и кристала. Има няколко кофти проходни отвора около кристала, но няма късо при запояването.

Пиновете на двата FCC конектора са нарочно в обратна посока. Това ми позволява да свързвам лентовият кабел без да го усуквам.

Прикачени файлове:
top-layer-part.png
top-layer-part.png [ 85.82 KiB | Прегледано 6860 пъти ]
Коментар на файл: JTAG адаптера.
jtag-adapter.jpg
jtag-adapter.jpg [ 71.5 KiB | Прегледано 6860 пъти ]
Коментар на файл: JTAG конектора на платката.
jtag-connector.jpg
jtag-connector.jpg [ 18.33 KiB | Прегледано 6860 пъти ]
Коментар на файл: Пиновете на процесора за кристала и JTAG.
mcu-jtag-crystal.jpg
mcu-jtag-crystal.jpg [ 45.92 KiB | Прегледано 6860 пъти ]

Автор:  miro_atc [ Вто Яну 27, 2015 11:21 am ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

Според лог-а се конектва и веднага след като смени клока 1MHz връзката изчезва...

Изглежда си точно като проблем с осцилатора... може да е хардуерен, може и софтуера да не го пуска като хората. Ако ограничиш клока на jlink-a би трябвало да може да конектнеш и през конзолата да си сетваш регистрите сам и да видиш дали ще запали осцилатор, pll и т.н.

Автор:  paregov [ Пон Фев 23, 2015 2:34 am ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

Определено проблема се оказа хардуерен, но още не е ясно защо точно се проявява.
Един от вариантите е, защото нямам филтрация на PLL захранването.
Прикачам какво препоръчват от Атмел в Atmel-42231-SAM4E-Schematic-Checklist_AP-Note_AT06068.pdf
Това не съм го спазил и имам само кондензатори на VDD_OUT.

Този проблем го наблюдавам вече на повече платки, не само на тази която имах проблем в началото. На нея й пуснах втора ревизия и там една от две тръгна и другата има същият проблем.
Също така пуснах една платка с ATSAM4E16E и пак така. Едната тръгна от раз и няма проблеми, а другата не пожела. След известна борба се установи, че ако докосна с пръст платката на определено място кристала тръгва. Странното е, че където докосвам са само GPIO конфигурирани като входове.

Мислите ли, че може да е проблем с фитрацията или нещо друго?

Прикачени файлове:
pll_power_filter.jpg
pll_power_filter.jpg [ 26.52 KiB | Прегледано 6630 пъти ]

Автор:  Nikola Kirov [ Пон Фев 23, 2015 11:15 am ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

Някои по стари армчета имаха претенции към минимална скорост на нарастване на захранването. Като е по малка и зависваха в разни неустановени състояния. От AT91SAM7S серията. В новите им ревизии го оправиха това. Провай да го захраниш външно и виж какво ще стане.

Автор:  ДедоБоре [ Пон Фев 23, 2015 11:28 am ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

по принцип много процесори са капризни на тема сикуенс и фронт на захранването, не знам как е в SAM, но щом Никола е настъпвал мотиката, вероятно важи и за тях.

отделно, PLL също са чувствителни към захранвания. спазвай каквото пише в чаршафа и не би трябвало да има грижи.

Автор:  miro_atc [ Пон Фев 23, 2015 12:29 pm ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

Това с фронтовете беше каприз на първите ревизии на SAM7... което не значи, че го изключвам като възможност, но по наличните данни повече мирише на проблем с клоците.

Както казва Дедо слон са ядял на порции (аз не съм ял, ама така разправя). Та в началото бих ограничил клока на емулатура. Мисля че джейлинка трябва да има такава възможност, ако не намери едно просто оцд. Да си стои на 1-5kHz и пускаш да дебъгваш. Ако си изпълнява инструкциите, ако четеше и пишеш паметта да знаеш че рИсета е минал благополучно и едва ли е фронта на захранването.
Следващата стъпка е да пуснеш осцилатора, най-добре без да превключваш клока, просто пускаш и гледаш регистрите дали ще тръгне. Мисля че си имаше такива флагчета.
Ако тръгне кристала, вече може да видиш дали проблема не е PLL-a. Напълно е възможно без филтрите да не тръгне.

Иначе цялата тая гимнастика не е зле да си е заложиш в софтуера, щото при производство винаги се случва я фалшив кварц я нещо окъсено, незапоено и т.н. Затова софта е добре да си ги прави тия стъпки и да си рапортува къде закъсва ако нещо не тръгне. Аз го правя с трейс, ама с джейлинка не знам дали ще тръгне трейса без клок... Другия вариант ако имаш светодиотчета да мигаш проблемите както BIOS-те...

Автор:  741 [ Пон Фев 23, 2015 12:40 pm ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

paregov написа:
...

Опитай с по-малки кондензатори на осцилатора, примерно 10pF. Тези, дето си ги писал на схемата, изват възголемки и малко над позволеното. Брал съм ядове от това с други атмелски чипове и оттогава чета внимателно спецификацията в тая част.

Автор:  Nikola Kirov [ Пон Фев 23, 2015 12:42 pm ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

AT91SAM7S не им тръгваше също клока като изпаднеха в такова странно състояние. Затова ти обръщам внимание на тоз древен бъг.

Автор:  DanielDimov [ Пон Фев 23, 2015 3:20 pm ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

Процесора или J-link-а (или и двете) имат ли по спецификация минимална честота на която могат да работят заедно? На другата платка (на която работи) пак ли се превключва на същата честота?

Автор:  miro_atc [ Пон Фев 23, 2015 4:23 pm ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

DanielDimov написа:
Процесора или J-link-а (или и двете) имат ли по спецификация минимална честота на която могат да работят заедно?


Няма минимална, ех все пак честотите се свалят с хардуерни делители с определен брой стъпки... не става до безкрай да ги смъкваш ;-)

Принципно JTAG клока трябва да е по-нисък от CPU клока. В случая не съм сигурен дали не трябва да е 2 пъти по-нисък. Не помня вече...
И тъй като тоя, както и много други контролери след ресет тръгват на една честота, а софтуера след това може да я смени та затова JTAG/SWD емулаторите им се задават две честоти - за след ресет и за след ресет скрипта. Тук има и още една подробност, че ресет скрипта на емулатора може да сменя честотата на проца. Прави се тъй като обикновено емулатора трябва да префлашне проца, а както в случая с Атмел той тръгва на много ниска честота и флашването би отнело мнооого време. Но пък при проблем с осцилатор/PLL честотата няма да се смени и емулатора ще увисне... както и става...

Автор:  paregov [ Пон Фев 23, 2015 6:48 pm ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

@Никола, пробвах и с външно захранване и същата работа. На която платка си работи с нейното захранване си работи и с външно и където не работи с нейното не работи и с външно.

@Дедо, сега промених захранването както са го направили в Evaluation Kit-a на този процесор (поне частта за PLL захранването). Това значи обаче чакане още седмица, две за новите платки.

@Миро, това е добра идея, ще взема малко да барна инициализацията. Имам диоди и май ще е добре наистина на тях да показвам статуса. Закачам осцилоскопа на кристала и той не тръгва докато не барна с пръст пиновете на процесора от точно определена страна. Това се наблюдава със закачен дебъгер или без дебъгер. Без дебъгер като подам захранване и никаква промяна на осцилоскопа. Като барна процесора и всичко тръгва и вече работи без проблем до следващо спиране на процесора.

@741, ще пробвам и с 10pF, само да пристигнат след няколко дена, че нямам в наличност.

@Даниеле - да, на другата платка е на същата честота пак. Настройките на дебъгера са същите, само сменям платките.

Автор:  Цецо [ Пон Фев 23, 2015 7:10 pm ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

Да не би да пали бутлоадера по някаква причина. Повечето подобни железа като им тръгне бутлоадера и JTAG-а се насира. Пробвай да го изтриеш през пина и виж дали първия лог след това ще е по различен от сегашния. На изтрито желязо, трябва да запали през вътрешния осцилатор - не би трябвало да имаш проблем да се конектеш първия път, даже и без кристал (ако презумираме че проблема е около кристала, в което се съмнявам).

Автор:  miro_atc [ Пон Фев 23, 2015 7:21 pm ]
Заглавие:  Re: J-Link - WARNING: CPU could not be halted

paregov написа:
@Миро, това е добра идея, ще взема малко да барна инициализацията. Имам диоди и май ще е добре наистина на тях да показвам статуса. Закачам осцилоскопа на кристала и той не тръгва докато не барна с пръст пиновете на процесора от точно определена страна. Това се наблюдава със закачен дебъгер или без дебъгер. Без дебъгер като подам захранване и никаква промяна на осцилоскопа. Като барна процесора и всичко тръгва и вече работи без проблем до следващо спиране на процесора.


ми не помня вече как им бяха клоковете... Но помня че бяха Ентелигенти, демек ако накараш да се клоква от PLL а той не бачка по някаква причина изревава и си се връща на вътрешното RC. Ta това което не помня е дали при тая ситуация ще изгаси кристала... Така че не мога да кажа дали това което наблюдаваш е заради лош кристал или проблем с PLL.

Изобщо това с барането не ме кефи, остана и боб да му хвърлиш ;-)
Аз затова мразя джейлинковете и тем подобните. Вземи едно ocd, вържи го и през конзолата си има командички - сетваш си клок да кажем 5kHZ, ресетваш таргета, пускаш тест на паметта. Дотук са само 3 команди и знаеш дали имаш чист рИсет или проца изобщо го няма. После вече може да видиш на кои адреси са ти регистрите за клоковете и ръчно да ги програмираш така че да се пусне осцилатора. Резултатът трябва да е видим както с осцилоскоп, така и в регистрите...
Просто едно по едно ги тествай нещата...

Страница 1 от 3 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/