Как я и просил некоторое время назад, я постараюсь поделиться своим опытом сейчас, более чем через год после того, как я задал оригинальный вопрос. Мы решили использовать Windriver, но до сих пор мы написали только драйвер для Windows CE 6.0, поэтому я не могу комментировать межплатформенную поддержку.
Использование Windriver в Windows CE 6.0 имеет как преимущества, так и недостатки. Это означает, что весь наш код драйвера теперь находится в библиотеке, поэтому его было легче разрабатывать и отлаживать (по сравнению со стандартным драйвером, который требует Platform Builder). Так что с точки зрения разработки это было приятно. Производительность тоже была в порядке. В начале работы с API-интерфейсом Windriver и его использованием были некоторые трудности, особенно с DMA и прерываниями, но я не думаю, что это было хуже, чем изучение сырого Windows CE 6.0 PCI API.
Единственный реальный недостаток, о котором я могу думать, это то, что «реальный» драйвер легче разделить между несколькими процессами, чем библиотека, которую мы создали с помощью Windriver. В нашем приложении (встроенная система с одним процессом) на самом деле это не проблема, но сложнее создать утилиты отладки / разработки, которые работают на оборудовании позади основного процесса. Мы использовали этот подход для тестирования / отладки на других платформах, но здесь это немного сложнее.
Подводя итог, я думаю, что мы сделали правильный выбор, и я рад, что у нас есть возможность перенести наш "драйвер" на рабочий стол Windows с (надеюсь) очень небольшими усилиями, когда нам это нужно.