
                           Программатор TL866  
  
            Программатор TL866 состоит из следующих функциональных блоков: 
     Блок центрального процессора, основанный на микроконтроллере Чипа Pic18F87J50.. 
     Расширитель ввода / вывода, используя восемь 74HC373 запирается и один 74HC164 сдвиговый регистр. 
     Прикрепите драйверы, понятые с дискретными компонентами. Таким образом у нас есть 16 выключателей напряжения VPP,
     24 VDD напряжение переключается и 25 выключателей GND. 
     DC к конвертерам DC wich производят VPP программирование напряжения и напряжения питания VDD. Это сделано с двумя микросхемами MC34063.  

                    ******************
                       Рис. 1
                    ******************
          Блок центрального процессора 
  Это основано на микромикроконтроллере PIC18F87J50 и является ядром всего устройства.  
  Внутреннее программируемое оборудование составлено из двух главных модулей: 
     Bootloader: для более поздней перепрошивки. 
     Главное программное обеспечение: все средства программирования алгоритма. 
 
   Внутренняя флэш-память контроллера имеет 128 килобайтов и разделена следующим образом: 
      1-0x00000-0x017FF bootloader 
      2-0x01800-0x1FBFF главное программируемое оборудование 
      Столы декодирования 3-0x1FC00-0x1FFFF
 
                          *****************
                                Рис. 2
                         ****************** 
  Из трех областей памяти только могут быть обновлены эти два. Все 128 килобайтов флэш-памяти 
  разделен на блоки 1 килобайта каждый, таким образом, у нас есть 128 блоков, пронумерованных 
  от 0 до 127 следующим образом: 
  От 0 До 5 = bootloader (6 килобайтов) 
     6 - 126 = главное программное обеспечение (121 килобайт) 
     127 = столы декодирования (1 килобайт) 
   Обновление программного обеспечения, главным образом, происходит следующим образом: 
   Стирание блоков 6-126 
   Запись этой области памяти с новым содержанием. 
   Эта операция обеспечена bootloader, который управляемый программным обеспечением pc выступит, стирают память,             расшифровывают полученные блоки данных и пишущий флэш-память. 
  
                     Bootloader 
   Этот модуль является первым, которые бегут при запуске, и ответственно за подтверждение целостности главного программируемого оборудования и выполнение передачи к этому. 
   При каждом запуске это делает следующие операции: 
   1 инициализирует порты контроллера и периферию 
   2 проверяют состояние вывода RC1; если на нем логическая 1, тогда переход к пункту 5 
   3 проверяет, был ли способ загрузки через bootloader затребован главным программным обеспечением; 
     если да- тогда подскакивает к пункту 5. 
   4 проверяют последние 4 байта главного программного обеспечения, если в них записана сигнатура
     55, AA, A5, 5A  - считают этим главным  программным обеспечением действительно и передает выполнение      по адресу 0x1800; здесь bootloader прекращают функционировать. 
   5 инициализаций модуля USB 
   6 Ожиданияе команд от PC 
   7 возврат к пункту 6 

   Следовательно, мы можем вызвать bootloader способ запуска, подав на вывод RC1 логическую 1 при запуске, это может быть 
   сделано, впаяв резистор  100-200 Ом между +3.3 V и выводом  36 (R26) контроллера:  

                           *************************
                                    Рис. 3
                           *************************
     Хотя bootloader проверит целостность программного обеспечения, в некоторых случаях это может быть 
     действительная подпись программного обеспечения, но или главная программа отсутствует или испорчена, 
    приводя к недействительному выполнению кода и центральный процессор останавливается. Исправить ситуацию 
    можно только  прибегнув к bootloader способу. 
      Рассмотреный вход bootloader способ может быть сделан только в трех случаях: 
    - Вызван подачей логической 1 на вывод RC1, этот способ  имеет самый высокий приоритет. 
    - Когда был потребован главным программным обеспечением. 
    - В случае, если главная программа испорчена или стерта. 
  
    После входа в bootloader способ и инициализации модуля USB, начинается цикл ожидания команд от 
PC, которые выполняют только четыре процедуры: 
    1 СБРОС - перезагрузка контроллера. 
    2 ОТЧЕТ-  сообщение о статусе устройства, микропрограммной версии, регистрационного номера и кодекса устройства. 
    3 СТИРАНИЕ- стирается главная программа, очищая блоки 6-126 с и следующие. 
    4 ЗАПИСЬ- расшифровка и запись совокупности данных во флэш-памяти в указанном адресе. 
  
   ЗАМЕЧАНИЕ. Хотя в пункте 4 запись программы должна происходить по адресу, который определен в команде, чтобы быть в пределах диапазона адресов 0x01800-0x1FBFF, фактически bootloader, осуществленный в TL866, напишет по любому ошибочно указанному адресу  и не имеет никакой защиты, если такая ситуация произойдет при записи по адресам в блоках 0-5 или 127. Тогда bootloader перепишет себя (смешно!) или блок 127 декодирования флешь-памяти станет неверным, и bootloader будет не быть в состоянии сделать правильное декодирование. В обоих случаях устройство станет непригодным, его восстановление может быть выполнено только с внешним программматоромм, через разъем 
соединителем J1.  
   Это - ПРОТИВНАЯ ОШИБКА bootloader, так что остерегайтесь. 
   Хотя перепрограммирование устройства в вышеупомянутом случае может быть сделано очень простым, необходимо полнофункционально программирующее оборудование. Из соображений безопасности таковое не обеспечено изготовителем  
   (позор на Вас, autolelectric). 
   
   Для таких случаев я сделал маленькое сервисное программное обеспечение, которое обеспечивает следующие функции: 
    - производит полное программирование контроллера, с учетом типа и специфических кодов устройства. 
    - обновляет главное программное обеспечение, расшифровывая update.dat файл от изготовителя. 
    - форматирует главную область памяти (блоки 6-126). 
    - переключается между нормальным способом и bootloader. 
    - Показывает статус программатора и информацию идентификации. 
  
     Из соображений безопасности программа не будет выполнять форматирование и переписывание памяти в отсутствие  файла update.dat, который будет проверен на целостность. 
     Программа не будет выполнять операции, если будет обнаружено наличие двух или больше программаторов 
     одновременно. 
               
      ******************************************************************************************   
              Программируемое оборудование рис. 4 TL866 generator/updater главный интерфейс 
      ******************************************************************************************
              Главный интерфейс утилиты состоит из следующих элементов: 
   1. Переключение между программой обновления прошивки и генератором прошивки
   2. Путь к файлу update.dat (этот файл вы найдете в той же папке, где и программа minipro)
   3. Версия прошивки, которая будет залита; Если вы хотите сделать резервную копию вашей прошивки, выберите дамп прошивки.
   4. Кнопка перепрошивки; это выполнит основное обновление прошивки, вам понадобится файл update.dat, целостность которого будет проверена.
  5. Кнопка сброса; сбросит программатор и переключится между обычным режимом и загрузчиком.
   Если программатор не может войти в нормальный режим, он останется в режиме загрузчика.
  6. Кнопка дампа; эта кнопка станет активной, только если был загружен дамп прошивки.
  7. Кнопка «Дополнительно»; эта кнопка станет активной, только если был загружен дамп прошивки.
    Вы можете изменить тип устройства, серийный номер и бит защиты кода на лету, не используя внешний программатор.
  8. Информационная зона; для отображения информации об устройстве.
  9. Состояние устройства; для отображения состояния устройства.
  10. Напишите прогресс; для отображения хода обновления прошивки.

     Для регулярного обновления основной прошивки вам необходимо:
    1- Найдите файл update.dat
    2- Нажмите кнопку перепрошивки
    Это обновит основную прошивку и автоматически выполнит следующие операции:
   -переход в режим загрузчика
   -стереть основную область прошивки
   -расшифровать файл update.dat и записать в основную область прошивки новое содержимое
   -переход в обычный режим (только если была написана правильная прошивка).
  Независимо от того, какая у вас версия программатора, программа обновления загрузит выбранную прошивку в зашифрованном виде.
  правильный ключ, чтобы вы могли запрограммировать устройство TL866CS с прошивкой TL866A или наоборот. 
               
              ***********************************     
                   Рис. 5 Продвинутое окно 
              ***********************************
 В этом окне вы можете перепрошить свой TL866 без внешнего программатора, но будьте очень осторожны!
   Если что-то пойдет не так, вы можете заблокировать свое устройство (конечно, внешний программатор восстановит его).
   Итак, у нас есть:
   1. Версия загрузчика устройства, статус бита защиты кода и информация о серийном номере устройства.
   2. Раздел загрузчика. Здесь вы можете переписать версию загрузчика по вашему выбору, нажмите кнопку записи, чтобы продолжить; новый загрузчик будет записан очень быстро (1-2 секунды).
   3. Битовая секция защиты кода. Здесь вы можете изменить бит PIC18F87J50 CP0; нажмите кнопку записи, чтобы продолжить.
   4. Раздел серийного номера устройства. Ну, вы можете изменить код / ??серийный номер вашего устройства здесь, если хотите!
   Когда вы закончите с этим расширенным окном, перепрошейте обычную прошивку, выбрав желаемую
версию прошивки из главного окна или из программы minipro. 
              *********************************************
                   Рис. 6 полный микропрограммный генератор  
              *********************************************
Интерфейс генератора прошивки этой утилиты состоит из следующих элементов:
          1- поле кода устройства; содержимое этого поля будет отображаться в окне о программном обеспечении Minipro.
         как код DEV:xxxxxxxx (макс. 8 символов)
          2- поле серийного номера; содержимое этого поля будет отображаться в окне о программном обеспечении Minipro.
         как серийный номер:xxxxxxxxxxxxxxxxxxxxxxxx (макс. 24 символа)
             3- Кнопка редактирования; для редактирования кода устройства и серийного номера следующим образом:
                     ***********************
                            Рис. 7
                     ***********************

При нажатии двух кнопок «Случайно» код или серийный номер устройства будут обновлены случайными числами. Из
Конечно, вы можете вручную ввести то, что хотите, содержимое этих двух полей не ограничено.
   4- кнопка клонирования; это скопирует код устройства и серийный номер из активного программатора, подключенного к USB. Если вы собираетесь преобразовать версию CS в версию A, скопируйте код устройства и серийный номер сначала работающий программатор для сохранения оригинального серийного кода и кода устройства.
   5- Кнопка по умолчанию; обновит код устройства и серийный номер на значения по умолчанию.
   6- Селектор версии прошивки; Полная версия прошивки будет генерировать шестнадцатеричный файл с основной прошивкой, записанной в диапазоне адресов 0x01800-0x1BFFF; для опции только загрузчика этот диапазон будет заполнен пустым значение (FF).
   7- Версия прошивки для генерации; вы можете выбрать между версией A и CS.
   8- кнопка сохранения; нажав эту кнопку, вам будет предложено сохранить сгенерированный шестнадцатеричный файл прошивки.    

При нажатии двух кнопок «Случайно» код или серийный номер устройства будут обновлены случайными числами. Из
Конечно, вы можете вручную ввести то, что хотите, содержимое этих двух полей не ограничено.
4- кнопка клонирования; это скопирует код устройства и серийный номер из активного программатора, подключенного к
USB. Если вы собираетесь преобразовать версию CS в версию A, скопируйте код устройства и серийный номер
сначала работающий программатор для сохранения оригинального серийного кода и кода устройства.
5- Кнопка по умолчанию; обновит код устройства и серийный номер на значения по умолчанию.
6- Селектор версии прошивки; Полная версия прошивки будет генерировать шестнадцатеричный файл с основной прошивкой, записанной
в диапазоне адресов 0x01800-0x1BFFF; для опции только загрузчика этот диапазон будет заполнен пустым
значение (FF).
7- Версия прошивки для генерации; вы можете выбрать между версией A и CS.
8- кнопка сохранения; нажав эту кнопку, вам будет предложено сохранить сгенерированный шестнадцатеричный файл прошивки.    

Зашифрованный код устройства и серийные номера записываются в последнюю область флэш-памяти (0x1FC00-0x1FFFF).
Сгенерированный шестнадцатеричный файл прошивки содержит необходимые конфигурационные байты для программирования PIC18F87J50;
бит защиты от копирования CP0 не установлен, если вам нужно защитить от копирования программатор устанавливает этот бит в PIC программатор, который вы используете для этого.
 
Для перепрошивки TL866 вам понадобится программатор PIC (Pickit2,Pickit3,Picpgm,другой TL866A). J1
сокет - это стандартный разъем ICSP, просто подключите сюда кабель программатора pic, загрузите сгенерированный выше шестнадцатеричный файл
и перепрошейте.
На этом изображении разъем J1 расположен внизу слева от печатной платы, первая квадратная площадка — это контакт № 1.
На кабеле для программирования есть маркировка на контакте 1, убедитесь, что они совпадают.          