ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
966138 Топик полностью
RxTx (21.12.2019 15:40 - 15:57, просмотров: 488) ответил 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 извне и оставаться под дебаггером.
Спасибо, князь. Вы настоящий дворянин. И программист.