A modern vehicle consists of multiple controllers that communicate with each other on a network to orchestrate the various operations of the vehicle in a coordinated manner. Most often, such networks are based on CAN (Controller Area Network). CAN was primarily implemented to allow for exchange of information on the network to accomplish optimal vehicle functionality. However this information need not be confined to data required by other controllers on the network. This information may also be used to expose the internal functioning of the controller and may be targeted to a special debug node that can extract and decipher this information. Such information can be evaluated to vastly augment debug capabilities while a particular controller is installed on the vehicle.
This paper chronicles the authors' experience in developing such a methodology based on the J1939 CAN protocol, and illustrates its use using real world examples. Messaging schemes to support such debug have been discussed. The paper shall also delve into how concerns such as excess bandwidth utilization to support the messaging scheme, and memory utilization to store debug data, have been addressed. This technique can be used in conjunction with test panels in Matlab to predict and preempt field issues.
In essence, such a technique establishes a robust software debug methodology. Although such a methodology does not totally eliminate the use of a conventional debugger during the early phases of the software development, it vastly complements the use of a debugger during field deployment. As shall be elucidated, the manner in which information is presented is intuitive and can be interpreted easily, facilitating quick identification of the root cause of a field issue. Therefore, during field deployment, the technique presented in this paper can serve as the tool of choice to home in on and rapidly address issues.