hello_world_small.c
01: /* 02: * "Small Hello World" example. 03: * 04: * This example prints 'Hello from Nios II' to the STDOUT stream. It runs on 05: * the Nios II 'standard', 'full_featured', 'fast', and 'low_cost' example 06: * designs. It requires a STDOUT device in your system's hardware. 07: * 08: * The purpose of this example is to demonstrate the smallest possible Hello 09: * World application, using the Nios II HAL library. The memory footprint 10: * of this hosted application is ~332 bytes by default using the standard 11: * reference design. For a more fully featured Hello World application 12: * example, see the example titled "Hello World". 13: * 14: * The memory footprint of this example has been reduced by making the 15: * following changes to the normal "Hello World" example. 16: * Check in the Nios II Software Developers Manual for a more complete 17: * description. 18: * 19: * In the SW Application project (small_hello_world): 20: * 21: * - In the C/C++ Build page 22: * 23: * - Set the Optimization Level to -Os 24: * 25: * In System Library project (small_hello_world_syslib): 26: * - In the C/C++ Build page 27: * 28: * - Set the Optimization Level to -Os 29: * 30: * - Define the preprocessor option ALT_NO_INSTRUCTION_EMULATION 31: * This removes software exception handling, which means that you cannot 32: * run code compiled for Nios II cpu with a hardware multiplier on a core 33: * without a the multiply unit. Check the Nios II Software Developers 34: * Manual for more details. 35: * 36: * - In the System Library page: 37: * - Set Periodic system timer and Timestamp timer to none 38: * This prevents the automatic inclusion of the timer driver. 39: * 40: * - Set Max file descriptors to 4 41: * This reduces the size of the file handle pool. 42: * 43: * - Check Main function does not exit 44: * - Uncheck Clean exit (flush buffers) 45: * This removes the unneeded call to exit when main returns, since it 46: * won't. 47: * 48: * - Check Don't use C++ 49: * This builds without the C++ support code. 50: * 51: * - Check Small C library 52: * This uses a reduced functionality C library, which lacks 53: * support for buffering, file IO, floating point and getch(), etc. 54: * Check the Nios II Software Developers Manual for a complete list. 55: * 56: * - Check Reduced device drivers 57: * This uses reduced functionality drivers if they're available. For the 58: * standard design this means you get polled UART and JTAG UART drivers, 59: * no support for the LCD driver and you lose the ability to program 60: * CFI compliant flash devices. 61: * 62: * - Check Access device drivers directly 63: * This bypasses the device file system to access device drivers directly. 64: * This eliminates the space required for the device file system services. 65: * It also provides a HAL version of libc services that access the drivers 66: * directly, further reducing space. Only a limited number of libc 67: * functions are available in this configuration. 68: * 69: * - Use ALT versions of stdio routines: 70: * 71: * Function Description 72: * =============== ===================================== 73: * alt_printf Only supports %s, %x, and %c ( < 1 Kbyte) 74: * alt_putstr Smaller overhead than puts with direct drivers 75: * Note this function doesn't add a newline. 76: * alt_putchar Smaller overhead than putchar with direct drivers 77: * alt_getchar Smaller overhead than getchar with direct drivers 78: * 79: */ 80: 81: #include "sys/alt_stdio.h" 82: 83: int main() 84: { 85: alt_putstr("Hello from Nios II!\n"); 86: 87: /* Event loop never exits. */ 88: while (1); 89: 90: return 0; 91: }
Maintained by John Loomis, updated Tue Sep 02 21:04:15 2008