Closed iperry closed 1 year ago
@iperry Thank you. Please test https://github.com/zephyrproject-rtos/zephyr/pull/53620 and report back.
I am testing the sending of a large number of data and I wanted to know how to select in the config the choice between segmented date or block transfer ?
I am testing block SDO transfers from a master using the Lely Industries CANOpen stack to a slave running the Zephyr canopennode stack.
When attempting to use block SDO uploads (reading a test chunk from the slave), CRC errors are encountered. I narrowed the problem down to the CRC check used inside the canopen stack, and its interaction with the zephyr CRC. I've only tested SDO block upload, but I suspect this problem exists everywhere crc16_ccitt() is used inside CO.
But, the zephyr signature is (zephyr/include/sys/crc.h)
crc16_itu_t
in crc.h. I tested this by looking at the test message with data "123456789,", which should yield the checksum 0x31C3 (see 7.2.4.3.16 CRC calculation algorithm to verify SDO block transfer).I applied the following patch and it "works for me:"
candump of an SDO block request WITHOUT the patch above:
candump of an SDO request WITH the patch above:
Please also mention any information which could help others to understand the problem you're facing:
To Reproduce Steps to reproduce the behavior:
Expected behavior A clear and concise description of what you expected to happen.
Impact What impact does this issue have on your progress (e.g., annoyance, showstopper)
Logs and console output If applicable, add console logs or other types of debug information e.g Wireshark capture or Logic analyzer capture (upload in zip archive). copy-and-paste text and put a code fence (```) before and after, to help explain the issue. (if unable to obtain text log, add a screenshot)
Environment (please complete the following information):