Hi Daixiwen, thanks for your reply!
I adopted the Altera 440 app.note design in my current design. I added an onchip
memory (an M144K type) which dual ports are connected to TSE's SGDMA Tx, SGDMA Rx,
and the CPU data master (I attached my SOPC system's snapshot).
Then, as written in the 440 app.note I made some modifications in the ipport.h.
There are :
# define ALTERA_M144K_FOR_PACKETS 1
# define ALTERA_M144K_ALLOC_BASE PACKET_MEMORY_BASE
# define ALTERA_M144K_ALLOC_SPAN PACKET_MEMORY_SPAN
# ifdef ALTERA_TRIPLE_SPEED_MAC
char * ncpalloc(unsigned size);
void ncpfree(void *ptr);
//char * ncpballoc(unsigned size);
//int ncpbfree(void *ptr);
# if ALTERA_M144K_FOR_PACKETS
# define BB_ALLOC(size) ncpballoc(size) /* Big packet buffer alloc */
# define BB_FREE(ptr) ncpbfree(ptr)
# define LB_ALLOC(size) ncpballoc(size) /* Little packet buffer alloc */
# define LB_FREE(ptr) ncpbfree(ptr)
# else
# define BB_ALLOC(size) ncpalloc(size) /* Big packet buffer alloc */
# define BB_FREE(ptr) ncpfree(ptr)
# define LB_ALLOC(size) ncpalloc(size) /* Little packet buffer alloc */
# define LB_FREE(ptr) ncpfree(ptr)
# endif
# else /* Not ALTERA_TRIPLE_SPEED_MAC */
# define BB_ALLOC(size) npalloc(size) /* Big packet buffer alloc */
# define BB_FREE(ptr) npfree(ptr)
# define LB_ALLOC(size) npalloc(size) /* Little packet buffer alloc */
# define LB_FREE(ptr) npfree(ptr)
# endif /* ALTERA_TRIPLE_SPEED_MAC */
# if ALTERA_M144K_FOR_PACKETS
# define NUMBIGBUFS 30
# define NUMLILBUFS 30
/* some maximum packet buffer numbers */
# define MAXBIGPKTS 30
# define MAXLILPKTS 30
# define MAXPACKETS (MAXLILPKTS+MAXBIGPKTS)
# define BIGBUFSIZE 54272
# define LILBUFSIZE 1280
# else
# define NUMBIGBUFS 30
# define NUMLILBUFS 30
/* some maximum packet buffer numbers */
# define MAXBIGPKTS 30
# define MAXLILPKTS 30
# define MAXPACKETS (MAXLILPKTS+MAXBIGPKTS)
# endif
That's all and the result was like I wrote in the first post. My program just
stopped and only showed
"==== Software License Reminder ===="
Do you know what's wrong with my system design? Are the modifications that I made in
ipport.h enough to bypass NicheStack from copying & removing from memory buffer
process?
In my current system the original data is stored in the DDR3. What I'm thinking is
the process during TSE transmission will be like this :
- My system receives data from DSP board and stores them in DDR3
- When transmitting data via TSE, the original data will be copied to the onchip
memory (as TSE buffer), then they are sent.
Is my opinion correct?
In your experience, what is the maximum data rate that you can achieve?