Recently, I was trying to get u-boot to connect to our NAND chip, copying the init and reader code directly from the board maker's diagnosis app. No connection.
After various tinkering about, I came to try and add in the nand init code, but to modify the port init code to match that of the diagnosis app--and it worked.
While I get the idea of raising and lowering certain bits on a port register to send commands I, for instance, haven't the foggiest what the differences are between an UP, DAT, and CON register, nor what relationship those would have to each other such that if one is set wrong, the other doesn't work. I would assume that the technical documents released by the architecture manufacturer has sufficient information that one could figure this out--but I have no idea where one attains such knowledge (as a programmer) so that you can look at the stuff written by the hardware guys and translate that into functioning code.
I fear that this has mostly occurred by osmosis for most people, or transferring from hardware to software somewhere through your career. But before assuming that, just thought I would ask if there does happen to be a book somewhere about that describes how to look at all of the various charts and tables in the technical documentation and know what that looks like from a programming standpoint.
Thank you, Chris Williams