UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Visitor hana
Visitor
8,937 Views
Registered: ‎02-26-2010

LLTemac +TFTP in ML410

Hi,

 

I am trying to use xilinx xps_ll_temac to create a tftp connection. But I am stuch at the first steps.

I have enabled transmit and receive via TC and RCW1 registers. I have also enabled the corresponding interrups. But when I connect the board to a traffic source, I do not know where I can see the recieved data. I have read the lltemac datasheet over and over but I cannot find out a way to know the data that TEMAC receives.

Could you please help me with this?

 

I also have another question, is there a sample of implemeting tftp connection via xilkernel available, so that I use it or learn from it? I have heard about such an example in xilkernel_v3_00_a,but I could not find it anywhere.

 

I truly appreciate any help I can get,

 

regards,

 

Hana

 

 

0 Kudos
8 Replies
Xilinx Employee
Xilinx Employee
8,915 Views
Registered: ‎08-01-2007

Re: LLTemac +TFTP in ML410

Hi Hana,

 

XAPP1026 (http://www.xilinx.com/support/documentation/application_notes/xapp1026.pdf) has a reference design with a TFTP server and is a good point to start.

 

Since you are targeting the ML410 board, I would recommend going through BSB and creating a system similar to the ML507 (PowerPC, XPS_LL_TEMAC, DDR2 SDRAM and UART) and then port the application from this application note.

 

Hope this helps...

 

 

0 Kudos
Visitor hana
Visitor
8,890 Views
Registered: ‎02-26-2010

Re: LLTemac +TFTP in ML410

Hi again and thank you so much for your help.

 

I tried to do as you said but there is a problem. although these tow boards are so much the same, Ml507 makes use of  Virtex5 which has a locallink but ML410 has a Virtex4 that does not have locallink. Does that obstruct the whole thing?

How can I reach the received data? I tried writing some codes but it seemed that Phy's received data never reached the Temac.

 

Thanks again

0 Kudos
Explorer
Explorer
8,883 Views
Registered: ‎03-04-2010

Re: LLTemac +TFTP in ML410

I've stumbled through the whole stuff the last few weeks so maybe I could help you a little bit getting the ll temac work on the ML410. First of all create a new design with the BSB. As a start, just keep all the default settings. Enable the xps_ll_temac with scatter gather support (for SDMA + Interrupt).

 

After finishing the BSB, right-click on your xps_ll_temac to open the configure menu. I've attached a screenshot of my configuration. Follow this link to configure the setting for lwip and xilkernel for getting the xapp1026 example code work: http://www.xilinx.com/products/boards/ml510/ml510_10.1_3/docs/ml510_bsb1_std_ip_addition.pdf (page 41 to 48).

 

If you take all this steps you should have a design that's working.

lltemac_mii_config.png
0 Kudos
Xilinx Employee
Xilinx Employee
8,854 Views
Registered: ‎08-01-2007

Re: LLTemac +TFTP in ML410

Hi Hana,

 

The difference between the ML507 and the ML410 is that the PowerPC440 in ML507 has a hardened DMA controller and the PowerPC405 in ML410 does not.

 

However this does not change anything for the LL interface. When you enable DMA on the XPS_LL_TEMAC, the Soft DMA engine in the MPMC module will be made use of in the absence of the hard DMA controller.

 

Have you tried just the standalone BSB design generated for ML410? Does it exhibit the same issue?

 

 

Visitor hana
Visitor
8,751 Views
Registered: ‎02-26-2010

Re: LLTemac +TFTP in ML410

Hi and thanks for your help

 

I tried using a simple BSB with the specifications you'd explained. However, my EDK does not generate the .xml file recently(what can cause this?) Therefore, I cannot export my hardware to SDK.

I tried making a  xilkernel project from EDK. and import the software from XAPP1026. I added all .c & .h files but now I face a new problem!

There are some files needed from IWIP library that are not included in XAPP1026. It seems that I should tick the IWIP130 in Software platform settings. I do not know whether it is my EDK or what but I cannot tick that option. Is there any other solution?

 

By the way,have you got any idea of what is wrong with my EDK? everything seemed to be just fine before. I have tried reinstalling it but there was no use! By the way, I am using 11.1 version

 

Thanks again,

 

Hana

0 Kudos
Explorer
Explorer
8,741 Views
Registered: ‎03-04-2010

Re: LLTemac +TFTP in ML410

 


@hana wrote:

 

I tried using a simple BSB with the specifications you'd explained. However, my EDK does not generate the .xml file recently(what can cause this?) Therefore, I cannot export my hardware to SDK.


 

I don't know what you mean. Can you explain it a bit more detailed?

 

 


@hana wrote:

 

I tried making a  xilkernel project from EDK. and import the software from XAPP1026. I added all .c & .h files but now I face a new problem!

There are some files needed from IWIP library that are not included in XAPP1026. It seems that I should tick the IWIP130 in Software platform settings. I do not know whether it is my EDK or what but I cannot tick that option. Is there any other solution?


Which files have you added exactly? In the zip file content there are several folders like 10.1, ml505, ml507, etc. Using EDK 11.1 you should take the files out of the ml505 oder ml507 because it seems there are some changes and differenzes in the code comparing the 10.1 and the 11.1 version.

 

 

For configurate your xilkernel enviroment did you followed the pfd file (page 41 to 48) I've posted the last time? If you did so, everything should be fine. For compiling an linking your lwip project in the sdk you have to add the path of the include files of lwip and the name of the library in the properties of your sdk project. Just right-click on your sdk project, choose "properties", add the path of the include files (something like $XILINX_EDK\sw\ThirdParty\sw_services\lwip130_v1_00_a\src\lwip-1.3.0\src\include) and add "lwip4" in the libraries. Now you should be able to compile the xapp1026 code.

0 Kudos
Visitor hana
Visitor
8,732 Views
Registered: ‎02-26-2010

Re: LLTemac +TFTP in ML410

Well,

 

some of the previous problems are solved thanks to you. here is my current issue:I used the files in xapp1026 from ml507 folder. I followed pg41-48 of the pdf you provided (i just had to skip: "systmr_dev = xps_timer_11" since there was no such thing is hardware)

now,when I build the project, i face several errors. i have copied/pasted them here:

 

/cygdrive/c/Xilinx/11.1/EDK/gnu/powerpc-eabi/nt/bin/../lib/gcc/powerpc-eabi/4.1.1/../../../../powerpc-eabi/bin/ld: region xps_bram_if_cntlr_1 is full (TestApp_Peripheral_ppc405_0/executable.elf section .bss)
/cygdrive/c/Xilinx/11.1/EDK/gnu/powerpc-eabi/nt/bin/../lib/gcc/powerpc-eabi/4.1.1/../../../../powerpc-eabi/bin/ld: section .stack [fffe0000 -> fffe03ff] overlaps section .vectors [fffe0000 -> fffe20df]
/cygdrive/c/Xilinx/11.1/EDK/gnu/powerpc-eabi/nt/bin/../lib/gcc/powerpc-eabi/4.1.1/../../../../powerpc-eabi/bin/ld: section .heap [fffe0400 -> fffe07ff] overlaps section .vectors [fffe0000 -> fffe20df]
/cygdrive/c/Xilinx/11.1/EDK/gnu/powerpc-eabi/nt/bin/../lib/gcc/powerpc-eabi/4.1.1/../../../../powerpc-eabi/bin/ld: region xps_bram_if_cntlr_1 is full (TestApp_Peripheral_ppc405_0/executable.elf section .bss)
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/cckOoVtw.o: In function `main_thread':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/TestApp_Peripheral.c:122: undefined reference to `lwip_init'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/TestApp_Peripheral.c:125: undefined reference to `sys_thread_new'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/cckOoVtw.o: In function `network_thread':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/TestApp_Peripheral.c:98: undefined reference to `xemac_add'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/TestApp_Peripheral.c:102: undefined reference to `netif_set_default'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/TestApp_Peripheral.c:105: undefined reference to `netif_set_up'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/TestApp_Peripheral.c:108: undefined reference to `xemacif_input_thread'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/TestApp_Peripheral.c:108: undefined reference to `xemacif_input_thread'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/TestApp_Peripheral.c:108: undefined reference to `sys_thread_new'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccVL7ObK.o: In function `launch_app_threads':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/dispatch.c:60: undefined reference to `sys_thread_new'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/dispatch.c:66: undefined reference to `sys_thread_new'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/dispatch.c:72: undefined reference to `sys_thread_new'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/dispatch.c:78: undefined reference to `sys_thread_new'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccVL7ObK.o:/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/dispatch.c:84: more undefined references to `sys_thread_new' follow
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/cc4YNJWK.o: In function `echo_application_thread':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/echo.c:85: undefined reference to `lwip_socket'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/echo.c:92: undefined reference to `lwip_bind'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/echo.c:95: undefined reference to `lwip_listen'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/echo.c:100: undefined reference to `lwip_accept'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/echo.c:101: undefined reference to `sys_thread_new'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/echo.c:100: undefined reference to `lwip_accept'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/cc4YNJWK.o: In function `process_echo_request':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/echo.c:51: undefined reference to `lwip_read'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/echo.c:66: undefined reference to `lwip_write'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/echo.c:70: undefined reference to `lwip_close'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/echo.c:53: undefined reference to `lwip_close'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/cc1vplOZ.o: In function `do_404':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/http_response.c:58: undefined reference to `lwip_write'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/http_response.c:64: undefined reference to `lwip_write'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/http_response.c:65: undefined reference to `lwip_write'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/http_response.c:66: undefined reference to `lwip_write'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/cc1vplOZ.o: In function `do_http_get':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/http_response.c:149: undefined reference to `lwip_write'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/cc1vplOZ.o:/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/http_response.c:160: more undefined references to `lwip_write' follow
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccGu9jNt.o: In function `prot_mem_free':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/prot_malloc.c:36: undefined reference to `sys_arch_protect'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/prot_malloc.c:37: undefined reference to `mem_free'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/prot_malloc.c:38: undefined reference to `sys_arch_unprotect'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccGu9jNt.o: In function `prot_mem_malloc':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/prot_malloc.c:26: undefined reference to `sys_arch_protect'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/prot_malloc.c:27: undefined reference to `mem_malloc'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/prot_malloc.c:28: undefined reference to `sys_arch_unprotect'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccB2Fysf.o: In function `rx_application_thread':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/rxperf.c:40: undefined reference to `lwip_socket'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/rxperf.c:47: undefined reference to `lwip_bind'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/rxperf.c:50: undefined reference to `lwip_listen'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/rxperf.c:53: undefined reference to `lwip_accept'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/rxperf.c:58: undefined reference to `lwip_read'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/rxperf.c:64: undefined reference to `lwip_close'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccgQ6tmj.o: In function `tftpserver_application_thread':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:324: undefined reference to `lwip_socket'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:334: undefined reference to `lwip_bind'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:352: undefined reference to `lwip_recvfrom'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:362: undefined reference to `sys_thread_new'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccgQ6tmj.o: In function `tftp_send_message':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:49: undefined reference to `lwip_sendto'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccgQ6tmj.o: In function `tftp_process_write':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:221: undefined reference to `lwip_select'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:226: undefined reference to `lwip_recvfrom'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccgQ6tmj.o: In function `tftp_process_read':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:138: undefined reference to `lwip_select'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:145: undefined reference to `lwip_recvfrom'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccgQ6tmj.o: In function `process_tftp_request':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:274: undefined reference to `lwip_socket'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:286: undefined reference to `lwip_bind'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/tftpserver.c:312: undefined reference to `lwip_close'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/cciV0ndG.o: In function `tx_application_thread':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/txperf.c:50: undefined reference to `lwip_socket'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/txperf.c:61: undefined reference to `lwip_connect'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/txperf.c:67: undefined reference to `lwip_write'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccIOCcq6.o: In function `udpsend_thread':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/udpsend.c:38: undefined reference to `lwip_socket'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/udpsend.c:48: undefined reference to `lwip_bind'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/udpsend.c:66: undefined reference to `lwip_sendto'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/udpsend.c:74: undefined reference to `lwip_sendto'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/ccIkLC6I.o: In function `utx_application_thread':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/utxperf.c:50: undefined reference to `lwip_socket'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/utxperf.c:61: undefined reference to `lwip_connect'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/utxperf.c:67: undefined reference to `lwip_write'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/cc6k9dyy.o: In function `web_application_thread':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/webserver.c:66: undefined reference to `lwip_socket'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/webserver.c:73: undefined reference to `lwip_bind'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/webserver.c:77: undefined reference to `lwip_listen'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/webserver.c:81: undefined reference to `lwip_accept'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/webserver.c:84: undefined reference to `sys_thread_new'
/cygdrive/c/DOCUME~1/admin/LOCALS~1/Temp/cc6k9dyy.o: In function `process_http_request':
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/webserver.c:44: undefined reference to `lwip_read'
/cygdrive/d/ML410_PRJ/EDK_temac/TestApp_Peripheral_ppc405_0/src/webserver.c:51: undefined reference to `lwip_close'

 

I assume I am missing some libraries. By the way, I am using EDK (not SDK) and I added sources & headers by right clicking on source/headers and coosing add existing files (i first copied ml507 sw files there). So how can I find/add iwip library files while using EDK?

 

I truly appreciate your help,

 

Regards,

 

Hana

0 Kudos
Explorer
Explorer
8,729 Views
Registered: ‎03-04-2010

Re: LLTemac +TFTP in ML410

Do you set the mode of lwIP to socket mode in the software platform settings? By the way, it is recommended to use sdk for the whole software stuff to separate software and hardware design. In the EDK right-click on you software project -> set compiler options -> paths and options. Set "lwip4" in "libraries to link against" and the include file path (as I mentioned it in my last posting) in the search path field.

 

You also should add a timer to your hardware design because lwIP adapters are interrupt based an needs a timer so reset. Then you can set it in the software platform settings like mentioned in the pdf.

 

By the way: you should use the search function of the xilinx webpage to get some more information about lwIP and so on. You should take a look at the lwIP section in the "OS and Libraries Document Collection" file too.

0 Kudos