diff options
author | Josh Blum <josh@joshknows.com> | 2010-02-11 20:24:01 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-02-11 20:24:01 -0800 |
commit | 350f5c5decca20a54132867283448fd32226bbc2 (patch) | |
tree | 261ec83435d3625ea307e21813ea814113278b79 /firmware | |
parent | 6c7d9f1f7573fc73522499573560bf1aef64f414 (diff) | |
download | uhd-350f5c5decca20a54132867283448fd32226bbc2.tar.gz uhd-350f5c5decca20a54132867283448fd32226bbc2.tar.bz2 uhd-350f5c5decca20a54132867283448fd32226bbc2.zip |
Getting hello packets from the usrp2 with ip and mac addrs.
Cleaned up the mb build system a bit.
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/microblaze/Makefile.common | 70 | ||||
-rw-r--r-- | firmware/microblaze/apps/Makefile.am | 5 | ||||
-rw-r--r-- | firmware/microblaze/apps/txrx.c | 24 | ||||
-rw-r--r-- | firmware/microblaze/configure.ac | 7 | ||||
-rw-r--r-- | firmware/microblaze/lib/Makefile.am | 5 | ||||
-rw-r--r-- | firmware/microblaze/lib/microblaze.ld | 163 |
6 files changed, 74 insertions, 200 deletions
diff --git a/firmware/microblaze/Makefile.common b/firmware/microblaze/Makefile.common index cb09f7f9d..3d0f540d8 100644 --- a/firmware/microblaze/Makefile.common +++ b/firmware/microblaze/Makefile.common @@ -17,6 +17,9 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # +######################################################################## +# lwIP header include dirs +######################################################################## LWIPDIR = $(top_srcdir)/lwip/lwip-1.3.1 LWIP_INCLUDES = \ @@ -25,50 +28,55 @@ LWIP_INCLUDES = \ -I$(LWIPDIR)/src/include \ -I$(LWIPDIR)/src/include/ipv4 -STD_INCLUDES = \ +######################################################################## +# local include dirs +######################################################################## +LOCAL_INCLUDES = \ -I$(top_srcdir)/include \ - -I$(top_srcdir)/lib \ - -I$(top_srcdir)/../../lib/usrp/mboard \ - $(LWIP_INCLUDES) + -I$(top_srcdir)/lib -#HAL_IO = -DHAL_IO_USES_DBOARD_PINS -HAL_IO = -DHAL_IO_USES_UART - -AM_CPPFLAGS = $(HAL_IO) $(STD_INCLUDES) +######################################################################## +# misc flags for the mb-gcc compiler +######################################################################## +MBGCC_CFLAGS = \ + --std=gnu99 -Wall -Werror-implicit-function-declaration \ + -mxl-soft-div -msoft-float -mxl-soft-mul -mxl-barrel-shift -STD_CFLAGS = --std=gnu99 -Wall -Werror-implicit-function-declaration -mxl-soft-div -msoft-float +MBGCC_LFLAGS = -Wl,-defsym -Wl,_STACK_SIZE=3072 -MB_CFLAGS = -mxl-soft-mul -mxl-barrel-shift - -AM_CFLAGS = $(STD_CFLAGS) $(MB_CFLAGS) -#AM_CFLAGS = $(STD_CFLAGS) -mxl-soft-mul -mxl-barrel-shift -mxl-gp-opt -G 16384 +######################################################################## +# define for the hal io (FIXME move?) +######################################################################## +#HAL_IO = -DHAL_IO_USES_DBOARD_PINS +HAL_IO = -DHAL_IO_USES_UART +######################################################################## +# set the cflags and ldflags +######################################################################## +AM_CFLAGS = $(MBGCC_CFLAGS) $(LOCAL_INCLUDES) $(LWIP_INCLUDES) $(HAL_IO) -#LINKER_SCRIPT = $(top_srcdir)/lib/microblaze.ld -#AM_LDFLAGS = -Wl,-T,$(LINKER_SCRIPT) -Wl,-defsym -Wl,_STACK_SIZE=1024 -#AM_LDFLAGS = -Wl,-T,$(LINKER_SCRIPT) -Wl,-Map -Wl,$@.map -#AM_LDFLAGS = -Wl,-T,$(LINKER_SCRIPT) -AM_LDFLAGS = -Wl,-Map -Wl,$(@:.elf=.map) -Wl,-defsym -Wl,_STACK_SIZE=3072 -#AM_LDFLAGS = -Wl,-defsym -Wl,_STACK_SIZE=2048 +AM_LDFLAGS = $(MBGCC_LFLAGS) +######################################################################## +# Common stuff for building top level microblaze images +######################################################################## +AM_LDFLAGS += -Wl,-Map -Wl,$(@:.elf=.map) %.bin : %.elf - mb-objcopy -O binary $< $@ + $(MB_OBJCOPY) -O binary $< $@ %.dump : %.elf - mb-objdump -DSC $< > $@ + $(MB_OBJDUMP) -DSC $< > $@ %.rom : %.bin - hexdump -v -e'1/1 "%.2X\n"' $< > $@ - - -#.PRECIOUS : %.bin - + $(HEXDUMP) -v -e'1/1 "%.2X\n"' $< > $@ -BINS = $(noinst_PROGRAMS:.elf=.bin) -ROMS = $(noinst_PROGRAMS:.elf=.rom) -DUMPS = $(noinst_PROGRAMS:.elf=.dump) +_generated_from_elf = \ + $(noinst_PROGRAMS:.elf=.map) \ + $(noinst_PROGRAMS:.elf=.bin) \ + $(noinst_PROGRAMS:.elf=.dump) \ + $(noinst_PROGRAMS:.elf=.rom) -noinst_DATA = $(BINS) $(ROMS) $(DUMPS) +noinst_DATA = $(_generated_from_elf) -CLEANFILES = $(ROMS) $(DUMPS) $(BINS) +MOSTLYCLEANFILES = $(_generated_from_elf) diff --git a/firmware/microblaze/apps/Makefile.am b/firmware/microblaze/apps/Makefile.am index 8e4551083..eb6ee6534 100644 --- a/firmware/microblaze/apps/Makefile.am +++ b/firmware/microblaze/apps/Makefile.am @@ -19,7 +19,9 @@ include $(top_srcdir)/Makefile.common -LDADD = ../lib/libu2fw.a +LDADD = $(top_srcdir)/lib/libu2fw.a + +AM_CFLAGS += -I$(top_srcdir)/../../lib/usrp/mboard noinst_PROGRAMS = txrx.elf @@ -78,4 +80,3 @@ txrx_elf_SOURCES = txrx.c # mimo_app_common_v2.h # -MOSTLYCLEANFILES = *.map diff --git a/firmware/microblaze/apps/txrx.c b/firmware/microblaze/apps/txrx.c index 23a88c246..1c43a2ca1 100644 --- a/firmware/microblaze/apps/txrx.c +++ b/firmware/microblaze/apps/txrx.c @@ -160,7 +160,29 @@ void handle_udp_ctrl_packet( unsigned char *payload, int payload_len ){ printf("Got ctrl packet #words: %d\n", (int)payload_len); - send_udp_pkt(USRP2_UDP_CTRL_PORT, src, payload, payload_len); + if (payload_len < sizeof(usrp2_ctrl_data_t)){ + //TODO send err packet + return; + } + //setup the input and output data + usrp2_ctrl_data_t *ctrl_data_in = (usrp2_ctrl_data_t *)payload; + usrp2_ctrl_data_t ctrl_data_out = { + .id=USRP2_CTRL_ID_NONE, + .seq=ctrl_data_in->seq + }; + //handle the data based on the id + switch(ctrl_data_in->id){ + case USRP2_CTRL_ID_HELLO: + ctrl_data_out.id = ctrl_data_in->id; + //grab the addrs + struct ip_addr ip_addr = get_my_ip_addr(); + eth_mac_addr_t mac_addr = get_my_eth_mac_addr(); + //copy them into the out data + memcpy(&ctrl_data_out.data.discovery_addrs.ip_addr, &ip_addr, sizeof(ip_addr)); + memcpy(&ctrl_data_out.data.discovery_addrs.mac_addr, &mac_addr, sizeof(mac_addr)); + break; + } + send_udp_pkt(USRP2_UDP_CTRL_PORT, src, &ctrl_data_out, sizeof(ctrl_data_out)); } /* diff --git a/firmware/microblaze/configure.ac b/firmware/microblaze/configure.ac index cbb9e1a93..46968b7fb 100644 --- a/firmware/microblaze/configure.ac +++ b/firmware/microblaze/configure.ac @@ -35,6 +35,13 @@ AC_PROG_CC([mb-gcc]) LT_INIT ################################################## +## Setup Tools +################################################## +AC_PATH_PROG([MB_OBJCOPY], [mb-objcopy]) +AC_PATH_PROG([MB_OBJDUMP], [mb-objdump]) +AC_PATH_PROG([HEXDUMP], [hexdump]) + +################################################## ## Create Files ################################################## AC_CONFIG_FILES([ \ diff --git a/firmware/microblaze/lib/Makefile.am b/firmware/microblaze/lib/Makefile.am index 02e9dda73..4ca05739c 100644 --- a/firmware/microblaze/lib/Makefile.am +++ b/firmware/microblaze/lib/Makefile.am @@ -1,4 +1,6 @@ # +# Copyright 2010 Ettus Research LLC +# # Copyright 2007 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify @@ -93,6 +95,3 @@ noinst_HEADERS = \ arp_cache.h \ banal.h \ ethertype.h - -EXTRA_DIST = \ - microblaze.ld diff --git a/firmware/microblaze/lib/microblaze.ld b/firmware/microblaze/lib/microblaze.ld deleted file mode 100644 index ef816cf2e..000000000 --- a/firmware/microblaze/lib/microblaze.ld +++ /dev/null @@ -1,163 +0,0 @@ -OUTPUT_FORMAT("elf32-microblaze", "", "") -/* SEARCH_DIR(/home/jwilliams/tmp/microblaze-toolchain-sources/release/lin/microblaze//lib);*/ - -ENTRY(_start) - -MEMORY { - flatmem : ORIGIN = 0x0, LENGTH = 0x00008000 /* 32KB */ -} - -SECTIONS -{ - _TEXT_START_ADDR = DEFINED(_TEXT_START_ADDR) ? _TEXT_START_ADDR : 0x50; - .vectors.reset 0x0 : { *(.vectors.reset) } > flatmem - .vectors.sw_exception 0x8 : { *(.vectors.sw_exception) } > flatmem - .vectors.interrupt 0x10 : { *(.vectors.interrupt) } > flatmem - .vectors.hw_exception 0x20 : { *(.vectors.hw_exception) } >flatmem - . = _TEXT_START_ADDR; - _ftext = .; - .text : { - *(.text) - *(.text.*) - *(.gnu.linkonce.t.*) - } > flatmem - _etext = .; - .init : { KEEP (*(.init)) } > flatmem =0 - .fini : { KEEP (*(.fini)) } > flatmem =0 - PROVIDE (__CTOR_LIST__ = .); - PROVIDE (___CTOR_LIST__ = .); - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } > flatmem - PROVIDE (__CTOR_END__ = .); - PROVIDE (___CTOR_END__ = .); - PROVIDE (__DTOR_LIST__ = .); - PROVIDE (___DTOR_LIST__ = .); - .dtors : - { - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } > flatmem - PROVIDE (__DTOR_END__ = .); - PROVIDE (___DTOR_END__ = .); - . = ALIGN(4); - _frodata = . ; - .rodata : { - *(.rodata) - *(.gnu.linkonce.r.*) - CONSTRUCTORS; /* Is this needed? */ - } > flatmem - _erodata = .; - /* Alignments by 8 to ensure that _SDA2_BASE_ on a word boundary */ - /* Note that .sdata2 and .sbss2 must be contiguous */ - . = ALIGN(8); - _ssrw = .; - .sdata2 : { - *(.sdata2) - *(.gnu.linkonce.s2.*) - } > flatmem - . = ALIGN(4); - .sbss2 : { - PROVIDE (__sbss2_start = .); - *(.sbss2) - *(.gnu.linkonce.sb2.*) - PROVIDE (__sbss2_end = .); - } > flatmem - . = ALIGN(8); - _essrw = .; - _ssrw_size = _essrw - _ssrw; - PROVIDE (_SDA2_BASE_ = _ssrw + (_ssrw_size / 2 )); - . = ALIGN(4); - _fdata = .; - .data : { - *(.data) - *(.gnu.linkonce.d.*) - CONSTRUCTORS; /* Is this needed? */ - } > flatmem - _edata = . ; - /* Added to handle pic code */ - .got : { - *(.got) - } > flatmem - .got1 : { - *(.got1) - } > flatmem - .got2 : { - *(.got2) - } > flatmem - /* Added by Sathya to handle C++ exceptions */ - .eh_frame : { - *(.eh_frame) - } > flatmem - .jcr : { - *(.jcr) - } > flatmem - .gcc_except_table : { - *(.gcc_except_table) - } > flatmem - /* Alignments by 8 to ensure that _SDA_BASE_ on a word boundary */ - /* Note that .sdata and .sbss must be contiguous */ - . = ALIGN(8); - _ssro = .; - .sdata : { - *(.sdata) - *(.gnu.linkonce.s.*) - } > flatmem - . = ALIGN(4); - .sbss : { - PROVIDE (__sbss_start = .); - *(.sbss) - *(.gnu.linkonce.sb.*) - PROVIDE (__sbss_end = .); - } > flatmem - . = ALIGN(8); - _essro = .; - _ssro_size = _essro - _ssro; - PROVIDE (_SDA_BASE_ = _ssro + (_ssro_size / 2 )); - . = ALIGN(4); - _fbss = .; - .bss : { - PROVIDE (__bss_start = .); - *(.bss) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - PROVIDE (__bss_end = .); - _heap = .; - _HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x0; - _STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x800; - . += _HEAP_SIZE; - _heap_end = .; - . += _STACK_SIZE; - . = ALIGN(8); - _stack = .; - _end = .; - } > flatmem - .tdata : { - *(.tdata) - *(.gnu.linkonce.td.*) - } > flatmem - .tbss : { - *(.tbss) - *(.gnu.linkonce.tb.*) - } > flatmem -} |