По поводу __no_init смотреть файл с названием типа CompilerReference.pdf или подобным. Смысл прост - статические переменные (те, которые не auto) инициализируются нулями, если не инициализированы явно. __no_init это отменяет.
Остальное - похоже на попытку сделать исходник, который может компилироваться как IAR-ом, так и GCC. __attribute__ это для GCC, при компиляции IAR-ом эта часть с помощью препроцессора заменяется на пустое место, а IAR_SECTION(section) превращается в @ section - это указание в какой секции разместить переменную.
В результате компилятору достаётся строка: __no_init unsigned char usbRxBuf[2][USB_BUFSIZE] @ USB_BUFFER_SECTION;
При компиляции GCC - наоборот убирают IAR_SECTION(...), оставляют __attribute__(...).
--------------------
Russia est omnis divisa in partes octo.
|