Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
All support for Intel NUC 7 - 13 systems has transitioned to ASUS. Read latest update.
12581 Discussions

Build Error using template: /HAL/src/alt_main.c:154: undefined reference to `main'

Honored Contributor II



I'm attempting to use the Nios processor for the first time since i've upgraded to Quartus version 12.1 on a Windows 7 machine. The Nios that comes with this version of Quartus is..Version: Indigo Service Release 2. Build id: 20120216-1857 


The error i get is: 

**** Build of configuration Nios II for project Hello_Led_12_04_13 **** ...... ..... (Plenty of build code) ..... .... Info: Linking Hello_Led_12_04_13.elf nios2-elf-g++ -T'../Hello_Led_12_04_13_bsp//linker.x' -msys-crt0='../Hello_Led_12_04_13_bsp//obj/HAL/src/crt0.o' -msys-lib=hal_bsp -L../Hello_Led_12_04_13_bsp/ -Wl, -O0 -g -Wall -EL -mno-hw-div -mhw-mul -mno-hw-mulx -o Hello_Led_12_04_13.elf -lm ../Hello_Led_12_04_13_bsp/\libhal_bsp.a(alt_main.o): In function `alt_main': C:\altera\12.1\WorkingArea\BiggerNios\software\Hello_Led_12_04_13_bsp/HAL/src/alt_main.c:154: undefined reference to `main' collect2: ld returned 1 exit status make: *** Error 1 **** Build Finished ****  




The code i am using is an unchanged stock template that comes with the installation. Which is the stock Hello LED template. 


/************************************************************************** * Copyright (c) 2004 Altera Corporation, San Jose, California, USA. * * All rights reserved. All use of this software and documentation is * * subject to the License Agreement located at the end of this file below.* *************************************************************************/ /****************************************************************************** * DANGER ** WARNING ** Please read before proceeding! ** WARNING ** DANGER * ****************************************************************************** * * This program is an example of a "free-standing" C application. If you * modify this example and try to call C library functions such as printf, they * will NOT work unless you explicitly initialize the system, such as in the * hello_alt_main software template. Please see below for details. * * Description * ************* * A very minimal program that simply shifts an LED back and forth. * * Requirements * ************** * According to the ANSI C standard, freestanding programs "own" the hardware, * and cannot rely on system-services or device-drivers being initialized prior * to program-start. A freestanding program is responsible for initializing all * hardware devices, device-drivers, and system-services. Many embedded * programs are, by nature, freestanding. The author relinquishes any illusion * of running their program on a workstation. * * This example is a freestanding program because it's entry point is the * function: * * void alt_main (void) * * As opposed to "main()" as a "hosted" application would (see the * "hello_world" example). * * Upon entry to alt_main(): * - The CPU's caches (if any) have been initialized. * - The stack-pointer has been set. * - That's all. The rest is up to you. * * If you modify this example and try to call C library functions such as * printf, they will NOT work unless you explicitly initialize the system. * If you wish to use C library calls, it is strongly suggested you start * with the hosted hello_world template which uses main() as it's entry * point. * * On the other hand, if you want to write a program that gets-in even * earlier, you will need to provide your own assembly-language machine-setup * code by defining the symbol "_start". Any definition of _start in your * directory will override the library definition. You can find source code * for the Nios II library _start here: * * <NiosII-Kit-Install-Dir>/components/altera_nios2/HAL/src/crt0.S * * This software example requires a system with a PIO peripheral named * "led_pio". The software example will run on the following hardware * examples: * * Nios Development Board, Stratix II Edition: * - Standard * - Small * - Full Featured * * DSP Development Board, Stratix II Edition: * - Standard * - Small * - Full Featured * * Nios Development Board, Stratix Edition: * - Standard * - Small * - Full Featured * * Nios Development Board, Stratix Professional Edition: * - Standard * - Small * - Full Featured * * Nios Development Board, Cyclone Edition: * - Standard * - Small * - Low Cost * - Full Featured * * Peripherals Exercised by SW * ***************************** * The hello_led.c program simply shifts an 8-bit variable back and forth, * writing the variable's value to the system's LED PIO peripheral on every * iteration. * * Software Files * **************** * hello_led.c - Main C file that contains the simple led manipulation routine. * */ # include "system.h"# include "altera_avalon_pio_regs.h"# include "alt_types.h" /* * This is a freestanding application, so we want to use alt_main * as the entry point. However, if the debugger is run on this * application, it will try to set a breakpoint at main, which * the application does not contain. The below line creates an * alias so the debugger is able to set a breakpoint at main, * yet the application retains alt_main as it's entry point. */ int main (void) __attribute__ ((weak, alias ("alt_main"))); /* * Use alt_main as entry point for this free-standing application */ int alt_main (void) { alt_u8 led = 0x2; alt_u8 dir = 0; volatile int i; /* * Infinitely shift a variable with one bit set back and forth, and write * it to the LED PIO. Software loop provides delay element. */ while (1) { if (led & 0x81) { dir = (dir ^ 0x1); } if (dir) { led = led >> 1; } else { led = led << 1; } IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led); /* * The delay element in this design has been written as a while loop * to avoid confusing the software debugger. A tight, one line software * delay loop such as: * for(i=0; i<200000; i++); * can cause problems when it is stepped through using a software debugger. * The while loop below produces the same behavior as the for loop shown * above, but without causing potential debugger problems. */ i = 0; while (i<200000) i++; } return 0; } /****************************************************************************** * * * License Agreement * * * * Copyright (c) 2004 Altera Corporation, San Jose, California, USA. * * All rights reserved. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the "Software"), * * to deal in the Software without restriction, including without limitation * * the rights to use, copy, modify, merge, publish, distribute, sublicense, * * and/or sell copies of the Software, and to permit persons to whom the * * Software is furnished to do so, subject to the following conditions: * * * * The above copyright notice and this permission notice shall be included in * * all copies or substantial portions of the Software. * * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * * DEALINGS IN THE SOFTWARE. * * * * This agreement shall be governed in all respects by the laws of the State * * of California and by the laws of the United States of America. * * Altera does not recommend, suggest or require that this reference design * * file be used in conjunction or combination with any other product. * ******************************************************************************/  


This is my SOPC build. Which should have the PIO periipheral but for this error, shouldn't be an issue. (




This shows that my SOPC, builds successfully. (




And this the directory of the Nios project. (







So the question is, why do i get the error that i do? And how do i fix it? 






Any help is much appreciated.
0 Kudos
0 Replies