[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [partial-reconfig] ICAP programming.
Hello KW,
Thanks for your inputs. I think I may need few more
inputs from you regarding the readback functionality?
Can you send any references that I could use to understand
the functionality?
I have been through the entire wrapper code for OPB HWICAP,
I understand the stuff about byte ordering between BRAM and
ICAP. I also have been going through the contents of the bitfiles
by looking at their hex values and decoding them to registers.
But I have not been able to make much headway into this problem.
Actually I think the problem could be with the board, although
it shouldnt be. I have a ML310 board and the reconfig module
is an island sandwitched between two fixed modules, F1 and F2.
F1 being a design with microblaze and F2 is a wrapper
for ICAP and connects to F1 through a busmacro running over
reconfig site. This is supposedly a working design idea,
based on a previous mail from Karel in this partial reconfig alias.
I havent been able to get any further response from him further.
So, I will very much appreciate your inputs in solving this problem.
I am reattaching my code, which does the reconfiguration by
playing back the contents of the partial bitfile it reads
from sysace onto ICAP wrapper. The loop actually has to
run 216 times for my partial bitfile to be dumped completely
but it hangs at loop 31!
Awaiting your inputs in this regard.
Thanks
LN
/* fd is the file handle for a partial bitfile in FLASH */
int reprogram (void *fd)
{
int bytes;
int loopcount = 0;
// Should the ICAP be desynced
XHwIcap_CommandDesync(&InstIcap);
while (1) {
xil_printf("loop %d \r\n", loopcount++);
bytes = sysace_fread(buf, 1, BLOCKSIZE_BYTES, fd);
xil_printf("out of sysace_fread with bytes %d\r\n", bytes);
if (!bytes) {
break;
} else {
XHwIcap_SetConfiguration(&InstIcap, buf, bytes/4);
if (bytes != BLOCKSIZE_BYTES) {
break;
}
}
}
XHwIcap_CommandDesync(&InstIcap);
xil_printf("write done\r\n");
return 0;
}
On Mon, 31 Oct 2005 kw@xxxxxxxxxx wrote:
> Hi there,
>
> You should definitely consider using the read-back function of ICAP for
> debugging. do multiple configuration register readback to figure out if
> the last loaded bit stream is partial. by checking CRC etc. Use RS232 for
> sending the data to display.
>
> LN, I sent you an e-mail earlier, but it's been bounced back. I will just
> tell you again, that you do not need to reverse (bit swap) bit stream. you
> should find a way to store your partial bitstream file in your memory as
> char or integer array, and load it into ICAP.
>
> That BRAM is a buffer, so everytime you load a bitstream, you load a small
> part of your bitstream into that buffer, and when the buffer is full, you
> load the buffer content into ICAP, and continue with the next iteration.
>
> I'm currently out of office, so i cann't be more specific on my code. I
> suggest that you study the HWICAP library function calls in more detail
> and open a bitfile with a hex editor to really understand what's really
> going on.
>
>
> BR
> KW
>
> > Hello LN,
> >
> > I don¡¯t think there's any modification needed to be done with the partial
> > bitstream. See this
> > http://www.itee.uq.edu.au/~listarch/partial-reconfig/archive/2005/03/msg00027.html
> >
> > In fact, I have problems with ICAP too. After I initialize ICAP, I get
> > nothing feedback. Can you share some experience how to establish the ICAP?
> > My code doesn¡¯t work. Anything wrong?
> >
> > XStatus Status;
> > XHwIcap *InstancePtr;
> > Xuint32 Idcode;
> >
> > xil_printf(" icap self test ");
> >
> > Status = XHwIcap_Initialize(InstancePtr, XPAR_OPB_HWICAP_0_DEVICE_ID,
> > XHI_READ_DEVICEID_FROM_ICAP);
> > Idcode = XHwIcap_GetConfigReg(InstancePtr, XHI_IDCODE);
> > xil_printf("IDCODE is 0x%08x \n\n\r", Idcode);
> >
> > Regards,
> > Robin
> >
> > -----Original Message-----
> > From: owner-partial-reconfig@xxxxxxxxxxxxxx
> > [mailto:owner-partial-reconfig@xxxxxxxxxxxxxx] On Behalf Of Lakshmi
> > Narasimhan. S
> > Sent: ÐÇÆÚÁù, 29 Ê®ÔÂ, 2005 0:13
> > To: partial-reconfig@xxxxxxxxxxxxxx
> > Subject: [partial-reconfig] ICAP programming.
> >
> > Hello team:
> > I have a few questions about using ICAP for self reconfiguration.
> >
> > I got a system built successfully that does partial reconfiguration,
> > if I were to send the bitfiles via JTAG port.
> >
> > Now I would to extend this to do self-reconfiguration.
> > I have put the partial bitfile onto the FLASH and able to
> > read the file from the central processor. These bitfiles
> > are partial bitfiles.
> >
> > Onboard ICAP is working, I was able to read the IDCODE from the
> > ICAP successfully.
> >
> > Now to my questions.
> >
> > I tried dumping the contents of the bitfiles directly onto the
> > ICAP. No processing, just read them from FLASH and write onto ICAP.
> > I see no difference, infact the system hangs!!!
> >
> > So, is there some processing that needs to be done onto the partial
> > bitstream before sending it off to ICAP?
> >
> > Any inputs, snippets of code or references to design which does it
> > would be greatly appreciated.
> >
> > Thanks
> > LN
> > ___________________________
> > partial-reconfig mailing list
> > partial-reconfig@xxxxxxxxxxxxxx
> > Mailing List Archive :
> > http://www.itee.uq.edu.au/~listarch/partial-reconfig/
> >
> > ___________________________
> > partial-reconfig mailing list
> > partial-reconfig@xxxxxxxxxxxxxx
> > Mailing List Archive :
> > http://www.itee.uq.edu.au/~listarch/partial-reconfig/
> >
>
>
> ___________________________
> partial-reconfig mailing list
> partial-reconfig@xxxxxxxxxxxxxx
> Mailing List Archive : http://www.itee.uq.edu.au/~listarch/partial-reconfig/
>
___________________________
partial-reconfig mailing list
partial-reconfig@xxxxxxxxxxxxxx
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/partial-reconfig/