Accessing the CRC Calculation Unit from Linux

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Accessing the CRC Calculation Unit from Linux

Jump to solution
2,779 Views
ErnestoBraun
Contributor II

Hello Everyone,

I'm using a i.MX35 with Linux 3.5.3 and I'm wondering why there is no hardware unit usage for CRC calculation in the Kernel (see Reference Manual CRC Calculation Unit).

How do I access this Unit from Linux?

Thanks in advance,

Ernesto

Labels (1)
Tags (3)
1 Solution
2,219 Views
Yuri
NXP Employee
NXP Employee

The i.MX35 processor has two cores: ARM core and DSP core presented in SDMA module.
SDMA ROM has some number of typical scripts. Scripts written in SDMA assembler language (DSP RISC),

have been developed to cover most frequently used data transfers. This scripts library supports data transfer

from ARM core memory space to shared domain memory space (DSP- SDMA core),  from ARM core memory space

to processor peripherals and other. But there are no (in SDMA ROM) special scripts to load data from ARM memory
for CRC calculation and further providing results to ARM memory. Basically users can try to implement such functionality
themselves in order to load their specific scripts to SDMA RAM and run it.  

The following may be useful :

“Documentation for the i.MX51 SDMA”


https://community.freescale.com/message/258933#258933

View solution in original post

6 Replies
2,219 Views
fabio_estevam
NXP Employee
NXP Employee

Looks like you are referring to the CRC engine that is  part of the SDMA/eMMC/Ethernet, right?  It is not general purpose.

Regards,

Fabio Estevam

0 Kudos
Reply
2,219 Views
ErnestoBraun
Contributor II

Hello Fabio,

yes, I'm refering to the CRC engine that is part of the CRC engine from the smart direct memory access (SDMA) controller. And as far as I understand, this is general purpose (you can choose polynom etc...). I'm thinking of better performance when using the hw unit instead of sw CRC implementation. But I can't find any register definition in the Kernel sources. Is there somewhere an application note how to access this unit?

Best regards,

Ernesto

0 Kudos
Reply
2,220 Views
Yuri
NXP Employee
NXP Employee

The i.MX35 processor has two cores: ARM core and DSP core presented in SDMA module.
SDMA ROM has some number of typical scripts. Scripts written in SDMA assembler language (DSP RISC),

have been developed to cover most frequently used data transfers. This scripts library supports data transfer

from ARM core memory space to shared domain memory space (DSP- SDMA core),  from ARM core memory space

to processor peripherals and other. But there are no (in SDMA ROM) special scripts to load data from ARM memory
for CRC calculation and further providing results to ARM memory. Basically users can try to implement such functionality
themselves in order to load their specific scripts to SDMA RAM and run it.  

The following may be useful :

“Documentation for the i.MX51 SDMA”


https://community.freescale.com/message/258933#258933

2,219 Views
ErnestoBraun
Contributor II

Thank you, Yuri. Especially the Freescale i.MX51 SDMA tutorial from Eli Billauer (http://billauer.co.il/blog/2011/10/imx-sdma-howto-memory-map/) is very interesting. I'm not sure if I'm able to write user specific SDMA scripts (nearly no assembler experience), but I think this is the way to do it. I will keep the tutorial and examples in mind if hardware crc calculation will be really necessary for me. Thank you.

0 Kudos
Reply
2,219 Views
chrishealy
Contributor I

Ernesto,

Were you ever able to use the general purpose CRC block in the SDMA core in the i.MX35 or i.MX51?  If you were, did you glue it to a standard Linux API?  This is something I too am interested in as the single biggest consumer of cycles in my application are computing CRC.

0 Kudos
Reply
2,219 Views
ErnestoBraun
Contributor II

No.

0 Kudos
Reply