jcxz 241 23 мая, 2019 Опубликовано 23 мая, 2019 · Жалоба 12 минут назад, k155la3 сказал: Да. Если переходы вычисляются ассемблером - то все должно остаться рабочим (и прямые и относительные). Не знаю как там в x51, но в других архитектурах компоновщики могут использовать выравнивание секций в памяти. И после добавления 1-3 NOP-ов даже в самое начало исходника, можно получить изменение gap-ов между функциями или данными во flash. И длины переходов поменяются. Ну и коды команд соответственно. Уж не говоря о том, что компоновщик может и расположение секций поменять, на более оптимальное для новых адресов. И получится, что добавив эти NOP-ы, поменяете вообще весь образ прошивки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ozelot 9 23 мая, 2019 Опубликовано 23 мая, 2019 · Жалоба А почему бы не попросить Федосенко Игоря Николаевича подправить прошивку прибора? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 23 мая, 2019 Опубликовано 23 мая, 2019 · Жалоба Посмотрел asm. Что-то мне не нравится флажок LCCNENSE_NO. Во-первых, название плохое, а во-вторых, какие-то при его выставлении манипуляции странные происходят. Где он проверяется, правда, я не нашёл. И какой-то FL_LCCN непонятный встречается... Ну и я правильно понял, что начальная калибровка выполняется с помощью какой-то программы с ПК? Такое подозрение, что она в EEPROM пишет какую-то константу в этот момент (специфичную для данной конкретной версии прошивки). PS плотно с 51-ми никогда не работал, бог миловал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tronix286 0 23 мая, 2019 Опубликовано 23 мая, 2019 · Жалоба smk, а попробуйте прикола ради вот этот файл зашить.... kolib.hex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misyachniy 0 23 мая, 2019 Опубликовано 23 мая, 2019 · Жалоба 28 minutes ago, esaulenka said: Посмотрел asm. Что-то мне не нравится флажок LCCNENSE_NO. Во-первых, название плохое, а во-вторых, какие-то при его выставлении манипуляции странные происходят. Где он проверяется, правда, я не нашёл. LCCNENSE_NO проверяется в прерывании по приему START_PROG: JMP PROG ORG 03H CALL RS_232_IN CALL CRC_KONTROL Очевидно идет сравнение кода внутри программы с получаемым по UART. Но что происходит так просто не скажешь. Может проверка типа программы: пользователя или технологическая. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 23 мая, 2019 Опубликовано 23 мая, 2019 · Жалоба 7 часов назад, Ozelot сказал: А почему бы не попросить Федосенко Игоря Николаевича подправить прошивку прибора? Умер он. Технологической программы нет. Есть режим настройки в приборе. Включается при подаче питания если нажата комбинация кнопок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 24 мая, 2019 Опубликовано 24 мая, 2019 · Жалоба На сегодняшний день ситуация такая. Если изменить один любой символ - измерение портится. При этом не имеет значения отображалась страница или нет. Если строчку ORG 0300H заменить на ORG 0310H - измерение портится, но программа работает. Файл kolib.hex зашивал. Английские слова видно, но измерение портится. Программа работает. Замечено, что измерение портится не сразу, а несколько позже. Минуты через 3 примерно. При этом время прохождения последних фильтров заметно увеличивается. Там диск с 18 фильтрами. Шаговый двигатель вращает диск и фильтры по очереди подставляются в измерительный канал. У каждого фильтра настроено время экспозиции. Так вот время экспозиции последних фильтров изменяется. Сначала в меньшей степени, но примерно к 3-му испорченному измерению время экспозиции возрастает заметно. Это однозначно приводит к порче измерения т.к. времена экспозиции настраиваются для каждого фильтра индивидуально. В оригинальной прошивке такого не происходит. Завтра смогу глянуть отладчиком. Если есть идеи на что смотреть, то буду рад. В 23.05.2019 в 14:13, misyachniy сказал: LCCNENSE_NO проверяется в прерывании по приему Связь с компьютером отваливается при любой правке. Нет ли тут какой-то взаимосвязи? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 24 мая, 2019 Опубликовано 24 мая, 2019 · Жалоба Если нужно что-то проверить, то пишите на [email protected] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 220 24 мая, 2019 Опубликовано 24 мая, 2019 · Жалоба В 22.05.2019 в 19:53, smk сказал: Авторский хекс В теме нет данных, пробовали ли Вы менять непосредственно его. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 24 мая, 2019 Опубликовано 24 мая, 2019 · Жалоба 1 hour ago, smk said: . . . .Связь с компьютером отваливается при любой правке. Нет ли тут какой-то взаимосвязи? Если Вы меняете в строке 1 байт (не коде, а литерал для LCD) и связь отваливается - то есть. Если при этом не надо ждать ранее задекларированные 3 минуты для определения сбоя - можно это взять за основу. Надо проснифить (желательно с логом и аппаратно, не через драйвер) обмен по RS232 с компом, нормальный обмен и "сбойный". Потому как многометровый исходник "лопатить" будет достаточно сложно, надо за что-то зацепиться. Сбой протокола - можно уже посмотреть, на отладчике "в нужном месте" BP. Если защита сделана прямыми руками, то факт работы под отладчиком прога тоже определит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 24 мая, 2019 Опубликовано 24 мая, 2019 · Жалоба много странного в коде. . . . JB INT1,MENU JNB TEST,MENU JMP NASTROYKI_DOP JMP MENU MENU2B1: . . . . и это далеко не единственный "перл". Имеем дело с "бразильской разведкой" ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 24 мая, 2019 Опубликовано 24 мая, 2019 · Жалоба Если защита сделана прямыми руками, то факт работы под отладчиком прога тоже определит. Навряд ли, C8051F02 древний и не настолько хитро...выдуманный чип, нет в нём механизмов для этого. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vguard 2 24 мая, 2019 Опубликовано 24 мая, 2019 · Жалоба Думаю, что решил задачу, отправил автору измененный исходник на [email protected]. Контрольная сумма кода считается здесь: C_PR: MOV BYTE_CNT,#077H MOV BYTE_CNT+1,#000H MOV DPTR,#TEXT;;; MOV OP+0,#000H MOV OP+1,#000H CR_LOOP: CLR C CLR A MOVC A,@A+DPTR MOV OP+2,A INC DPTR CLR C CLR A MOVC A,@A+DPTR MOV OP+3,A INC DPTR CALL AD_16 DJNZ BYTE_CNT+1,CR_LOOP DJNZ BYTE_CNT,CR_LOOP MOV DPTR,#IND_BUF+2+16 MOV A,OP+0 MOVX @DPTR,A INC DPTR MOV A,OP+1 MOVX @DPTR,A RET И здесь: CP_PROG: MOV BYTE_CNT,#0EAH MOV BYTE_CNT+1,#000H MOV DPTR,#0100H;; MOV DPTR,#TEXT;;; MOV OP+0,#000H MOV OP+1,#000H CP_LOOP: CLR C CLR A MOVC A,@A+DPTR MOV OP+2,#0 MOV OP+3,A INC DPTR CALL AD_16 DJNZ BYTE_CNT+1,CP_LOOP DJNZ BYTE_CNT,CP_LOOP MOV DPTR,#IND_BUF+16 MOV A,OP+0 MOVX @DPTR,A INC DPTR MOV A,OP+1 MOVX @DPTR,A RET На выходе получаются 4 байта контрольной суммы по смещению IND_BUF+16. Контрольная сумма IND_BUF+16 используется в двух местах, в которых автор при несовпадении ее с некими расчетами проводит дополнительные манипуляции. Тут: ID_ID: ;;; JB PROGREV2,UF_WR_END2 JNB PO_ID_OK,UF_WR_END2 PUSH ACC PUSH PSW MOV DPTR,#0F000H CLR A CLR C MOVC A,@A+DPTR MOV MEM_TMP+12,A CLR A CLR C INC DPTR MOVC A,@A+DPTR MOV MEM_TMP+13,A MOV DPTR,#IND_BUF+1+16 MOVX A,@DPTR CLR C SUBB A,MEM_TMP+13 CJNE A,#000H,L725;<----это можно отключить MOV DPTR,#IND_BUF+0+16 MOVX A,@DPTR SUBB A,MEM_TMP+12 CJNE A,#000H,L725;<----это можно отключить POP PSW POP ACC JMP UF_WR_END2 L725:;<--------------------------------здесь автор начинает гадить MOV A,MEM_TMP+15 ADD A,TL1 INC A CLR ACC.6 CLR ACC.7 MOV MEM_TMP+15,A MOV A,MEM_TMP+14 ADDC A,TL1 INC A MOV MEM_TMP+14,A POP PSW POP ACC MOV DPH,MEM_TMP+15 MOV DPL,MEM_TMP+14 ADDC A,MEM_TMP+14 И тут: F1_DIVV_F1K_END: RET F1_DIVV_F1K: ;;ID_ID2: PUSH DPH PUSH DPL ;Z ;;;; JMP L12345 JNB Y_PK,L1725 JNB PO_ID_OK,L1725 PUSH ACC PUSH PSW MOV DPTR,#0F002H CLR A CLR C MOVC A,@A+DPTR MOV MEM_TMP+12,A CLR A CLR C INC DPTR MOVC A,@A+DPTR MOV MEM_TMP+13,A MOV DPTR,#IND_BUF+3+16 MOVX A,@DPTR CLR C SUBB A,MEM_TMP+13 CJNE A,#000H,L1725;<------------это можно отключить MOV DPTR,#IND_BUF+2+16 MOVX A,@DPTR SUBB A,MEM_TMP+12 CJNE A,#000H,L1725;<------------это можно отключить POP PSW POP ACC ;;;;;;;;;;;;;;;;;;;;;;;;;; JMP L12345 L1725: L12345: ;;; PUSH DPH ;;; PUSH DPL MOV DPH,TMP+14;<------------начало манипуляций MOV DPL,TMP+15 MOVX A,@DPTR MOV OP+4,A INC DPTR MOVX A,@DPTR MOV OP+5,A INC DPTR MOV TMP+14,DPH MOV TMP+15,DPL MOV OP+6,#27H ; 3 !!!!!!!!!!!!!!!!!!!!!!!! MOV OP+7,#10H; 232 CALL MULT16 MOV DPH,TMP+12 MOV DPL,TMP+13 MOVX A,@DPTR MOV OP+6,A INC DPTR MOVX A,@DPTR MOV OP+7,A INC DPTR MOV TMP+12,DPH MOV TMP+13,DPL;<--------------конец манипуляций POP DPL POP DPH CALL DIVV16 MOV A,OP+2 MOVX @DPTR,A INC DPTR MOV A,OP+3 MOVX @DPTR,A INC DPTR RET В последнем куске вне зависимости от проверки контрольной суммы блок манипуляций выполнится. Значит видимо так и задумано. Автору поста можно попробовать его отключить и посмотреть что будет. Надеюсь отключение защиты сработает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 25 мая, 2019 Опубликовано 25 мая, 2019 · Жалоба Добро. Выезжаю на работу и сразу проверю. Мне бы уже выправленный чтоб я не ошибся в чем-то. Связь через почту. Форум могу только читать с телефона (спасибо админу за настройки роутера). Потому связь через почту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 25 мая, 2019 Опубликовано 25 мая, 2019 · Жалоба 17 часов назад, vguard сказал: Думаю, что решил задачу, отправил автору измененный исходник на [email protected]. Исходник получил. Все работает. Думаю победитель определился. Спасибо всем за участие и помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться