diff options
| author | Nick Foster <nick@nerdnetworks.org> | 2011-04-21 19:45:05 -0700 | 
|---|---|---|
| committer | Nick Foster <nick@nerdnetworks.org> | 2011-04-21 19:45:05 -0700 | 
| commit | 3dd74062fc6cfad68a62faac6669bada96f3aecf (patch) | |
| tree | 9179979b9245e4ea5979100701ac017f52c74d62 /firmware | |
| parent | f9080d0a3f7d6b0478150581a0c2e8af3f4e3c95 (diff) | |
| download | uhd-3dd74062fc6cfad68a62faac6669bada96f3aecf.tar.gz uhd-3dd74062fc6cfad68a62faac6669bada96f3aecf.tar.bz2 uhd-3dd74062fc6cfad68a62faac6669bada96f3aecf.zip | |
N210: Moved u2p_init into main app and changed bootloader behavior to not load safe fw if safe mode button pressed
Diffstat (limited to 'firmware')
| -rw-r--r-- | firmware/zpu/apps/txrx_uhd.c | 7 | ||||
| -rwxr-xr-x | firmware/zpu/bin/bin_to_ram_macro_init.py | 24 | ||||
| -rw-r--r-- | firmware/zpu/lib/u2_init.c | 7 | ||||
| -rw-r--r-- | firmware/zpu/usrp2p/bootloader/udp_bootloader.c | 11 | 
4 files changed, 23 insertions, 26 deletions
| diff --git a/firmware/zpu/apps/txrx_uhd.c b/firmware/zpu/apps/txrx_uhd.c index 12f173f5c..8c27618e9 100644 --- a/firmware/zpu/apps/txrx_uhd.c +++ b/firmware/zpu/apps/txrx_uhd.c @@ -39,6 +39,10 @@  #include <string.h>  #include <stdbool.h> +#ifdef USRP2P +#include "u2p_init.h" +#endif +  extern uint16_t dsp0_dst_port, err0_dst_port, dsp1_dst_port;  static void handle_udp_data_packet( @@ -284,6 +288,9 @@ int  main(void)  {    u2_init(); +#ifdef USRP2P +  u2p_init(); +#endif    putstr("\nTxRx-UHD-ZPU\n");    print_mac_addr(ethernet_mac_addr()); newline(); diff --git a/firmware/zpu/bin/bin_to_ram_macro_init.py b/firmware/zpu/bin/bin_to_ram_macro_init.py index 2958b7202..bf8abb19a 100755 --- a/firmware/zpu/bin/bin_to_ram_macro_init.py +++ b/firmware/zpu/bin/bin_to_ram_macro_init.py @@ -3,6 +3,8 @@  import struct  import sys +BOOTRAM_SIZE = 16384 +  def do_8_words(ofile, which_ram, row, words):      ofile.write("defparam bootram.RAM%d.INIT_%02X=256'h" % (which_ram, row))      ofile.write("%08x_%08x_%08x_%08x_%08x_%08x_%08x_%08x;\n" % ( @@ -21,25 +23,13 @@ def bin_to_ram_macro_init(bin_input_file, ram_init_output_file):      if r != 0:          words += (8 - r) * (0,) -    if len(words) > 4096: -        sys.stderr.write("bin_to_macro_init: error: input file %s is > 16KiB\n" % (bin_input_file,)) +    if len(words) > (BOOTRAM_SIZE / 4): +        sys.stderr.write("bin_to_macro_init: error: input file %s is > %dKiB\n" % (bin_input_file,BOOTRAM_SIZE))          sys.exit(1) -    # first 2KB -    for i in range(0, min(512, len(words)), 8): -        do_8_words(ofile, 0, i/8, words[i:i+8]) - -    # second 2KB -    for i in range(512, min(1024, len(words)), 8): -        do_8_words(ofile, 1, (i/8) % 64, words[i:i+8]) - -		# third 2KB -    for i in range(1024, min(1536, len(words)), 8): -        do_8_words(ofile, 2, (i/8) % 64, words[i:i+8]) - -		# last 2KB -    for i in range(1536, len(words), 8): -        do_8_words(ofile, 3, (i/8) % 64, words[i:i+8]) +    for q in range(0, BOOTRAM_SIZE/4, 512): +        for i in range(q, min(q+512, len(words)), 8): +            do_8_words(ofile, int(q / 512), (i/8) % 64, words[i:i+8])  if __name__ == '__main__':      if len(sys.argv) != 3: diff --git a/firmware/zpu/lib/u2_init.c b/firmware/zpu/lib/u2_init.c index db26be538..71bd2c594 100644 --- a/firmware/zpu/lib/u2_init.c +++ b/firmware/zpu/lib/u2_init.c @@ -26,9 +26,6 @@  #include "clocks.h"  #include "usrp2/fw_common.h"  #include "nonstdio.h" -#ifdef USRP2P -#include "u2p_init.h" -#endif  /*   * We ought to arrange for this to be called before main, but for now, @@ -53,10 +50,6 @@ u2_init(void)    i2c_init();    hal_enable_ints(); -#ifdef USRP2P -  u2p_init(); -#endif -    // flash all leds to let us know board is alive    hal_set_led_src(0x0, 0x1f); /* software ctrl */    hal_set_leds(0x0, 0x1f);    mdelay(300); diff --git a/firmware/zpu/usrp2p/bootloader/udp_bootloader.c b/firmware/zpu/usrp2p/bootloader/udp_bootloader.c index 00b54f364..118de2ae9 100644 --- a/firmware/zpu/usrp2p/bootloader/udp_bootloader.c +++ b/firmware/zpu/usrp2p/bootloader/udp_bootloader.c @@ -51,6 +51,8 @@  #include <xilinx_s3_icap.h>  #include <mdelay.h> +#define BUTTON_PUSHED ((router_status->irqs & PIC_BUTTON) ? 0 : 1) +  static void handle_inp_packet(uint32_t *buff, size_t num_lines){    //test if its an ip recovery packet @@ -97,8 +99,11 @@ static void do_the_bootload_thing(void) {  	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)) { +		puts("Starting USRP2+ in safe mode. I am a brick. Feel free to reprogram me via the UDP burner."); +        return; +        //no longer necessary since we can just burn from UDP via the bootloader now +/* +        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(); @@ -108,6 +113,7 @@ static void do_the_bootload_thing(void) {  				puts("ERROR: no safe firmware image available. I am a brick. Feel free to reprogram me via the UDP burner.");  				return;  			} +*/  	}  	if(!production_image) { @@ -150,6 +156,7 @@ int  main(void)  {    u2_init(); +  spif_init();    set_default_mac_addr();    set_default_ip_addr(); | 
