Gradient 1 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба Чип CY7C68013A, ядро 8051, флеш отсутствует. Программа загружается в RAM 16кб по USB. Файл линкера определяет in chip RAM как CODE. Поэтому изменить содержимое этой секции невозможно, тк она read only с точки зрения компилятора и нет инструкций поддерживающих туда запись. Можно только читать. Хотя на самом деле аппаратно поддерживается чтение и запись с помощью DPTR но компилятор это злое дело пресекает. Поэтому модифицировать код программно не удаётся. Вопрос: Можно ли каким способом можно указать линкеру, что секция памяти CODE RW а не R? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба 2 hours ago, Gradient said: Вопрос: Можно ли каким способом можно указать линкеру, что секция памяти CODE RW а не R? Угу, переписать или написть свой скрипт линкера. Ему вообще по-барабану какая и где память. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба Вы уважаемый снова за старое? Пример приведите плиз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба Just now, Gradient said: Вы уважаемый снова за старое? Не понял. Вы мне следователь что-ли? 2 minutes ago, Gradient said: Пример приведите плиз. Нет у меня примера для вашего МК. Но я точно знаю, что линкер это должен делать. Какая ему-то разница? Он ничего сам о памяти не знает. Он читает только то, что написано в скрипте. Выложите свой скрипт. Посмотрю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 ноября, 2019 Опубликовано 29 ноября, 2019 (изменено) · Жалоба Вы вероятно ничего не знаете, но пытаетесь давать бестолковые советы в каждой теме. В чем я вижу и преуспели, судя по числу сообщений. Если секция CODE, попытка записи туда компилятором запрещается. Если секция не CODE, код из неё не выполняется... так и как изменить изнутри код чтоб он далее выполнялся? Это долбанутый старый чип. Там всё плохо. >datasheet > xcl файл в аттачменте CY7C68013A_xcl.zip Изменено 29 ноября, 2019 пользователем Gradient Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба 2 hours ago, Gradient said: Хотя на самом деле аппаратно поддерживается чтение и запись с помощью DPTR но компилятор это злое дело пресекает. Поэтому модифицировать код программно не удаётся. Нельзя ли сделать функцию (с асм-вставками?), которая пишет что надо и куда надо? Уж это компилятор точно не сможет пресечь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба Сделал... но почему то данные попадают в XDATA а не в CODE. byte_write_code_ram: //unsigned short address: R3=H, R2=L mov DPH, R3 mov DPL, R2 //char data: R1 mov A, R1 //Write movx @DPTR, A ret По сути: movx всё делает правильно, она и должна писать в XDATA По идее надо применять movc, но такой команды нет... ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба 15 minutes ago, Gradient said: Сделал... но почему то данные попадают в XDATA а не в CODE. Какие же претензии к компилятору? Уж он тем более запутается Этот 8051 - древнее г. мамонта. Он и так кривой сам по себе, а этот сайпресс сделал его ещё немного кривее. Давно я с ним работал, подзабылось. Вспоминать совсем не хочется... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба Дешевле и быстрее USB для High-speed не нашел. Придётся с этим работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба 3 минуты назад, Gradient сказал: Дешевле и быстрее USB для High-speed не нашел. Придётся с этим работать. А зачем там HS? Для GPIF? Так для GPIF x51-ядро не нужно после инициализации. Да и вообще - зачем именно самомодифицирующийся код? Может просто обойтись без него? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 ноября, 2019 Опубликовано 29 ноября, 2019 (изменено) · Жалоба Вероятно надо что-то "подкрутить" в верхних регистрах конфигурации, ведь как то USB-engine туда пишет. Устройство должно менять конфиги по команде извне, там ещё BT чип прикручен. HS важен для синхронизации часов, тк задержки доставки пакета у FSpeed не приемлимые. Для науки это... физические эксперименты. Изменено 29 ноября, 2019 пользователем Gradient Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба 7 минут назад, Gradient сказал: Вероятно надо что-то "подкрутить" в верхних регистрах конфигурации, ведь как то USB-engine туда пишет. Устройство должно менять конфиги по команде извне, там ещё BT чип прикручен. Но зачем для этого что-то писать в CODE?? "Переконфигурить" - точно так же как и "конфигурить при старте". 7 минут назад, Gradient сказал: HS важен для синхронизации часов, тк задержки доставки пакета у FSpeed не приемлимые. Мне кажется у Вас что-то не так с постановкой задачи. Синхронизации каких-либо часов задержки передачи не страшны от слова "совсем". Разве что если нужно синхроинизровать какое-то готовое устройство с кривым алгоритмом синхронизации, который никак нельзя изменить. Страшен джиттер. Но думаю что и в HS он будет не меньше чем в FS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба Писать в CODE потому, как планирую подгружать код по I2C и выполнять. Задержка пакета, это если вы хотите его отправить а контроллер хоста занят и вам надо ждать как минимум 1ms. Джитер серьёзно меньше, уже это проверил. HS работает гораздо лучше, как минимум 8 раз, и это уже много лучше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 29 ноября, 2019 Опубликовано 29 ноября, 2019 · Жалоба 4 минуты назад, Gradient сказал: Задержка пакета, это если вы хотите его отправить а контроллер хоста занят и вам надо ждать как минимум 1ms. Откройте для себя изохронные передачи. И контроллер хоста перестанет быть занят. Кроме того для синхронизации можно использовать например SOF. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 29 ноября, 2019 Опубликовано 29 ноября, 2019 (изменено) · Жалоба >> Синхронизации каких-либо часов задержки передачи не страшны от слова "совсем" Вот тут можно поподробнее. Мне надо засинхронизировать 2 процесса с периодом примерно 4мс, чтоб начало совпадало. Причем одно из устройств запаяно в стеклянной банке и там вакуум и флаг старта туда передаётся через BT канал от PC. Изменено 29 ноября, 2019 пользователем Gradient Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться