If you cannot use a pre-built binary firmware from an automaker you can create a VI configuration file and use the code generation tool in the OpenXC Python library. Many examples of configuration files are included in the docs, as well as a complete reference for all configuration options
Knowledge of the car’s CAN messages is required to build a custom configuration file. If you’re just looking to get some data out of your car you most likely want a binary firmware from your car’s maker. If they don’t offer one, get together with the community to reverse engineer it!