This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Interrupt latency and data transmission rate on Android

Other Parts Discussed in Thread: AM3517

Hello,

My product is an industrial inspection instrument. The data is collected and compressed by FPGA. Then MCU reads back the data and draws a curve on the screen. The existing software doesn't use any OS. It's a big main-loop function.

Now I plan to use an OS on my new product. I bought two boards, LogicPD's AM3517 EVM and BeagleBoard xM. I know both these two boards support Android OS.

My question is how to read back the data from FPGA on time.

FPGA will send out an interrupt to MCU when data is ready. MCU must read back the data ASAP. For the memory will be covered by new data after 1 ms. So what's the interrupt latency in Android OS? If the latency is longer than 1 ms, I think MCU can't read back the data on time.

Secondly the data need to be read back in 1 ms. The data size is about 4K bytes. So the data transmission rate should be 4M bytes/s at least. Can I reach this number in Android OS?

Thanks!

BR
Jiamin 

  • Hi Jaimin,

    1. Interrupt latency will depends on how many applications are under running state at the moment. 

    2. Regarding data transmission read rate, it will depends on  which "communication medium" you would like to use. You can refer

    http://processors.wiki.ti.com/index.php/Android_Benchmarks_DevKit2.3#Connectivity_Performance for numbers on standard peripheral.

     

    Let us know if you need more information on this.

    -

    satish

  • Hi, Satish,

    Thanks for your replay!

    I think my application should run at the high priority. So the priority of the interrupt from FPGA should be highest.

    For the data transmission rate, it's not for connectivity device, such as USB or Ethernet. I think FPGA should act as a memory for MCU. So I plan to use GPMC to connect FPGA and MCU. I notice there is a EDMA testing in linker you mentioned. However there is no result for this part.

    Is there any better solution for connection between FPGA and MCU? Not GPMC.

    BR

    Jiamin 

  • Jiamin,

    Android releases are usually based on a non-real-time Linux kernel. So task switching (which will occur once the interrupt occurs and it switches to an ISR) can take a lot of time depending on the system state. Any other high priority task may delay your processing by several ms. Only a real-time Linux kernel would allow to guarantee a defined maximum latency. For example on AM3517 at 600MHz using a 2.6.33-rt kernel we measured maximum latencies in the range of 100us.

    So to guarantee 1ms latency in an Android environment I assume you either need to tweak your driver and/or use an RT-kernel. Keep in mind that Android was designed for consumer devices like mobile phones.

    Regards.

  • Hi, Frank,

    So a real time Linux is better than Android for my application.

    TI releases a Linux version on the website. Is it a real time kernel? If not, can you give me some guide on this?

    Thanks!

    BR
    Jiamin 

  • Hi Jaimin,

    You can get RT-linux kernel from following git repository

    http://arago-project.org/git/projects/?p=linux-omap3.git;a=shortlog;h=2e07da26756f772bdfdca4ae85ca3097c96ff76c

    You need to apply android patches to make it work with android filesystem.

     

    Thanks and Regards,

    Pankaj Bharadiya

     

  • JIAMIN said:
    So a real time Linux is better than Android for my application.

    In terms of real-time capabilities yes. But I was only talking about the kernel. Not sure what other requirements and dependencies there are in your project. Graphics applications may as well be implemented using the Qt SDK provided in our Linux SDKs.

    TI currently does not offer a standard SDK with an RT-kernel. However you may find a kernel tree on Arago that has an RT patch. Just exchange the kernel from what you get in the standard Linux SDK. However there is no official support for that.

    For general info on the RT-preemption patches I would direct you to the OSADL web site.

    In their QA web farm you can also find an AM3517 board with live real-time performance data. It also shows the kernel config info as far as I can remember.

    Regards.