Global variables (nee static) are fairly normal in embedded. You want to preallocate all your memory since you generally don't have a heap.
Mostly you have specific inputs from some other tasks and your outputs are consumed by different tasks. So, even though the variables are "global" they generally only have one writer with multiple readers in properly done embedded programming.
What Toyota did was not even in the same universe as "properly done embedded".
"specific inputs from some other tasks and your outputs are consumed by different tasks" sounds a lot like how PLCs work. Just running an infinite loop scanning inputs and triggering outputs in response to the state of the inputs.
Mostly you have specific inputs from some other tasks and your outputs are consumed by different tasks. So, even though the variables are "global" they generally only have one writer with multiple readers in properly done embedded programming.
What Toyota did was not even in the same universe as "properly done embedded".