diff options
author | Josh Blum <josh@joshknows.com> | 2010-11-29 11:37:18 -0500 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-12-12 18:23:46 -0800 |
commit | c08da91e832637e3197758f81128682f6fccf1bd (patch) | |
tree | a64580fa299b435db389741c8a31f918300c6f81 | |
parent | 096405b9291d1d3b3ac37d9768232cca43a37db6 (diff) | |
download | uhd-c08da91e832637e3197758f81128682f6fccf1bd.tar.gz uhd-c08da91e832637e3197758f81128682f6fccf1bd.tar.bz2 uhd-c08da91e832637e3197758f81128682f6fccf1bd.zip |
usrp-n: created cmake/zpu build for firmware
-rw-r--r-- | firmware/microblaze/CMakeLists.txt | 120 | ||||
-rw-r--r-- | firmware/microblaze/lib/CMakeLists.txt | 47 | ||||
-rw-r--r-- | firmware/microblaze/lib/hal_io.h | 28 | ||||
-rw-r--r-- | firmware/microblaze/lib/hal_uart.c | 2 | ||||
-rw-r--r-- | firmware/microblaze/lib/mdelay.c | 3 | ||||
-rw-r--r-- | firmware/microblaze/usrp2/CMakeLists.txt | 35 | ||||
-rw-r--r-- | firmware/microblaze/usrp2p/CMakeLists.txt | 48 |
7 files changed, 267 insertions, 16 deletions
diff --git a/firmware/microblaze/CMakeLists.txt b/firmware/microblaze/CMakeLists.txt new file mode 100644 index 000000000..dd56f3579 --- /dev/null +++ b/firmware/microblaze/CMakeLists.txt @@ -0,0 +1,120 @@ +# +# Copyright 2010 Ettus Research LLC +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +######################################################################## +# setup project and compiler +######################################################################## +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +SET(CMAKE_C_COMPILER zpu-elf-gcc) +SET(CMAKE_C_COMPILER_WORKS TRUE) +SET(CMAKE_C_COMPILER_FORCED TRUE) +PROJECT(USRP_NXXX_FW C) + +######################################################################## +# lwIP header include dirs +######################################################################## +SET(LWIPDIR ${CMAKE_SOURCE_DIR}/lwip/lwip-1.3.1) + +INCLUDE_DIRECTORIES( + ${CMAKE_SOURCE_DIR}/lwip + ${CMAKE_SOURCE_DIR}/lwip_port + ${LWIPDIR}/src/include + ${LWIPDIR}/src/include/ipv4 +) + +######################################################################## +# misc flags for the gcc compiler +######################################################################## +SET(CMAKE_C_FLAGS -abel) #always needed compile time and link time +#ADD_DEFINITIONS(-mxl-soft-div -msoft-float -mxl-soft-mul -mxl-barrel-shift) +ADD_DEFINITIONS(-Os --std=gnu99 -Wall -Werror-implicit-function-declaration) + +MACRO(ADD_LINKER_FLAGS flags) + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${flags}") +ENDMACRO(ADD_LINKER_FLAGS) + +ADD_LINKER_FLAGS("-Wl,-defsym -Wl,_STACK_SIZE=3072") +ADD_LINKER_FLAGS("-Wl,--relax -Wl,--gc-sections") + +######################################################################## +# define for the hal io (FIXME move?) +######################################################################## +#ADD_DEFINITIONS(-DHAL_IO_USES_DBOARD_PINS) +ADD_DEFINITIONS(-DHAL_IO_USES_UART) + +######################################################################## +# common cflags and ldflags +######################################################################## +INCLUDE_DIRECTORIES( + ${CMAKE_SOURCE_DIR}/../../host/lib/usrp + ${CMAKE_SOURCE_DIR}/lib +) + +######################################################################## +# setup programs for output files +######################################################################## +FIND_PROGRAM(LINKER zpu-elf-ld) +FIND_PROGRAM(OBJCOPY zpu-elf-objcopy) +FIND_PROGRAM(OBJDUMP zpu-elf-objdump) +FIND_PROGRAM(HEXDUMP hexdump) + +######################################################################## +# helper functions to build output formats +######################################################################## +MACRO(GEN_OUTPUTS target) + GET_FILENAME_COMPONENT(name ${target} NAME_WE) + #command to create a map from elf + ADD_CUSTOM_COMMAND( + OUTPUT ${name}.map DEPENDS ${target} + COMMAND ${LINKER} + ARGS -Map ${name}.map ${target} + ) + #command to create a bin from elf + ADD_CUSTOM_COMMAND( + OUTPUT ${name}.bin DEPENDS ${target} + COMMAND ${OBJCOPY} + ARGS -O binary ${target} ${name}.bin + ) + #command to create a ihx from elf + ADD_CUSTOM_COMMAND( + OUTPUT ${name}.ihx DEPENDS ${target} + COMMAND ${OBJCOPY} + ARGS -O ihex ${target} ${name}.ihx + ) + #command to create a dump from elf + ADD_CUSTOM_COMMAND( + OUTPUT ${name}.dump DEPENDS ${target} + COMMAND ${OBJDUMP} + ARGS -DSC ${target} > ${name}.dump + ) + #command to create a rom from bin + ADD_CUSTOM_COMMAND( + OUTPUT ${name}.rom DEPENDS ${name}.bin + COMMAND ${HEXDUMP} + ARGS -v -e'1/1 \"%.2X\\n\"' ${name}.bin > ${name}.rom + ) + #add a top level target for output files + ADD_CUSTOM_TARGET( + ${name}_outputs ALL DEPENDS ${name}.map ${name}.bin ${name}.ihx ${name}.dump ${name}.rom + ) +ENDMACRO(GEN_OUTPUTS) + +######################################################################## +# Add the subdirectories +######################################################################## +ADD_SUBDIRECTORY(usrp2) +ADD_SUBDIRECTORY(usrp2p) diff --git a/firmware/microblaze/lib/CMakeLists.txt b/firmware/microblaze/lib/CMakeLists.txt new file mode 100644 index 000000000..193d63cfa --- /dev/null +++ b/firmware/microblaze/lib/CMakeLists.txt @@ -0,0 +1,47 @@ +# +# Copyright 2010 Ettus Research LLC +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +######################################################################## +SET(COMMON_SRCS + ${CMAKE_SOURCE_DIR}/lib/u2_init.c + ${CMAKE_SOURCE_DIR}/lib/abort.c + ${CMAKE_SOURCE_DIR}/lib/ad9510.c + ${CMAKE_SOURCE_DIR}/lib/clocks.c + ${CMAKE_SOURCE_DIR}/lib/eeprom.c + ${CMAKE_SOURCE_DIR}/lib/eth_addrs.c + ${CMAKE_SOURCE_DIR}/lib/eth_mac.c + ${CMAKE_SOURCE_DIR}/lib/_exit.c + ${CMAKE_SOURCE_DIR}/lib/exit.c + ${CMAKE_SOURCE_DIR}/lib/hal_io.c + ${CMAKE_SOURCE_DIR}/lib/hal_uart.c + ${CMAKE_SOURCE_DIR}/lib/i2c.c + ${CMAKE_SOURCE_DIR}/lib/mdelay.c + ${CMAKE_SOURCE_DIR}/lib/memcpy_wa.c + ${CMAKE_SOURCE_DIR}/lib/memset_wa.c + ${CMAKE_SOURCE_DIR}/lib/nonstdio.c + ${CMAKE_SOURCE_DIR}/lib/pic.c + ${CMAKE_SOURCE_DIR}/lib/pkt_ctrl.c + ${CMAKE_SOURCE_DIR}/lib/print_addrs.c + ${CMAKE_SOURCE_DIR}/lib/print_rmon_regs.c + ${CMAKE_SOURCE_DIR}/lib/print_buffer.c + ${CMAKE_SOURCE_DIR}/lib/printf.c + ${CMAKE_SOURCE_DIR}/lib/ihex.c + ${CMAKE_SOURCE_DIR}/lib/spi.c + ${CMAKE_SOURCE_DIR}/lib/net_common.c + ${CMAKE_SOURCE_DIR}/lib/arp_cache.c + ${CMAKE_SOURCE_DIR}/lib/banal.c +) diff --git a/firmware/microblaze/lib/hal_io.h b/firmware/microblaze/lib/hal_io.h index 950f8d591..ff87a3494 100644 --- a/firmware/microblaze/lib/hal_io.h +++ b/firmware/microblaze/lib/hal_io.h @@ -72,10 +72,10 @@ hal_disable_ints(void) { int result, t0; - asm volatile("mfs %0, rmsr \n\ - andni %1, %0, 0x2 \n\ - mts rmsr, %1" - : "=r" (result), "=r" (t0)); + //asm volatile("mfs %0, rmsr \n\ +// andni %1, %0, 0x2 \n\ +// mts rmsr, %1" +// : "=r" (result), "=r" (t0)); return result; } @@ -88,10 +88,10 @@ hal_enable_ints(void) { int result, t0; - asm volatile("mfs %0, rmsr \n\ - ori %1, %0, 0x2 \n\ - mts rmsr, %1" - : "=r" (result), "=r" (t0)); +// asm volatile("mfs %0, rmsr \n\ +// ori %1, %0, 0x2 \n\ +// mts rmsr, %1" +// : "=r" (result), "=r" (t0)); return result; } @@ -103,12 +103,12 @@ static inline void hal_restore_ints(int prev_state) { int t0, t1; - asm volatile("andi %0, %2, 0x2 \n\ - mfs %1, rmsr \n\ - andni %1, %1, 0x2 \n\ - or %1, %1, %0 \n\ - mts rmsr, %1" - : "=r" (t0), "=r"(t1) : "r" (prev_state)); +// asm volatile("andi %0, %2, 0x2 \n\ +// mfs %1, rmsr \n\ +// andni %1, %1, 0x2 \n\ +// or %1, %1, %0 \n\ +// mts rmsr, %1" +// : "=r" (t0), "=r"(t1) : "r" (prev_state)); } #endif /* INCLUDED_HAL_IO_H */ diff --git a/firmware/microblaze/lib/hal_uart.c b/firmware/microblaze/lib/hal_uart.c index 7836240fe..f0921f4f0 100644 --- a/firmware/microblaze/lib/hal_uart.c +++ b/firmware/microblaze/lib/hal_uart.c @@ -113,7 +113,7 @@ hal_uart_getc_timeout(hal_uart_name_t u) int hal_uart_rx_flush(hal_uart_name_t u) { - char x; + char x = 0; while(uart_regs[u].rxlevel) x = uart_regs[u].rxchar; return x; } diff --git a/firmware/microblaze/lib/mdelay.c b/firmware/microblaze/lib/mdelay.c index c8c119b1a..958acf3f5 100644 --- a/firmware/microblaze/lib/mdelay.c +++ b/firmware/microblaze/lib/mdelay.c @@ -30,7 +30,7 @@ inline static void delay_1ms(int loop_count) { - int i; +/* int i; for (i = 0; i < loop_count; i++){ asm volatile ("or r0, r0, r0\n\ or r0, r0, r0\n\ @@ -40,6 +40,7 @@ delay_1ms(int loop_count) or r0, r0, r0\n\ or r0, r0, r0\n"); } +*/ } // delay about ms milliseconds diff --git a/firmware/microblaze/usrp2/CMakeLists.txt b/firmware/microblaze/usrp2/CMakeLists.txt new file mode 100644 index 000000000..cdd09e02a --- /dev/null +++ b/firmware/microblaze/usrp2/CMakeLists.txt @@ -0,0 +1,35 @@ +# +# Copyright 2010 Ettus Research LLC +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +######################################################################## +INCLUDE(${CMAKE_SOURCE_DIR}/lib/CMakeLists.txt) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +ADD_LIBRARY(libusrp2fw STATIC + ${COMMON_SRCS} + sd.c + ethernet.c + udp_fw_update.c +) + +######################################################################## +ADD_LINKER_FLAGS("-Wl,-defsym -Wl,_TEXT_START_ADDR=0x0050") + +ADD_EXECUTABLE(usrp2_txrx_uhd.elf ${CMAKE_SOURCE_DIR}/apps/txrx_uhd.c) +TARGET_LINK_LIBRARIES(usrp2_txrx_uhd.elf libusrp2fw) +GEN_OUTPUTS(usrp2_txrx_uhd.elf) + diff --git a/firmware/microblaze/usrp2p/CMakeLists.txt b/firmware/microblaze/usrp2p/CMakeLists.txt new file mode 100644 index 000000000..825c3ab9e --- /dev/null +++ b/firmware/microblaze/usrp2p/CMakeLists.txt @@ -0,0 +1,48 @@ +# +# Copyright 2010 Ettus Research LLC +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +######################################################################## +INCLUDE(${CMAKE_SOURCE_DIR}/lib/CMakeLists.txt) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +ADD_DEFINITIONS(-DUSRP2P) + +ADD_LIBRARY(libusrp2pfw STATIC + ${COMMON_SRCS} + spif.c + spi_flash.c + spi_flash_read.c + bootloader_utils.c + ethernet.c + xilinx_s3_icap.c + udp_fw_update.c +) + +######################################################################## +ADD_LINKER_FLAGS("-Wl,-defsym -Wl,_TEXT_START_ADDR=0x8050") + +ADD_EXECUTABLE(usrp2p_txrx_uhd.elf ${CMAKE_SOURCE_DIR}/apps/txrx_uhd.c) +TARGET_LINK_LIBRARIES(usrp2p_txrx_uhd.elf libusrp2pfw) +GEN_OUTPUTS(usrp2p_txrx_uhd.elf) + +ADD_EXECUTABLE(usrp2p_blinkenlights.elf ${CMAKE_SOURCE_DIR}/apps/blinkenlights.c) +TARGET_LINK_LIBRARIES(usrp2p_blinkenlights.elf libusrp2pfw) +GEN_OUTPUTS(usrp2p_blinkenlights.elf) + +ADD_EXECUTABLE(usrp2p_uart_flash_loader.elf ${CMAKE_SOURCE_DIR}/apps/uart_flash_loader.c) +TARGET_LINK_LIBRARIES(usrp2p_uart_flash_loader.elf libusrp2pfw) +GEN_OUTPUTS(usrp2p_uart_flash_loader.elf) |