Подключение ПО программатора в Xilinx ISE Webpack / Integration of external EEPROM programmer software into Xilinx ISE Webpack
This is now production-quality document. Tested many times on lin & lin64 at ISE 13.3-14.4
Я написал примерную инструкцию, как подключить программатор к ПО Xilinx ISE Webpack.
Мне неизвестно, рассчитано ли это ПО вообще на подключение программаторов третьих фирм. Но мне это необходимо по определению, ведь я не использую JTAG.
I write the instruction manual, how to integrate your DIY EEPROM programmer to Xilinx ISE Webpack software.
I do not know if this documented at all. But i definetely need it, due to i am never use JTAG.
This step-by-step instruction manual was written in help to integrate your EEPROM/FLASH programming software into existing XILINX ISE Webpack installation. This will replace original 'bitgen'. Live programming supported, even with translation of our program messages to ISE while programming. But i do not do anything for it: it hopefully working out-of-box. Author: jopka1@gmail.com Date: oct 2012 - 06/14/2013 License: Free Status: Production quality ========================== sudo cp /opt/Xilinx/14.4/ISE_DS/ISE/data/projnav/scripts/dpm_bitgenTasks.tcl /opt/Xilinx/13.4/ISE_DS/ISE/data/projnav/scripts/dpm_bitgenTasks.tcl.orig sudo gedit /opt/Xilinx/14.4/ISE_DS/ISE/data/projnav/scripts/dpm_bitgenTasks.tcl Find: set sExe "bitgen" Replace to: set sExe "bitgen2" Compile your own executable, name it 'bitgen2', place to folder where original 'bitgen' is: ex. 'sudo nautilus /opt/Xilinx/14.4/ISE_DS/ISE/bin/lin64' Your executable should run original 'bitgen', then do its own tasks. I found useful code which not only run external executeble, but read its output and pass to us, and terminate our code when 'error' words found in output. This is example only. You may find the complete code in my Programmer software source code. 8<------ char commandline[512]; sprintf(commandline, "/opt/Xilinx/13.4/ISE_DS/ISE/bin/lin/bitgen %s", s); printf("Jopka: launch '%s'\n",commandline); // system((char *)temp); its work /* Open the command for reading. */ fp = popen(commandline, "r"); if (fp == NULL) { printf("Jopka: Failed to run command '%s'\n",commandline); return EXIT_FAILURE; } /* Read the output a line at a time - output it. */ err=0; while (fgets(path, sizeof(path)-1, fp) != NULL) { // printf("Jopka: Command output: %s", path); printf("%s", path); if (strncmp(path, "ERROR", 5)==0) { // printf("*** err ***\n"); err=1; } } /* close */ pclose(fp); if (err==1) { printf("Jopka: errors found, quitting.\n"); return EXIT_FAILURE; } 8<------ Please note, if you find more efficient and cute way to do anything mentioned in this article, ex. for not to define full path to 'bitgen', please write me mailto:jopka1@gmail.com. Thank you!