Проект eMMC-emu

Полноценных эмуляторов eMMC практически нет: программные решения не справляются с требуемыми скоростями, а существующие обходные подходы не позволяют воспроизводить всё многообразие поведения накопителя. Мы решили исправить эту ситуацию и создать собственный эмулятор для исследований безопасности и воспроизведения нестандартного поведения накопителей.
В процессе разработки пришлось разбираться с FPGA, DDR4, AXI, Clock Domain Crossing и особенностями реальных хост-контроллеров. Оказалось, что они не всегда следуют спецификации (которой нет в открытом доступе) и порой предъявляют к eMMC собственные требования.
Нам приходилось отлаживать эмулятор с кардридером, программатором и даже одноплатником Orange Pi 3B. В итоге он смог загрузить Linux и перейти к режиму HS200.
Как превратить FPGA в eMMC и почему отладка хост-контроллера иногда сложнее самой эмуляции - читайте в статье.



















