From: <ro...@us...> - 2014-04-28 11:11:47
|
Revision: 3500 http://sourceforge.net/p/nscldaq/code/3500 Author: ron-fox Date: 2014-04-28 11:11:43 +0000 (Mon, 28 Apr 2014) Log Message: ----------- Issue # Modified Paths: -------------- branches/nscldaq-11.0-development/ChangeLog branches/nscldaq-11.0-development/usb/loaders/ccusb_flash.cpp branches/nscldaq-11.0-development/usb/loaders/usbloaders.xml branches/nscldaq-11.0-development/usb/loaders/vmusb_flash.cpp Modified: branches/nscldaq-11.0-development/ChangeLog =================================================================== --- branches/nscldaq-11.0-development/ChangeLog 2014-04-24 18:06:10 UTC (rev 3499) +++ branches/nscldaq-11.0-development/ChangeLog 2014-04-28 11:11:43 UTC (rev 3500) @@ -590,4 +590,7 @@ hand around on failures and actually record data. * Issue #1941 - Re-assert the width of the field each insertion in CRingItem::toString as it is apparently a one-shot thing. + * Issue #1919 - Provide optional argument for VM/CCusb loaders. + This is done by providing an optional program parameter after the + firmware file that is the serial number string (e.g. V1234). Modified: branches/nscldaq-11.0-development/usb/loaders/ccusb_flash.cpp =================================================================== --- branches/nscldaq-11.0-development/usb/loaders/ccusb_flash.cpp 2014-04-24 18:06:10 UTC (rev 3499) +++ branches/nscldaq-11.0-development/usb/loaders/ccusb_flash.cpp 2014-04-28 11:11:43 UTC (rev 3500) @@ -19,16 +19,12 @@ -int main(int argc, char *fname[]) +int main(int argc, char** argv) { - //Make sure the number of arguements is correct - if(argc != 2) - { - printf("\n\n Must provide a firmware file name as an argument\n\n"); - return 0; - } - + + char* fname; + char* serial(0); struct usb_device *dev; xxusb_device_type devices[100]; time_t t1, t2; @@ -43,24 +39,56 @@ int ret; + // parameter processing: + + if ((argc < 2) || (argc > 3)) { + printf("Usage\n"); + printf(" %s firmware-file [serial-string]", argv[0]); + printf("Where:\n"); + printf(" firmware-file - Is a .bit or .bin formatted Xilinx firmware file\n"); + printf(" serial-string - If present is the specific serial number of the CC-USB to flash\n"); + return -1; + } + fname = argv[1]; + + if(argc == 3) { + serial = argv[2]; + } + printf("\n*************************************************************************\n\n"); printf(" WIENER VM_USB Firmware upgrade\n"); + printf("\n*************************************************************************\n"); + + //open CC_USB - xxusb_devices_find(devices); - dev = devices[0].usbdev; - udev = xxusb_device_open(dev); - if(!udev) - { - printf("\nUnable to open a CC_USB device\n"); - return 0; - } + + if (serial) { + udev = xxusb_serial_open(serial); + + } else { + if (xxusb_devices_find(devices) <= 0) { + printf("There are no CC_CSB controllers on this system\n"); + return 0; + } + dev = devices[0].usbdev; + udev = xxusb_device_open(dev); + + } + if(!udev) + { + printf("\nUnable to open a CC_USB device\n"); + if (serial) { + printf("Possibly there is no CC_USB with the serial: %s\n", serial); + } + return 0; + } //open Firmware File ik=0; - if ((fptr=fopen(fname[1],"rb"))==NULL) + if ((fptr=fopen(fname,"rb"))==NULL) { printf("\n File not Found\n"); return 0; Modified: branches/nscldaq-11.0-development/usb/loaders/usbloaders.xml =================================================================== --- branches/nscldaq-11.0-development/usb/loaders/usbloaders.xml 2014-04-24 18:06:10 UTC (rev 3499) +++ branches/nscldaq-11.0-development/usb/loaders/usbloaders.xml 2014-04-28 11:11:43 UTC (rev 3500) @@ -12,9 +12,7 @@ </para> <para> These loaders work both with Xilinx <filename>.bit</filename> and - <filename>.bin</filename> files. Unfortunately, they currently only work - with a single device plugged into the VM-USB since the programs locate - and burn the first VM or CC USB device found. + <filename>.bin</filename> files. </para> <para> The XX-USB devices have four load locations. Which one runs and which @@ -73,7 +71,7 @@ <refsynopsisdiv> <cmdsynopsis> <command> -ccusbloader <replaceable>firmware-filename</replaceable> +ccusbloader <replaceable>firmware-filename <optional>serial-string</optional></replaceable> </command> </cmdsynopsis> @@ -86,6 +84,11 @@ <link linkend='usbloaders_chap' endterm='usbloaders_chap_title' /> for the full load procedure. </para> + <para> + If <replaceable>serial-string</replaceable> is provided it must be + a serial number string for a powered up device attached to the system. + The CC-USB with that serial number will be used. + </para> </refsect1> <refsect1> <title> @@ -113,7 +116,7 @@ <refsynopsisdiv> <cmdsynopsis> <command> -vmusbloader <replaceable>firmware-filename</replaceable> +vmusbloader <replaceable>firmware-filename <optional>serial-string</optional></replaceable> </command> </cmdsynopsis> @@ -126,6 +129,11 @@ <link linkend='usbloaders_chap' endterm='usbloaders_chap_title' /> for the full load procedure. </para> + <para> + If <replaceable>serial-string</replaceable> is provided it must be + a serial number string for a powered up device attached to the system. + The VM-USB with that serial number will be used. + </para> </refsect1> <refsect1> <title> Modified: branches/nscldaq-11.0-development/usb/loaders/vmusb_flash.cpp =================================================================== --- branches/nscldaq-11.0-development/usb/loaders/vmusb_flash.cpp 2014-04-24 18:06:10 UTC (rev 3499) +++ branches/nscldaq-11.0-development/usb/loaders/vmusb_flash.cpp 2014-04-28 11:11:43 UTC (rev 3500) @@ -19,16 +19,29 @@ -int main(int argc, char *fname[]) +int main(int argc, char** argv) { - - //Make sure the number of arguements is correct - if(argc != 2) - { - printf("\n\n Must provide a firmware file name as an argument\n\n"); - return 0; - } - + char* fname; + char* serial(0); + + if ((argc < 2) || (argc > 3)) { + printf("\nUsage:\n"); + printf(" vmusloader firmware-file [serial-string]\n"); + printf("Where:\n"); + printf(" firmware-file - is a Xilinx .bit or .bin formatted firmware file\n"); + printf(" serial-string - if present is the serial number of the VM-USB to flash\n"); + return -1; + + } + + // By now we know the filename is present + + fname = argv[1]; + + if (argc == 3) { + serial = argv[2]; + } + struct usb_device *dev; xxusb_device_type devices[100]; time_t t1, t2; @@ -45,23 +58,35 @@ printf("\n*************************************************************************\n\n"); - printf(" WIENER VM_USB Firmware upgrade\n"); + printf(" WIENER VM_USB Firmware upgrade\n"); + printf("\n*************************************************************************\n"); + + + //open VM_USB - //open VM_USB - xxusb_devices_find(devices); -printf("\n*************************************************************************\n"); - dev = devices[0].usbdev; - udev = xxusb_device_open(dev); - if(!udev) - { - printf("\nUnable to open a VM_USB device\n"); - return 0; + if (serial) { + udev = xxusb_serial_open(serial); + } else { + if(xxusb_devices_find(devices) <= 0) { + printf("There are no VM-USB devices on this system\n"); + return 0; + } + dev = devices[0].usbdev; + udev = xxusb_device_open(dev); } + if(!udev) + { + printf("\nUnable to open a VM_USB device\n"); + if (serial) { + printf("VM-USB with serial %s probably is not attached.\n", serial); + } + return 0; + } //open Firmware File ik=0; - if ((fptr=fopen(fname[1],"rb"))==NULL) + if ((fptr=fopen(fname,"rb"))==NULL) { printf("\n File not Found\n"); return 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |