anonymous wrote on Thursday, May 24, 2012:
Possibly slightly off the range, if so apologies. I am trying to build the FreeRTOS/lwip HTTP server demo for the NXP 1769 board using the Mentor arm-none-eabi tools (i.e. raw metal).
The problem is down to the choice of C runtimes. Do I use the Mentor thumb libraries? And how do I resolve references to perfectly standard functions like memcpy, strlen,strcmp and friends? A (verbose) example of the linker output is shown below.
Many thanks,
Jerry
arm-none-eabi-ld -nostdlib -Map="router_booter.map" -Trouter_booter_Debug.ld -or:/data/anemos/main/router_booter/obj/router_booter.axf -L R:/apps/Mentor/lib/gcc/arm-none-eabi/4.6.1/thumb r:/data/anemos/main/router_booter/obj/core_cm3.o r:/data/anemos/main/router_booter/obj/system_lpc17xx.o r:/data/anemos/main/router_booter/obj/cr_startup_lpc176x.o r:/data/anemos/main/router_booter/obj/main.o r:/data/anemos/main/router_booter/obj/printf-stdarg.o r:/data/anemos/main/router_booter/obj/gpio-output-and-software-timers.o r:/data/anemos/main/router_booter/obj/spi-interface-to-sd-card.o r:/data/anemos/main/router_booter/obj/ff.o r:/data/anemos/main/router_booter/obj/mmc.o r:/data/anemos/main/router_booter/obj/syscall.o r:/data/anemos/main/router_booter/obj/croutine.o r:/data/anemos/main/router_booter/obj/list.o r:/data/anemos/main/router_booter/obj/queue.o r:/data/anemos/main/router_booter/obj/tasks.o r:/data/anemos/main/router_booter/obj/timers.o r:/data/anemos/main/router_booter/obj/freertos_cli.o r:/data/anemos/main/router_booter/obj/freertos_driverinterface.o r:/data/anemos/main/router_booter/obj/freertos_ioutils.o r:/data/anemos/main/router_booter/obj/ioutils_charqueuetxandrx.o r:/data/anemos/main/router_booter/obj/ioutils_circularbufferrx.o r:/data/anemos/main/router_booter/obj/ioutils_zerocopytx.o r:/data/anemos/main/router_booter/obj/freertos_lpc17xx_driverinterface.o r:/data/anemos/main/router_booter/obj/freertos_lpc17xx_i2c.o r:/data/anemos/main/router_booter/obj/freertos_lpc17xx_ssp.o r:/data/anemos/main/router_booter/obj/freertos_lpc17xx_uart.o r:/data/anemos/main/router_booter/obj/port.o r:/data/anemos/main/router_booter/obj/heap_2.o r:/data/anemos/main/router_booter/obj/api_lib.o r:/data/anemos/main/router_booter/obj/api_msg.o r:/data/anemos/main/router_booter/obj/err.o r:/data/anemos/main/router_booter/obj/netbuf.o r:/data/anemos/main/router_booter/obj/netdb.o r:/data/anemos/main/router_booter/obj/netifapi.o r:/data/anemos/main/router_booter/obj/sockets.o r:/data/anemos/main/router_booter/obj/tcpip.o r:/data/anemos/main/router_booter/obj/def.o r:/data/anemos/main/router_booter/obj/dhcp.o r:/data/anemos/main/router_booter/obj/dns.o r:/data/anemos/main/router_booter/obj/init.o r:/data/anemos/main/router_booter/obj/lwip_timers.o r:/data/anemos/main/router_booter/obj/mem.o r:/data/anemos/main/router_booter/obj/memp.o r:/data/anemos/main/router_booter/obj/netif.o r:/data/anemos/main/router_booter/obj/pbuf.o r:/data/anemos/main/router_booter/obj/raw.o r:/data/anemos/main/router_booter/obj/stats.o r:/data/anemos/main/router_booter/obj/sys.o r:/data/anemos/main/router_booter/obj/tcp.o r:/data/anemos/main/router_booter/obj/tcp_in.o r:/data/anemos/main/router_booter/obj/tcp_out.o r:/data/anemos/main/router_booter/obj/udp.o r:/data/anemos/main/router_booter/obj/autoip.o r:/data/anemos/main/router_booter/obj/icmp.o r:/data/anemos/main/router_booter/obj/igmp.o r:/data/anemos/main/router_booter/obj/inet.o r:/data/anemos/main/router_booter/obj/inet_chksum.o r:/data/anemos/main/router_booter/obj/ip.o r:/data/anemos/main/router_booter/obj/ip_addr.o r:/data/anemos/main/router_booter/obj/ip_frag.o r:/data/anemos/main/router_booter/obj/lwip_apps.o r:/data/anemos/main/router_booter/obj/basicsocketcommandserver.o r:/data/anemos/main/router_booter/obj/fsdata.o r:/data/anemos/main/router_booter/obj/httpd.o r:/data/anemos/main/router_booter/obj/etharp.o r:/data/anemos/main/router_booter/obj/ethernetif.o r:/data/anemos/main/router_booter/obj/sys_arch.o r:/data/anemos/main/router_booter/obj/debug_frmwrk.o r:/data/anemos/main/router_booter/obj/lpc17xx_adc.o r:/data/anemos/main/router_booter/obj/lpc17xx_can.o r:/data/anemos/main/router_booter/obj/lpc17xx_clkpwr.o r:/data/anemos/main/router_booter/obj/lpc17xx_dac.o r:/data/anemos/main/router_booter/obj/lpc17xx_emac.o r:/data/anemos/main/router_booter/obj/lpc17xx_exti.o r:/data/anemos/main/router_booter/obj/lpc17xx_gpdma.o r:/data/anemos/main/router_booter/obj/lpc17xx_gpio.o r:/data/anemos/main/router_booter/obj/lpc17xx_i2c.o r:/data/anemos/main/router_booter/obj/lpc17xx_i2s.o r:/data/anemos/main/router_booter/obj/lpc17xx_libcfg_default.o r:/data/anemos/main/router_booter/obj/lpc17xx_mcpwm.o r:/data/anemos/main/router_booter/obj/lpc17xx_nvic.o r:/data/anemos/main/router_booter/obj/lpc17xx_pinsel.o r:/data/anemos/main/router_booter/obj/lpc17xx_pwm.o r:/data/anemos/main/router_booter/obj/lpc17xx_qei.o r:/data/anemos/main/router_booter/obj/lpc17xx_rit.o r:/data/anemos/main/router_booter/obj/lpc17xx_rtc.o r:/data/anemos/main/router_booter/obj/lpc17xx_spi.o r:/data/anemos/main/router_booter/obj/lpc17xx_ssp.o r:/data/anemos/main/router_booter/obj/lpc17xx_systick.o r:/data/anemos/main/router_booter/obj/lpc17xx_timer.o r:/data/anemos/main/router_booter/obj/lpc17xx_uart.o r:/data/anemos/main/router_booter/obj/lpc17xx_wdt.o
arm-none-eabi-ld: r:/data/anemos/main/router_booter/obj/router_booter.axf section `.bss' will not fit in region `RamLoc32'
arm-none-eabi-ld: region `RamLoc32' overflowed by 6312 bytes
r:/data/anemos/main/router_booter/obj/system_lpc17xx.o: In function `SystemCoreClockUpdate':
system_lpc17xx.c:(.text.SystemCoreClockUpdate+0xb4): undefined reference to `__aeabi_uldivmod'
system_lpc17xx.c:(.text.SystemCoreClockUpdate+0xd8): undefined reference to `__aeabi_uldivmod'
system_lpc17xx.c:(.text.SystemCoreClockUpdate+0x154): undefined reference to `__aeabi_uldivmod'
system_lpc17xx.c:(.text.SystemCoreClockUpdate+0x178): undefined reference to `__aeabi_uldivmod'
system_lpc17xx.c:(.text.SystemCoreClockUpdate+0x1ee): undefined reference to `__aeabi_uldivmod'
r:/data/anemos/main/router_booter/obj/system_lpc17xx.o:system_lpc17xx.c:(.text.SystemCoreClockUpdate+0x212): more undefined references to `__aeabi_uldivmod' follow
r:/data/anemos/main/router_booter/obj/main.o: In function `prvTaskStatsCommand':
main.c:(.text.prvTaskStatsCommand+0x1a): undefined reference to `strcpy'
main.c:(.text.prvTaskStatsCommand+0x20): undefined reference to `strlen'
r:/data/anemos/main/router_booter/obj/main.o: In function `prvRunTimeStatsCommand':
main.c:(.text.prvRunTimeStatsCommand+0x1a): undefined reference to `strcpy'
main.c:(.text.prvRunTimeStatsCommand+0x20): undefined reference to `strlen'
r:/data/anemos/main/router_booter/obj/main.o: In function `prvManuallyPlaceLargeDataInAHBRAM':
main.c:(.text.prvManuallyPlaceLargeDataInAHBRAM+0x7c): undefined reference to `memset'
r:/data/anemos/main/router_booter/obj/spi-interface-to-sd-card.o: In function `prvWriteFilesToDisk':
spi-interface-to-sd-card.c:(.text.prvWriteFilesToDisk+0x8c): undefined reference to `memset'
r:/data/anemos/main/router_booter/obj/spi-interface-to-sd-card.o: In function `prvReadBackCreatedFiles':
spi-interface-to-sd-card.c:(.text.prvReadBackCreatedFiles+0x94): undefined reference to `memset'
r:/data/anemos/main/router_booter/obj/queue.o: In function `prvCopyDataToQueue':
queue.c:(.text.prvCopyDataToQueue+0x44): undefined reference to `memcpy'
queue.c:(.text.prvCopyDataToQueue+0x7a): undefined reference to `memcpy'
r:/data/anemos/main/router_booter/obj/queue.o: In function `prvCopyDataFromQueue':
queue.c:(.text.prvCopyDataFromQueue+0x42): undefined reference to `memcpy'