- ТЛГ-протокол для БК0010-01
- [+] Старые сообщения (17)
-
? Дмитрий - 06.01.2018 12:13
А что не так? Бинарник подразумевает формат "адрес, длина, данные". 00 02 - адрес загрузки, 08 00 - длина, далее код.
-
? dima83 - 06.01.2018 13:44
ну как мне из вот этих цифр "00 02" сляпать : "00000010 00000000" ведь читать то я планирую побайтно с самого первого байта!
-
? dima83 - 06.01.2018 13:47
кроме этого хотелось бы автозапуск без ввода "S". какой начальный адрес указать и вообще возможно ли это?
-
? Дмитрий - 06.01.2018 21:45
>> ну как мне из вот этих цифр "00 02" сляпать : "00000010 00000000"
Не понял - что из чего для чего? Для передачи нужно брать чистый код, без заголовка BIN.
¤
>> кроме этого хотелось бы автозапуск без ввода "S". какой начальный адрес указать и вообще возможно ли это?
Автозапуск подразумевает предварительно записать адрес запуска перед кодом и грузить файл надо не на 1000(8) адрес, а на 760(8) - значит код предварить 8 словами 1000(8). Или взять 720 адрес для верности - тогда 24 слова 1000(8). И грузить командой L<адрес>. В этом случае после загрузки произойдет автозапуск загруженного. Автозапуск таким образом подменяет в стеке адрес возврата на нужный нам.
¤
Но данный способ не сработает, если код будет загружаться не с адреса 1000, а, скажем, с 20000(8).
-
? dima83 - 07.01.2018 11:00
Да, Вы правы! Нужно читать как есть...т.е. сначала младший байт, затем старший и т.д. Вчера написал подправил прогу и теперь загоняю код бинарника непосредственно в EEPROM пика, но там всего 128 байт памяти, что не особо радует.
¤
А не проще ли просто подправить адрес в самом бинарнике?
-
? Дмитрий - 07.01.2018 14:57
Монитор БК не знает ни о каких бинарниках и их форматах, понятия не имеет об адресе в заголовке программы. Выполнена загрузка программы, происходит выход обратно в монитор. Если был автозапуск (подменен адрес возврата на адрес запуска программы), то произойдет запуск программы.
-
? dima83 - 07.01.2018 15:40
Так я ж собираюсь загнать бинарник по ТЛГ-каналу. Первые два байта будут содержать измененный адрес начальной ячейки памяти. Я пробовал изменять его на 760 и 720 ничего не запускается!
-
? dima83 - 07.01.2018 15:44
Вот конкретная программа, которая успешно загружается в БК с ТЛГ-канала и выполняется по команде "S".
¤
MOV #103,R0
Q: EMT 16
BR Q
¤
Первые 2 байта бинарного файла содержат адрес 1000(8).
Какой адрес мне нужно занести в эти 2 байта что бы произошел автозапуск?
-
? dima83 - 07.01.2018 16:03
Теперь мне нужно написать что то вроде загрузчика файлов и разобраться каким образом можно подключить usb-flash к пик контроллеру. Если кто что может подсказать буду рад выслушать.
-
? Дмитрий - 07.01.2018 16:26
Для автозапуска нужно записать не 2 байта адреса, а больше, т.к. мы не знаем, какой указатель стека был в момент вызова. Поэтому
¤
.WORD 1000,1000,1000,1000,1000,1000,1000,1000
MOV #103,R0
Q: EMT 16
BR Q
¤
и грузить такую программу надо на адрес 760(8). Но не факт, что указатель стека попадет в диапазон 760-776. Поэтому для верности адрес загрузки брали 732(8) или 720(8) и заполняли адресом запуска до кода программы.
-
? Alexander Tishin@ - 08.01.2018 18:49
При запуске из монитора -- попадёт. Такие адреса это паранойя в общем-то.
-
? BD@ - 08.01.2018 21:22
Как я понимаю, на данный момент, он pic может "запрограммировать", неким кодом для БК. А как через ТЛГ передать эту хрень еще не задумывался. Будет первым в космосе, наверное ))
-
? Дмитрий - 09.01.2018 17:43
>> При запуске из монитора -- попадёт. Такие адреса это паранойя в общем-то.
У меня в давние времена несколько раз автозапуск игр не срабатывал при адресе 760(8). Пришлось менять на 732(8). С ним работало всегда.
-
? dima83 - 10.01.2018 10:46
? BD@ - 08.01.2018 21:22
Как я понимаю, на данный момент, он pic может "запрограммировать", неким кодом для БК. А как через ТЛГ передать эту хрень еще не задумывался. Будет первым в космосе, наверное ))
¤
Уже запрограммировал и уже передал!
-
? dima83 - 10.01.2018 11:04
f0 01 89 32 00 02 00 02 00 02 00 02 00 02 00 02
00 02 00 02
¤
Вот фрагмент файла melman, который запускается автоматом
видно, что начальный адрес загрузки 01F0 т.е. 760
-
? dima83 - 10.01.2018 11:51
Интересный факт, что память данных пик-контроллера ограничивается емкостью 128 байт, тогда как память программ (Flash) - 1024 байта. Но при использовании памяти программ коды придется прописывать вручную или использовать подпрограмму табличной конвертации. Метод конечно сложный, но позволяет увеличить объем программы до 1536 байтов (три таблицы).
-
? BD@ - 10.01.2018 12:46
имей ввиду - автозапуск зло. ошибки то не обрабатываются при передаче. ковыряй MIRAGом значение указателя стека SP при удачной загрузке по ТЛГ.
-
? BD@ - 10.01.2018 13:12
офф. под новый год отправлять была плохая идея..
https://gdeposylka.ru/courier/russian-post/tracking/RO163039972RU
-
? dima83 - 10.01.2018 15:51
Написал версию для загрузки проги из программной памяти пика. Теперь максимальный объем загружаемой проги равен 765 байт.
-
? dima83 - 15.01.2018 10:52
LA.760
.WORD 1000,1000,1000,1000,1000,1000,1000,1000
MOV #103,R0
Q: EMT 16
BR Q
¤
Вот теперь она оттранслируется в начальный адрес 760 и будет запускаться автоматом!
-
? dima83 - 23.01.2018 14:30
Добрый день. Заметил, что при нажатии на клавишу "СТОП" после загрузки программы происходит самопроизвольная инициализация ТЛГ канала. Бк выдает произвольный байт в линию. Кто что может пояснить по этому вопросу?
- << Форум