Поскольку оба процессора имеют разную архитектуру, вы не сможете проверить, какой процессор работает во время выполнения.Вы можете сделать это во время компиляции, так как у вас будет определенный флаг определения, установленный вашей цепочкой инструментов (см. https://sourceforge.net/p/predef/wiki/Architectures/). Для Arm это должно быть __arm__
или подобное, в зависимости от цепочки инструментов, которую вы используете для HPS.
#ifdef __arm__
<specific code for HPS>
#else
<specific code for NIOS>
#endif /* __arm__ */
Вы также можете посмотреть определения набора инструментов, используя команду препроцессора c (cpp):
<toolchain>-cpp -dM /dev/null
Примечание: для процессора Arm регистр MIDR можно использовать длязнать, какой тип вы используете, и к этому можно получить доступ во время выполнения. Но при сборке для NIOS II у вас будет ошибка компиляции. Поэтому вам нужно использовать препроцессор для вызова определенного имени регистра Arm и удаления кода при сборке дляNiosII.