VladislavS 39 22 декабря, 2022 Опубликовано 22 декабря, 2022 · Жалоба Коллеги, не дайте умом тронуться, одолел меня RISC-V. Контроллер CH32V307. Ядро QingKeV4 c расширениями rv32imafc и abi = ilp32f судя по мануал. Команда непосредственной загрузки константы в регистр lui a5, 0x40011 кроме загрузки a5 портит ещё и а0. Вот под отладкой стою на команде. Теперь делаю один шаг. а5 загружен, а0 сломан. Команда закодирована правильно согласно талмудам. Подскажите, что происходит? Куда копать? PS: есть и другие команды, которые так себя ведут... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 7 22 декабря, 2022 Опубликовано 22 декабря, 2022 · Жалоба прерывания отключены? если нет, то код прерываний точно а0 не портит? в стандартном RISCV дебугере есть возможность запрета прерываний в single step - как сделано у китайцев - хз. ------------------- сохраните а0 в два регистра до и после lui, ну и брек после - сравните эти регистры - точно ли портится от lui (то есть проходите этот код не в single step) ------------------- выровняйте эту комманду на 32 (то есть чтоб адрес был 0х438) - nop например перед ней это не ответ, а что можно попробовать. может там какое-то исключение происходит между шагами дебагера, а код в нем кривой... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 22 декабря, 2022 Опубликовано 22 декабря, 2022 · Жалоба 19 минут назад, yes сказал: прерывания отключены? Код уже в прерывании. Вроде других прерываний не должно поверх быть. Сейчас попробую запретить вообще перед этим местом. 19 минут назад, yes сказал: сохраните а0 в два регистра до и после lui, ну и брек после Я на С/С++ пишу. Если только ассемблерными вставками грязной лапой залезть... 19 минут назад, yes сказал: выровняйте эту комманду на 32 Выравнивание ничего не дало. --------------------------------------------------------------------- Докладываю. Похоже, отладчик гадит. Запрет прерываний немного раньше по коду ничего не меняет. А вот если точку останова поставить чуть позже этой команды, то регистр оказывается не испорчен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 22 декабря, 2022 Опубликовано 22 декабря, 2022 (изменено) · Жалоба Software breakpoint или работа через program buffer? Изменено 22 декабря, 2022 пользователем one_eight_seven Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 22 декабря, 2022 Опубликовано 22 декабря, 2022 · Жалоба Если честно, я ХЗ как оно там внутри работает. Связка CH32V307(SWD) <-> WCH-Link <-> OpenOCD-WCH <-> riscv-none-elf-gdb <-> VisualGDB в Visual Studio. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 22 декабря, 2022 Опубликовано 22 декабря, 2022 · Жалоба Это не ответ на вопрос, а просто поправка опечатки, на последней картинке ошибка, правильно будет опкод = 0x37 Программа без rtos? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 22 декабря, 2022 Опубликовано 22 декабря, 2022 · Жалоба Не, без rtos. Пока просто щупаю. Тут ещё на каждом уровне пилить, пилить и пилить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Immortal_Buka 0 23 декабря, 2022 Опубликовано 23 декабря, 2022 · Жалоба для risc-v есть симулятор неплохой, https://github.com/riscv-software-src/riscv-isa-sim можно использовать как reference Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 26 декабря, 2022 Опубликовано 26 декабря, 2022 · Жалоба On 12/23/2022 at 8:18 AM, Immortal_Buka said: для risc-v есть симулятор неплохой, https://github.com/riscv-software-src/riscv-isa-sim можно использовать как reference Это SPIKE - до недавнего времени использовался как golden симупятор. Недавно в этом качестве стал использоваться QEMU - https://www.qemu.org/docs/master/system/target-riscv.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться