RxTx (21.12.2019 15:40 - 15:57, просмотров: 475) ответил my504 на А почему не пойти по цивилизованному пути и убрать ресет, заменив его выходом в верхушку main-а?
А я это попытался сделать первым же делом. Я уже где-то объяснял. Потому что этот софт на контроллере активно обманивается в realtime с софтом на PC. И на малейший чих это говно ОБОЮДНО верищит об обрыве связи (и прочих бедах) и друг без друга уже не работает.
А дебажить без только что упавшей PC проги - бессмысленно, я дебажу именно realtime обмен по протоколу.
Исходников софта на PC чтобы поотключать все проблемы у меня нет.
Дебажить (останавливать контроллер) когда прошел хэндшейк после сброса еще можно, но в момент первичного запуска при хэндшейке - нельзя. А мне надо было понять проблемы именно хэндшейка.
Я пытался симулировать сброс на контроллере и не преуспел. Код написан запредельно уёбищно, всё размазано по всей прошивке, тронешь одно, падает в другом месте. Такого я не видел никогда.
Оно закриптовано, использует криптографию. Оно имеет таймауты.
Оно включено посредине в цепочку трех устройств, обоюдно обменивающихся реалтайм-пакетами.
Софт на PC сначала снюхивается по хэндшейку, а потом при каких-то условиях (мне непонятных) периодически сбрасывает моего подопечного (вернее, сейчас только хочет сбросить). Мне остается только успеть попасть в короткий таймаут и сбросить вручную.
После этого микрочиповский дебаггер работает как надо.
Таким образом первая проблема в микрочипе. Ну и ладно, сброс. Ну и что, а с какого хуа debug executive терять связь-то с PICkit'ом?
Вторая проблема то что после этого warm reset'а под дебаггером (а не в Rlease) связь не устанавливается.
Я вижу что dsPIC встал на 0x000000, пускаю его через Run - хер. PC'шный софт удачный коннект (после необходимого reset'а) не диагностирует.
Если ставлю breakpoint до asm("reset") и сбрасываю сам - всё нормально, всё работает. Возникает вопрос, а как оно тогда работает в Release сборке?
Инфа такая - юморист, автор всего этого дела работает с состоянием break по линиям Rx/Tx - если линия в break, то нужен reset. Я полагю что верно и обратное, по мнению PC софта, как только линия вернулась из break - reset контроллера произошел, можно переходить к слеюущей фазе инициализации, иначе беда.
Я не знал в чем дело, почему со стороны PC если asm("reset") выполняется под дебаггером не получается подтверждения механизма сброса, так как на этом месте теряю debugger и не могу понять чем занимается мой подопечный контроллер (если я не сброшу его PICKit'ом извне).
Это уже только светодиодиками трассировать где он. Можно. Но у меня нет столько времени, всё это как всегда, надо было еще вчера. Почему и вопросы.
Помощь была оказана и оказалась очень своевременной. Помогли, рассказали как вручную сбрасывать dsPIC извне и оставаться под дебаггером.
Спасибо, князь. Вы настоящий дворянин. И программист.