Towards automated, scalable, and hardware-independent firmware testing