Откровенно говоря, когда услышал о новом интерфейсе, подумал - опять "круги на воде разводят" ...
В качестве первго аргумента в его пользу утверждали сокращение требуемых линий, но извините, 4 или 3 линии уйдет на отладку какая в принципе разница, зато "отваливается" вся идеология JTAG - когда разные устройства можно выстроить в одну цеть и вести отладку по одному интерфейсу.
Вторым аргументом шло увеличение скорости, ну еще бы раз нет необходимости оперировать с JTAG TAP машиной ...
Вобщем, настроен я был довольно безразлично пока не довелось поупражняться, так скажем, в "боевых" условиях.
Следует заметить, хотя идеология JTAG и позволяет объединять различные устройства в одну цепь, камнем преткновения становится софт который может понимать "чужие" устройства в цепи, из личного опыта, это приводит к тому - если на плате есть свободное место, то лучше ставить отдельные JTAG разъемы для разных устройств, чтобы уже наверняка не терять время на "неувязки".
SWD естественно уже не сможет работать с цепочкой устройсв, зато это избавляет от длительных манипуляций с TAP машиной (которые у JTAG необходимы для адресации устройства), что существенно ускоряет процесс взаимодействия при отладке (при программировании флешек все-равно большая часть времени уходит на задержки при стирании-программировании секторов).
Но вот что меня действительно порадовало в SWD, это возможность трассировки в реальном масштабе времени, если раньше, чтобы посмотреть состояние какой-либо переменной, нужно было прервать исполнение кода (остановив весь контроллер, что слабо применимо к системам управления), сейчас достаточно "накидать в кучу" требуемые переменные и запустить код на исполнение, значения этих переменных будет постоянно обновляться не останавливая ядро и не требуя никаких манипуляций с вашей стороны - очень удобно! |