Как проверить, что микропроцессор это Altera Nios? - PullRequest
1 голос
/ 18 марта 2019

Я пишу некоторый C-программный код для микропроцессора Altera / Nios II (uP). Этот код будет отличаться от микропроцессора Altera Arm 9. Поэтому мне нужно написать 2 разных кода для разных задач. Как я могу проверить во время выполнения, какой uP присутствует. Или, проще говоря, текущим значением является ниос или нет.

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Поскольку оба процессора имеют разную архитектуру, вы не сможете проверить, какой процессор работает во время выполнения.Вы можете сделать это во время компиляции, так как у вас будет определенный флаг определения, установленный вашей цепочкой инструментов (см. 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.

0 голосов
/ 18 марта 2019

Предположительно, он будет скомпилирован с другим компилятором? Эти компиляторы будут (очень вероятно) иметь своего рода #define, который вы можете использовать для создания различного кода для каждого из них.

...