| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| J-Trace http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=18845 |
Страница 1 от 4 |
| Автор: | palavrov [ Вто Май 30, 2023 8:28 pm ] |
| Заглавие: | J-Trace |
Началството взе J-Trace Pro Cortex A/R/M - някой да има опит за споделяне с това чудо? Мотики? |
|
| Автор: | nixx [ Вто Май 30, 2023 8:47 pm ] |
| Заглавие: | Re: J-Trace |
Аз ползвам J-Trace Pro for ARM Cortex-M. Работи с IAR EWARM, STM32CubeIDE, gdb. ETM трейса съм го пробвал само с IAR. |
|
| Автор: | TheWizard [ Вто Май 30, 2023 10:45 pm ] |
| Заглавие: | Re: J-Trace |
каква му е "далаверата" спрямо J-Link |
|
| Автор: | nixx [ Вто Май 30, 2023 11:07 pm ] |
| Заглавие: | Re: J-Trace |
Ами ако няма да ползваш трейс-функционалността, тогава плюса е само USB 3.0 и Gigabit Ethernet, минуса е цената, естествено. Та "далаверата" е риъл-тайм стрийминг трейса, другото е горе-долу същото. Аз лично тоя "плюс" не го ползвам, ама джаджата е служебна. Миро май беше споменавал, че ползва трейс отвреме-навреме само, че с друг дебъгер (Ronetix PEEDI, ако не бъркам). Но дето се вика, ако много се закучат нещата, би могла да бъде полезна благинка. |
|
| Автор: | palavrov [ Сря Май 31, 2023 12:03 am ] |
| Заглавие: | Re: J-Trace |
Ами тя идеята е, че ако спести седмица две дебъгване ще си избие цената. А не е като да не се закучва понякога нещо с дни ... ще го разцъкам да видя дали ще успея да го подкарам с gcc/gdb или ще трябвад да ползвам на Segger средата. |
|
| Автор: | nixx [ Сря Май 31, 2023 2:28 am ] |
| Заглавие: | Re: J-Trace |
Абсолютно съм съгласен, инженерното време излиза по-скъпо, затова по-добре да го имаш и да не ти потрябва, отколкото обратното ... поне в този ценови диапазон. С gcc/gdb работи без проблем, няма да имаш грижи. |
|
| Автор: | palavrov [ Сря Май 31, 2023 9:24 am ] |
| Заглавие: | Re: J-Trace |
Друга чуденка - дали не съм сбъркал, че поръчах Segger? Lauterbah дали не си струва повече? Или пък Ronetix? Или пък някой безименен жълтурник? |
|
| Автор: | miro_atc [ Сря Май 31, 2023 9:45 am ] | |||||||||
| Заглавие: | Re: J-Trace | |||||||||
Ами не! Не е от време на време. Трейсът е толкова гадно нещо, че като свикнеш не можеш без него. Все едно да бачкаш аналогови сигнали и да нямаш осцилоскоп. Не че не сме го правили, ама друго си е да виждаш какво става. Не искам да зарибявам никой, по-скоро от техническата страна няколко думи. Значи хардуерно трейсът може да е по една жица (SWO), може да са по няколко, може да има клок, може да няма. Обикновено на стандартния конектор за jtag/swd трейсът е само по една жица и без клок. Демек най-прост сериен интерфейс. Разликата обаче спрямо обикновен сериен интерфейс е скоростта. Идеята е, че трейсът не трябва да товари проца. Иначе с трейс и без трейс ще има разлика и проблеми от сорта с дебъг работи, без дебъг не ще. За да няма разлики трейсът трябва да е с много голяма скорост. Другата файда от високата скорост е примерно като пишеш usb или ethernet стек или някаква комуникация и искаш да я трейснеш, естествено трейсът трябва да е по-бърз от usb-то или етернета. Сега теоретично SWO може да бачка май до CPU клока, само че обикновен сериен на 100+ Mbit е безсмислица. Никога няма да работи, освен ако приемника не работи на абсолютно същия клок. Но клок както казах няма на стандартния конектор. Освен това трейсът е редно да работи винаги, още от ресет когато проца тръгва с нисък клок, после го вдига, после може да го сваля и т.н. Би било тъпичко да трябва да се сменят баудрейтове ръчно. Доколкото знам и обикновения JLINK поддържа някакъв трейс но без да решава горните проблеми. Демек може да го ползваш като най-обикновен сериен порт, на много ниски скорости, да нацелваш баудрейтове и т.н. Но това за мен не е трейс... Решението, което АРМ са измислили за тия проблеми е манчестър кодиране. Това позволява на приемащата страна да детектне продължителността на старт бита и автоматично да определи баудрейта и да работи безпогрешно дори и при много високи честоти (до 40-50Мбит, а може и повече). Чисто практически настройките в какъв режим да се работи и изобщо дали да се пуска трейс е редно да ги прави емулатора или дебъгера. Фърмуерът обикновено се опитва да трейсва, но само ако трейсът е разрешен. Ако не е, изплюва данните и толкоз. Демек фърмуера не го интересува дали ще ползва JTRACE, PEEDI или нещо друго и кой как точно ще го ползва. Тук говоря за трейс на съобщения, заложени в кода. Теоретично има различни виртуални портове, демек може да има множество виртуални канали. Аз ползвам само един канал, за да мога си виждам кой трейс след кой се появява. За различните неща просто ползвам различни цветове. Примерно ако е някаква комуникация, приетото го трейсва в един цвят, предаденото в друг цвят. Критичните неща са в червено и т.н. Смятам, че така е много по-прегледно, отколкото да ги пръскам в различни логове. Освен за съобщения има възможност да се трейсва и какво прави самия процесор. Демек какви инструкции изпълнява от кой адрес и т.н. Тук обаче проблемът е в съответния софтуер, който трябва да обработва получените данни. Технически аз мога да правя такъв трейс, практически обаче нямам подходящ софтуер за след това. За какво става дума... Едното приложение е статистическа обработка. Пускаш устройството, правиш лог и после анализи, които ти показват коя функция колко често се вика, колко отнема изпълнението и т.н. Това би било полезно, ако човек иска да оптимизира кода. Щото едно е да си мислиш къде цикли най-много, друго е да го измериш вместо да хвърляш боб. Другото приложение е ревърс дебъга. Това е за ситуации в които примерно паметта се омазва и гръмва. Гръмването може да го хванеш и с обикновен дебъгер. Но виждаш примерно, че някой ти е омазал я стека, я указатели и съвсем естествено си гърми. Въпросът е кой и кога е направил омазването. Щото то може да е преди 5 секудни, може да е преди 5 часа или преди 5 дена. Та за целта просто правиш лог и зареждаш тоя лог в дебъгер. Като дадеш стъпка на пред, то просто отива на следващия ред от лога. Може да отидеш на момента на гръмването, да видиш коя памет точно е омазана, да сложиш watchpoint на нея и да пуснеш дебъга в обратна посока. И така ти спира там където е мазало последно. Както казах аз още не ползвам нито ревърс дебъг нито execution trace. Не ползвам щото нямам софтуер, но бих искал да ползвам и ако някой разоре тая нива да свирка |
||||||||||
| Автор: | miro_atc [ Сря Май 31, 2023 9:58 am ] | |||||||||
| Заглавие: | Re: J-Trace | |||||||||
Lauterbah е мерцедесът в тая област... Обаче то повечето неща са свързани със софтуера. Няма никакъв смисъл желязото ти да поддържа execution трейс, ако няма дебъгер или статически анализ. Само че в случая (пък и повечето случаи) то всичко една система, като почнеш от дебъгер, компилатор и някои стигат до RTOS-а даже. И всичко е платено... Хайде да оставим парите (които никак не са малко) пак опираме до това, което правиш. Ще правиш нещо на VxWorks, treadx или baremetal + gcc.. Според мен няма универсално решение. |
||||||||||
| Автор: | palavrov [ Сря Май 31, 2023 5:36 pm ] | ||||||||||||||||||
| Заглавие: | Re: J-Trace | ||||||||||||||||||
Ако се вярва на това видео с J-Trace всичкото което описваш го има в тяхната среда Ozone - https://www.youtube.com/watch?v=8TAffkgwVYk Ти наясно ли си с със нещата отдолу - как се записва състоянието на процесора на всеки такт - не се сещам за нещо по малко от 20-30 бита на всяка инструкция за да се следи състоянието на процесора т.е. 20-30 пъти по голям битрейт спрямо клока на койот върти процесора - или бъркам някъде бакалската сметка? |
|||||||||||||||||||
| Автор: | palavrov [ Сря Май 31, 2023 5:40 pm ] | ||||||||||||||||||
| Заглавие: | Re: J-Trace | ||||||||||||||||||
Моя проект в момента е със Zephyr RTOS - има си вградена поддръжка за RTT дебъг логове и т.н. Цената на J-Trace не е ниска (2К евро) ама това е инструмент на цената на 1/2 квадратен метър апартамент тука т.е. поносимо е. Лаутербах нямаха цена в сайта и не ми се занимаваше. Ронетикс ги забравих. Пък и навсякъде по клиенти всички са със Сегер та това си беше и логичния избор. |
|||||||||||||||||||
| Автор: | itso.t [ Сря Май 31, 2023 5:48 pm ] | |||||||||
| Заглавие: | Re: J-Trace | |||||||||
С подходящ хардуер (модулация) не би трябвало да е проблем да се предават няколко бита на такт. |
||||||||||
| Автор: | palavrov [ Сря Май 31, 2023 6:10 pm ] | ||||||||||||||||||
| Заглавие: | Re: J-Trace | ||||||||||||||||||
Е то и ако се паралелизира по няколко жици ще се умножи скоростта |
|||||||||||||||||||
| Автор: | miro_atc [ Сря Май 31, 2023 7:56 pm ] | |||||||||
| Заглавие: | Re: J-Trace | |||||||||
Аз съм правил фпга-то на peedi, т.е. може да се каже, че съм наясно с SWO на хардуерно ниво. На софтуерно всичко го има документирано от АРМ, чел съм го навремето само от любопитство щото съдържанието и смисъла на пакетите не беше мой проблем. От тогава минаха 15+ години и не помня подробности. Но като цяло си имат система за филтриране и нещо като компресиране. Естествено през 1 пин няма как да изкараш всичко. Да кажем в минималния вариант те интересува само откъде е минало. Тогава се настройва да трейсва при инструкция с условен преход, както и викане/връщане. Абе като има някакъв преход. Колко бита ще генерира зависи от инструкцията. Евентуално ако нямаш твърде често преходи може и да се справи... Ако не мисля имаш опции дали да паузира процесора или да загубиш данни. В общия случай през SWO май само за статистика става. С допълнителни трейс пинове ще е значително по-добре, но пак мисля че няма гаранция за пълен трейс. В смисъл то изпълнението ще го хваща, ама за Тайм дебъга ти трябват и достъпите до паметта. Особено при М7 и нагоре може да имаш достъп на клок, демек 32 бита адрес + 32 бита данни... Сещаш се колко бързо ще се задръства |
||||||||||
| Автор: | palavrov [ Сря Май 31, 2023 8:06 pm ] | ||||||||||||||||||
| Заглавие: | Re: J-Trace | ||||||||||||||||||
За да се прави бак трейс трябва да се записва и какви са данните в регистър или памет които се променят с нови ... или да се прави някакъв сложен анализ и да се намери какво е записано предния запис - все сложна работа. |
|||||||||||||||||||
| Страница 1 от 4 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|