ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
669395 Топик полностью
Гудвин, волшебник (23.04.2016 03:38 - 04:03, просмотров: 263) ответил Гудвин на W7500P сегодня попал в руки. Плата WIZwiki w7500p. Кучерявые прибамбасы - загрузка фирмвари чипа и отладчика перетаскиванием мышкой файла на "usb диск". Дальше хуже - встроенный CMSIS-DAP отладчик афуительно томозной (HID). Светодиоды при его
Первый пошел... Я то думаю, что это раскосенькие так разухарились - аж отдельную бумажку родили (не иначе, как подтираться ;) Нестабильно работает вход reset. Закономерностей не выяснил. То сбрасывается, то нет. То то их гребаный наплатный  http://wizwiki.net/wiki/lib/exe/fetch.php?media=products:w7500:ref_sch:w7500_reset_pin_design_guide_eng.pdf
cmsis_dap "глючит". Имхо, узкоглазые тупо долбят reset и через swd пытаются выяснить, сбросился чип, или нет. Я его перешил (чтобы еще и он говнеца не набрасывал) в CDC для ISP и отладки. Reset прицепил напрямую к кнопперу. Отладка через ST-Link. Далее попытался-таки выяснить, есть ли в чипе защита от чтения. В доке все как то туманно и мутно. На форуме у них сидит "Псаки" узкоглазого разлива - на все вопросы отвечает не хуже самой Джейн ;) Защита у них устанавливается ISP загрузчиком (uart) с помощью утилиты на питоне. Защита от чтения ЕСТЬ. Когда взводишь флажок, SWD отрубается. Но не уверен, что она не даст считать флэш самой этой утилиткой :) В ней тупо запрещена галочка верификации (в текущем релизе). Исходник на питоне имеется, в нем присутствует команда "DUMP". А вообще там полный звиздец (еще те говнокодеры): cmd = "LOCK PROG" + " " + hex_flockr0.zfill(8) + " " + hex_flockr1.zfill(8) resp = self.isp.writeCmd(cmd) if( resp[0] != '0'): msg_error = "ERROR LOCK PROG : " + resp wx.MessageBox(msg_error, 'Warning',wx.OK | wx.ICON_ERROR) return #Set Lock Information if self.m_checkBox_erase_mass.IsChecked(): ret = self.isp.writeCmd("ERAS MASS") if ret[0] != '0': msg_error = 'ERROR MASS ERASE ' msg_error += ret wx.MessageBox(msg_error, 'Warning',wx.OK | wx.ICON_ERROR) return if self.m_checkBox_erase_chip.IsChecked(): ret = self.isp.writeCmd("ERAS CHIP") if ret[0] != '0': msg_error = 'ERROR CHIP ERASE ' msg_error += ret wx.MessageBox(msg_error, 'Warning',wx.OK | wx.ICON_ERROR) return Ну не идиотизм ли? Сначала лочат кристалл (а там кроме защиты от чтения, есть и защита от записи всей флэш или выборочных блоков), а потом его стирают... Естественно, оно вылетает с ошибкой. Сам протокол несложный. Сначала пуляется "0x55" для автоопределения скорости загрузчиком. Потом, после ответа, текстовые команды. Прошива пересылается в загрузчик по протоколу "x-modem", DUMP просто вываливается в uart блоками по 2 кб. Зоопарк :) PS: Насчет "Reset": думал, что просто мне попался бракованный чип, но поведение наплатного "отладчика" весьма показательно. Имхо детская болезнь. Вылечат. Иначе этот чип умрет, не родившись :)