Antonio Daril Crispino

Members
  • Content Count

    20
  • Joined

  • Last visited

About Antonio Daril Crispino

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hi Dan, Sorry for the late response, but I wanted to thank you for your help. I solved the problem doing a thorough study of the allocated heap and the stack memories then setting their sizes properly. So a application-specific solution, as you suggested. Have a good day, Antonio
  2. Hi again, I know the programming circuit is proprietary, but since it has been placed on the board, I think this context should be good for my question. I have the arduino microcontroller sending bytes through the SoftwareSerial library. With other FTDIs it works, but with this (FT2232H) on the board don't. I think it happens because of there are two ports, A port for programming the FPGA and B port for communication purposes. I think the simple routine selects the A port as the destination port. Is there a way to select the proper port for communication purposes? Is there a known problem with a known solution? I know arduino, FTDIs and their libraries don't concern the Digilent scope, I'm just asking. Thank you, Antonio
  3. Thank you Jon, but having only 10k LUTs, I can only create a 80KB RAM (one 6-inputs LUTs can implement one 64bit-ram). Moreover, as Dan suggest, I don't think LUT-based Ram is perfect for stack and heap memories. Now I have a very small RAM, related to the particular application. I was wondering if I can manage memory accesses to it through a MMU or enabling stack protection exception, increasing time, but solving runtime memory problems. Which of them do you suggest? I already use BRAM as cache. Enabling "use cache for all memory accesses" will make me treat the memory as one piace, as you said? I use a bootloader for moving the program from flash to the 512KB-SRAM. About putting some parts of my program in RAM and others in FLASH, I don't know how to do it through the linker script. It only "sees" the MB local memory controller (max128kB) and the EMC base address (512KB). How can I put, and leave, some parts of the program in the flash, even after the bootloader ends its elaboration? Can the microblaze access to those parts in the flash during the execution of the program? Thank you both for your help, Antonio
  4. Hi Jon, First of all, thank you for your answer. Yes, I was having runtime errors, hence my question. Yes, I set the heap and stack sizes with the linker script. Now, the fact is that I want to put my application .elf, the heap and the stack memories in a secondary memory, not in the brams that constitute the microblaze local memory (whose maximum size is 128k). The problem is that, having only 512k, all this stuff will not fit. So I thought to use the Distributed Memory Generator Xilinx IPcore (that use sclices LUTs to create RAM) to this purpose. But I'm not able to find any way to properly connect it to the microblaze. Can you help me?
  5. Hi, I have a problem setting heap and stack sizes for my application on a CMOD A7 35T. Briefly, through the linker script, I set heap and stack sizes to be placed into the axi_emc_0_S_AXI_MEM0_BASEADDR (64 MB), the emc controller of the onboard SRAM. So a bootloader copies the program from flash to this memory. First of all, I set the emc to 64 MB in the VIvado address editor, but the size of the onboard SRAM is 512kB. What does it mean? Is the actual available size of the memory 64MB or 512KB? Moreover, if I increase the two sizes, heap and stack, from 800kB to 1 or 2 or 4 MB the program doesn't work anymore (even if the "axi_emc_0_S_AXI_MEM0_BASEADDR" memory is set to 64MB). How can it be explained? How can I solve it? Thank you in advance, Antonio
  6. Hi Mikel, Can you please post me the link to the "How To Store Your SDK Project in Flash" tutorial? Thank you, Antonio
  7. Hi Mikel, I don't think what you said is totally correct. I have an old project in which the amount of local memory of the microblaze is 16k and the heap and stack size are 15MB each, placed both on an LPDDR through the linker script of the application. Now I have a 32k local memory and I want to set heap and stack memory at some MB, say 1 or 2, in a 64MB (set through the address editor in Vivado) External Memory Controller (EMC). The application works fine with 800k for both heap and stack. I know that increasing heap and stack sizes does not affect the size of the ELF file, but the application doesn't work. Do you have any idea about how I can increase these memories? Has it anything to do with the address editor in Vivado? Should I change the addresses of the EMC to make it work? Thank you for your time, Antonio
  8. Hi mskreen, Thank you for your answer. For larger project you also mean a project with only greater heap and stack size? Because I notice that increasing this two memory through the linker script the program doeasn't work anymore. Can you tell me why and/or what to do? Thank you, Antonio
  9. Hi, I have a communication problem between my Pro Trinket and the FT2232HQ of my CMOD A7 board. Briefly, I would like to trigger an interrupt on the Microblaze by sending a byte from the Trinket with the SoftwareSerial write() function. To this purpose I use a USB HOST Controller Board (http://www.hobbytronics.co.uk/usb-host-board-v2) programmed with serial drivers for FTDI. According to http://www.hobbytronics.co.uk/usb-host-serial, the drivers are tested to work with FT2232H FTDI. The question is, are the drivers for FT2232HQ and for FT2232H the same, or equivalent, or should I use an other USB Host Controller board? Thank you in advance, Antonio
  10. Thank you all for your answers. After several tries, I found that the problem was that I put this command in the xdc file: BITSTREAM.CONFIG.SPI_32BIT_ADDR (Enable SPI 32-bit address style: NO, YES) I found that it instructs the SPI configuration logic to issue 4-byte addressing commands and that it works only with SPI flash densities of 256 Mb or larger. Since I have a 32Mb flash it didn't work. Just deleting this command the flash now works and I am able to configuring the FPGA with the bootloader through the flash. Thank you again, Antonio
  11. Thank you so much for your answers. You have been really helpful. Yes, clearly they are application specific matters, so I'll find the application specific best solution. Have a good day, Antonio
  12. I chose the second option, because I don't wanto to slow down the execution. So I made the TX and RX buffers greater than the maximum number of elements sent and received. So, there is no way to control the flow in hardware? I use the two xilinx functions XUartNs550_RecvByte() and XUartNs550_SendByte(). They only do a control on the two fifos to see if there are elements to send/receive, or not. There is no need the control or set RTS and CTS values? Is this enough, or should I implement a somewhat software flow control in SDK before calling these two functions? Sorry for the exagerate number of questions
  13. According to the guide above, after programming the flash with the .mcs file, pushing the reset button the program should start. In my case it do nothing. Should I connect the flsh interrupt line to the microblaze interrupt controller to make the program work?