diff options
Diffstat (limited to 'firmware/microblaze/usrp2p')
-rw-r--r-- | firmware/microblaze/usrp2p/Makefile.am | 3 | ||||
-rw-r--r-- | firmware/microblaze/usrp2p/bootloader/init_bootloader.c | 23 | ||||
-rw-r--r-- | firmware/microblaze/usrp2p/memory_map.h | 4 | ||||
-rw-r--r-- | firmware/microblaze/usrp2p/udp_fw_update.c | 4 |
4 files changed, 12 insertions, 22 deletions
diff --git a/firmware/microblaze/usrp2p/Makefile.am b/firmware/microblaze/usrp2p/Makefile.am index a5df3ff08..40766b406 100644 --- a/firmware/microblaze/usrp2p/Makefile.am +++ b/firmware/microblaze/usrp2p/Makefile.am @@ -18,7 +18,8 @@ include $(top_srcdir)/Makefile.common AM_CFLAGS = \ - $(COMMON_CFLAGS) + $(COMMON_CFLAGS) \ + -DUSRP2P AM_LDFLAGS = \ $(COMMON_LFLAGS) \ diff --git a/firmware/microblaze/usrp2p/bootloader/init_bootloader.c b/firmware/microblaze/usrp2p/bootloader/init_bootloader.c index 2bbbd405e..1d9d681d7 100644 --- a/firmware/microblaze/usrp2p/bootloader/init_bootloader.c +++ b/firmware/microblaze/usrp2p/bootloader/init_bootloader.c @@ -18,9 +18,6 @@ #include <i2c.h> #include "usrp2/fw_common.h" -bool find_safe_booted_flag(void); -void set_safe_booted_flag(bool flag); - void pic_interrupt_handler() __attribute__ ((interrupt_handler)); void pic_interrupt_handler() @@ -28,18 +25,6 @@ void pic_interrupt_handler() // nop stub } -bool find_safe_booted_flag(void) { - unsigned char flag_byte; - eeprom_read(USRP2_I2C_ADDR_MBOARD, USRP2_EE_MBOARD_BOOTLOADER_FLAGS, &flag_byte, 1); - return (flag_byte == 0x5E); -} - -void set_safe_booted_flag(bool flag) { - unsigned char flag_byte = flag ? 0x5E : 0xDC; - eeprom_write(USRP2_I2C_ADDR_MBOARD, USRP2_EE_MBOARD_BOOTLOADER_FLAGS, &flag_byte, 1); -} - - void load_ihex(void) { //simple IHEX parser to load proper records into RAM. loads program when it receives end of record. char buf[128]; //input data buffer uint8_t ihx[32]; //ihex data buffer @@ -79,22 +64,22 @@ int main(int argc, char *argv[]) { puts("USRP2+ bootloader\n"); bool production_image = find_safe_booted_flag(); - if(production_image) set_safe_booted_flag(0); //we're the production image, so we clear the flag for the next boot - + set_safe_booted_flag(0); //haven't booted yet + if(BUTTON_PUSHED) { //see memory_map.h puts("Starting USRP2+ in safe mode."); if(is_valid_fw_image(SAFE_FW_IMAGE_LOCATION_ADDR)) { + set_safe_booted_flag(1); //let the firmware know it's the safe image spi_flash_read(SAFE_FW_IMAGE_LOCATION_ADDR, FW_IMAGE_SIZE_BYTES, (void *)RAM_BASE); start_program(RAM_BASE); puts("ERROR: return from main program! This should never happen!"); icap_reload_fpga(SAFE_FPGA_IMAGE_LOCATION_ADDR); } else { puts("ERROR: no safe firmware image available. I am a brick. Feel free to load IHEX to RAM."); - //puts("ERROR: no safe firmware image available. I am a brick."); load_ihex(); } } - + if(!production_image) { puts("Checking for valid production FPGA image..."); if(is_valid_fpga_image(PROD_FPGA_IMAGE_LOCATION_ADDR)) { diff --git a/firmware/microblaze/usrp2p/memory_map.h b/firmware/microblaze/usrp2p/memory_map.h index 8d0d0c365..3b2dc0057 100644 --- a/firmware/microblaze/usrp2p/memory_map.h +++ b/firmware/microblaze/usrp2p/memory_map.h @@ -490,6 +490,10 @@ typedef struct { typedef struct { volatile uint32_t num_chan; volatile uint32_t clear_state; // clears out state machine, fifos, + volatile uint32_t report_sid; + volatile uint32_t policy; + volatile uint32_t cyc_per_up; + volatile uint32_t packets_per_up; } sr_tx_ctrl_t; #define sr_tx_ctrl ((sr_tx_ctrl_t *) _SR_ADDR(SR_TX_CTRL)) diff --git a/firmware/microblaze/usrp2p/udp_fw_update.c b/firmware/microblaze/usrp2p/udp_fw_update.c index 55c206b1b..ead08ad2c 100644 --- a/firmware/microblaze/usrp2p/udp_fw_update.c +++ b/firmware/microblaze/usrp2p/udp_fw_update.c @@ -38,13 +38,13 @@ void handle_udp_fw_update_packet(struct socket_address src, struct socket_addres usrp2_fw_update_id_t update_data_in_id = update_data_in->id; //ensure that the protocol versions match - if (payload_len >= sizeof(uint32_t) && update_data_in->proto_ver != USRP2_FW_COMPAT_NUM){ +/* if (payload_len >= sizeof(uint32_t) && update_data_in->proto_ver != USRP2_FW_COMPAT_NUM){ printf("!Error in update packet handler: Expected compatibility number %d, but got %d\n", USRP2_FW_COMPAT_NUM, update_data_in->proto_ver ); update_data_in_id = USRP2_FW_UPDATE_ID_OHAI_LOL; //so we can respond } - +*/ //ensure that this is not a short packet if (payload_len < sizeof(usrp2_fw_update_data_t)){ printf("!Error in update packet handler: Expected payload length %d, but got %d\n", |