Hi,
there is a problem with CRC Driver (community) with CRC_USE_DMA=TRUE,
driver does not work correctly with buffer more 300k.
ChibiOS version - 17.6.3
CRC Driver with DMA problem
Moderators: RoccoMarco, barthess
- Giovanni
- Site Admin
- Posts: 14457
- Joined: Wed May 27, 2009 8:48 am
- Location: Salerno, Italy
- Has thanked: 1076 times
- Been thanked: 922 times
- Contact:
Re: CRC Driver with DMA problem
If this is the problem then the driver needs to split transfers in chunks.
Giovanni
Giovanni
Re: CRC Driver with DMA problem
Steved, you are right.
Giovani, yep, this is a problem, I check the firmware CRC and it could be up to 1M.
Giovani, yep, this is a problem, I check the firmware CRC and it could be up to 1M.
Vitaly
- Giovanni
- Site Admin
- Posts: 14457
- Joined: Wed May 27, 2009 8:48 am
- Location: Salerno, Italy
- Has thanked: 1076 times
- Been thanked: 922 times
- Contact:
Re: CRC Driver with DMA problem
Hi,
There are other issues in that driver, for example crcCalcI() should be crcCalcS() because it calls an S-class inside (in the LLD). It also needs a SW fallback mode so other drivers can use it, right now we have several CRC SW implementation in various places, this is not good.
I will look into importing in in the main repository and make adjustments.
Giovanni
There are other issues in that driver, for example crcCalcI() should be crcCalcS() because it calls an S-class inside (in the LLD). It also needs a SW fallback mode so other drivers can use it, right now we have several CRC SW implementation in various places, this is not good.
I will look into importing in in the main repository and make adjustments.
Giovanni
Re: CRC Driver with DMA problem
There are some mistakes with defines as well, I will post changes here later.
Vitaly
Re: CRC Driver with DMA problem
Sorry, there is no any define mistakes in CRC module, I mixed up it with QEI driver:
community/os/hal/include/hal_qei.h
community/os/hal/include/hal_qei.h
Code: Select all
*/
typedef enum {
QEI_OVERFLOW_WRAP = 0, /**< Counter value will wrap around. */
-#if QEI_USE_OVERFLOW_DISCARD == TRUE
+#if defined(QEI_USE_OVERFLOW_DISCARD) && QEI_USE_OVERFLOW_DISCARD == TRUE
QEI_OVERFLOW_DISCARD = 1, /**< Counter doesn't change. */
#endif
-#if QEI_USE_OVERFLOW_MINMAX == TRUE
+#if defined(QEI_USE_OVERFLOW_MINMAX) && QEI_USE_OVERFLOW_MINMAX == TRUE
QEI_OVERFLOW_MINMAX = 2, /**< Counter will be updated upto min or max.*/
#endif
} qeioverflow_t;
Vitaly
-
- Posts: 483
- Joined: Sat Nov 19, 2011 6:47 pm
- Location: Le Mans, France
- Has thanked: 21 times
- Been thanked: 30 times
Re: CRC Driver with DMA problem
hi,
Please open a ticket here: https://github.com/ChibiOS/ChibiOS-Contrib/issues
We'll have a look at the driver.
Thanks!
Please open a ticket here: https://github.com/ChibiOS/ChibiOS-Contrib/issues
We'll have a look at the driver.
Thanks!
Who is online
Users browsing this forum: Bing [Bot] and 37 guests