Background:I have done interfacing of PIC16f877 and 8051 with an ADC, DAC, stepper motor, LCD etc using port pins. Using this method I can interface anything with a uC.
- I want to learn interfacing using I2C or any other bus. What I don't understand is how are the control/data registers mapped onto the uC i/o or memory space?
When I interfaced a LCD, I used the port pins and each pin represented a bit on the LCD. I used 8 pins for data channel and 3 pins for control (or something like that).
- In my course I first learnt how to glow leds using the port pins of a uc. Extrapolating from that knowledge I have been able to interface all kind of hardware - adc, dac, lcd etc. Now that's just one way of interfacing. Buses are another and I don't understand them; there are many to choose from: I2C, USB, PCI, ArmBus, ISA etc. What would be a good example bus to learn so that I am at a level that I can simply look at the datasheet of the device or bus specification and use that particular bus technology?
- What are board support packages? If I compile a gcc toolchain for an arm based hardware, build any custom device drivers needed and install linux on it, would I have built a board support package?