NXT Improved Firmware can be built several ways:
- using GCC, the free software tool chain, preferred way to build NXT Improved Firmware,
- , the proprietary tool chain, used at LEGO® to build the original firmware.
GCC is currently better supported by NXT Improved Firmware as build is easier and can be automated. The downside is that firmwares compiled with GCC are currently larger, which results to less memory usable for user data. This is mainly due to newlib which compiles to a large runtime.
Firmwares compiled with IAR should better match original firmwares, but this is proprietary software and it does only run on Microsoft Windows. You will also have to check the user flash size by hand and edit sources to match firmware size.