I am in a project and I have to comply with ISO26262 so I need to verify my CAN frame. I am going to check my frame using the CRC calculation. My question is: Should I do this calculation in my program or does the CAN protocol already do it automatically?
Is CRC already calculated by CAN protocol?
1.5k Views Asked by Yasin Ahsen At
2
There are 2 best solutions below
0
Lundin
On
CAN contains a 15 bit CRC on the data-link layer. It is handled by the CAN controller and you don't need to do a thing in software, other than checking for errors reported by the controller.
Application layer CRC could be use in some special cases like when you are transferring large amounts of data such as bootloaders. But it isn't necessary for ordinary communication.
Related Questions in C
- Passing arguments to main in C using Eclipse
- kernel module does not print packet info
- error C2016 (C requires that a struct or union has at least one member) and structs typedefs
- Drawing with ncurses, sockets and fork
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- Configured TTL for A record(s) backing CNAME records
- Allocating memory for pointers inside structures in functions
- Finding articulation point of undirected graph by DFS
- C first fgets() is being skipped while the second runs
- C std library don't appear to be linked in object file
- gcc static library compilation
- How to do a case-insensitive string comparison?
- C programming: Create and write 2D array of files as function
- How to read a file then store to array and then print?
- Function timeouts in C and thread
Related Questions in EMBEDDED
- PHP don't use temp file for upload
- Sparkfun SC16IS750 does not work on Raspberry Pi
- Reserve memory space in m_text memory region of FLASH on embedded target
- SAE J1939 Standards Collection -- How much is necessary?
- How to call multiple slaves for Spi data transmission?
- Deployment over GPRS to embedded devices
- Changing just one byte in SD card sector
- Comparion of values won't work without delay
- Better to pass struct, or pointer to struct?
- STM32F4 Handling peripheral error while making a DMA Transfer (RX)
- USB programming, transfer file from iOS device to Embedded os device?
- using Diab, dcc 5.9.4 to compile a windows executable
- does b64_pton() work if input contains special characters? I am using it in C code
- u-boot select boot partition based on GPIO state
- Why is a write to a memory-mapped peripheral register not actioned (LPC43xx)?
Related Questions in CAN-BUS
- How to send custom CAN messages using ELM327?
- What's the easiest way to prevent null chars from terminating my string?
- Driver with callback function
- What manufacturer code must I use in J1939?
- Lin bus add a slave to a configured lin cluster
- Convert string to bytes
- Any PIC18F microcontroller with both CANTX, CANRX and USB D+/D-
- Getting started with CAN bus
- where is the interrupt handler of can bus driver on BeagleBone black
- How a CAN Bus addressing works?
- CAN BUS Acknowledgment error
- How to setup PDO mapping?
- Retrieve hexadecimal argv[] in tab from struct can_frame
- Polling / Pushing from Socket
- How can I write a CANopen stack?
Related Questions in BUS
- Sending vector data in the bus
- Chisel: how to implement a one-hot mux that is efficient?
- Dealing with arrays in HDL
- Error 403--Forbidden - web service error when I use SOAP UI
- Disparity between bus throughput and CPU throughput and their effect on sequential and parallel computing
- SIMULINK use signal that will act as a bus input
- Is Parallel ATA (PATA) also called Serial Bus?
- How to handle a BUS in Verilog with multiple drivers
- Software memory testing for bus failures
- What is events in Otto and are there types of events that could be published using OTTO?
- MESI protocol-How to handle INVALID?
- get_pixel function raises bus error: 10
- Bus error in C struct
- Is there a general I2C command to see if a device is still present on the bus?
- Azure Service Bus: Best way to implement exponential retry policy for failed to process messages
Related Questions in AUTOMOTIVE
- Difference between event group id and event ids in someip sd
- Conan.io use on embeddeds Software development
- Getting "pre-check failed" error with missing attributes in module configuration of NvM in AUTOSAR
- How Templates from Android for car app library addresses layout on multiple devices/infotainment-systems?
- android automotive, where is the source?
- What are FEE unconfigured blocks? Are they different from the ones configured in Autosar NVM/FEE?
- TabTemplate example in android automotive OS
- Android Auto Car Sensors: unavailable when testing on a real car
- How to optimize boot up time for android automotive
- How to Create a Custom Keyboard Shortcut in DOORS?
- What is the difference between Association and Composition Aggregation in Autosar domain
- How to implement the UDS protocol over xl-driver library for sending Diagnostics?
- Is there a general Assembly ISA to learn? If not, which one I should learn?
- how to make building environment for AGL?
- Automotive app rejected due to login credentials not provided, when there is no sign-in
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Actually, you might not just rely on the CAN CRC itself in the case of ISO26262.
Because, the E2E protection (as it is called in AUTOSAR) consisting of CRC + SeqCounter, are done between two SWCs, in an ASIL-context.
The BSW is usually not ASIL. So, between the SWC providing the data to the BSW, and the receiving SWC checking the CRC, anything could happen in between. So, your BSW could put some flipped data into the CAN HW mailbox. The CAN HW will then build the wrong CRC when transmitting that data. Or the receiver might have a bug and flip the received data between the CAN mailbox and the actual receiving SWC end.