![]() |
NAS100d.GPIOConnections HistoryHide minor edits - Show changes to markup November 13, 2005, at 05:14 AM
by --
Changed lines 10-11 from:
to:
November 11, 2005, at 02:42 PM
by --
Changed lines 5-8 from:
to:
Changed lines 10-11 from:
to:
November 11, 2005, at 05:33 AM
by --
Changed line 17 from:
to:
November 11, 2005, at 05:31 AM
by --
Changed line 15 from:
to:
November 11, 2005, at 05:31 AM
by --
Changed lines 15-16 from:
to:
November 11, 2005, at 05:29 AM
by --
Changed lines 12-14 from:
to:
November 11, 2005, at 05:27 AM
by --
Changed line 16 from:
to:
November 11, 2005, at 05:16 AM
by --
Changed lines 1-2 from:
The IXP420 CPU has 16 General Purpose Input/Output (GPIO) pins which are used to interface to external hardware. In the case of the NAS100D?, the GPIO pins are used to monitor the buttons, control the LEDs, connect to the RTC, IDE controller and USB 2.0 controller. to:
The IXP420 CPU has 16 General Purpose Input/Output (GPIO) pins which are used to interface to external hardware. In the case of the NAS100D, the GPIO pins are used to monitor the buttons, control the LEDs, connect to the RTC, IDE controller and USB 2.0 controller. Changed line 5 from:
to:
Changed line 8 from:
to:
Changed lines 20-23 from:
to:
November 11, 2005, at 04:57 AM
by --
Changed line 8 from:
to:
November 11, 2005, at 04:53 AM
by --
Changed lines 1-2 from:
The IXP420 CPU has 16 General Purpose Input/Output (GPIO) pins which are used to interface to external hardware. In the case of the NSLU2, the GPIO pins are used to monitor the buttons, control the LEDs, connect to the RTC, IDE controller and USB 2.0 controller. to:
The IXP420 CPU has 16 General Purpose Input/Output (GPIO) pins which are used to interface to external hardware. In the case of the NAS100D?, the GPIO pins are used to monitor the buttons, control the LEDs, connect to the RTC, IDE controller and USB 2.0 controller. Changed line 5 from:
to:
November 11, 2005, at 04:52 AM
by --
Changed line 5 from:
to:
Changed lines 7-8 from:
to:
Changed lines 17-20 from:
to:
November 11, 2005, at 04:48 AM
by --
Changed lines 12-16 from:
to:
November 11, 2005, at 04:46 AM
by --
Changed line 12 from:
to:
November 11, 2005, at 04:45 AM
by --
Changed lines 38-39 from:
Location 0xc8004004 (GPOER) is set to 0x00005fdf (0b1001 1111 1101 1111), meaning GPIO[15,12:6,4:0] are inputs or tristated, and GPIO[14:13,5] are outputs. to:
Location 0xc8004004 (GPOER) is set to 0x00005fdf (0b0101 1111 1101 1111), meaning GPIO[14,12:6,4:0] are inputs or tristated, and GPIO[15,13,5] are outputs. November 11, 2005, at 04:37 AM
by --
Changed lines 32-33 from:
to:
GPIT1R = 0x00201248 GPIT2R = 0x00000249 November 11, 2005, at 04:37 AM
by --
Added lines 25-51:
(From Linux:) # ./gpio 0 GPOUTR = 0x000020e0 GPOER = 0x00005fdf GPINR = 0x00002ffd GPISR = 0x0000a06b GPIT1R? = 0x00201248 GPIT2R? = 0x00000249 GPCLKR = 0x00000000 Location 0xc8004000 (GPOUTR) is set to 0x000020e0 (0b0010 0000 1110 0000), meaning GPIO[13,7,6,5] are set to 1. Location 0xc8004004 (GPOER) is set to 0x00005fdf (0b1001 1111 1101 1111), meaning GPIO[15,12:6,4:0] are inputs or tristated, and GPIO[14:13,5] are outputs. Location 0xc8004008 (GPINR) is set to 0x00002ffd (0b0010 1111 1111 1101), meaning GPIO[15,14,12,1] are reading as 0, and the rest are reading as 1. Location 0xc800400c (GPISR) is set to 0x0000a06b (0b1010 0000 0101 1011), meaning there are interrupts pending on GPIO[6,4,3,1,0]. Location 0xc8004010 (GPIT1R) is set to 0x00201248 (0b0000 0000 0010 0000 0001 0010 0100 1000), meaning GPIO[6,5,0] are active high interrupts, and GPIO[7,4:1] are active low interrupts. Location 0xc8004014 (GPIT2R) is set to 0x00000249 (0b0000 0000 0000 0000 0000 0010 0100 1001), meaning GPIO[11:8] are active high interrupts, and GPIO[12] is an active low interrupt. Location 0xc8004018 (GPCLKR) is set to 0x00000000 (0b0000 0000 0000 0000 0000 0000 0000 0000), meaning GPIO[15:14] are normal outputs. (From RedBoot:) Deleted lines 70-91:
GPOUTR = 0x000020e0 GPOER = 0x00005fdf GPINR = 0x00002ffd GPISR = 0x0000a06b GPIT1R? = 0x00201248 GPIT2R? = 0x00000249 GPCLKR = 0x00000000 Location 0xc8004000 (GPOUTR) is set to 0x000020e0 (0b0010 0000 1110 0000), meaning GPIO[13,7,6,5] are set to 1. Location 0xc8004004 (GPOER) is set to 0x00005fdf (0b1001 1111 1101 1111), meaning GPIO[15,12:6,4:0] are inputs or tristated, and GPIO[14:13,5] are outputs. Location 0xc8004008 (GPINR) is set to 0x00002ffd (0b0010 1111 1111 1101), meaning GPIO[15,14,12,1] are reading as 0, and the rest are reading as 1. Location 0xc800400c (GPISR) is set to 0x0000a06b (0b1010 0000 0101 1011), meaning there are interrupts pending on GPIO[6,4,3,1,0]. Location 0xc8004010 (GPIT1R) is set to 0x00201248 (0b0000 0000 0010 0000 0001 0010 0100 1000), meaning GPIO[6,5,0] are active high interrupts, and GPIO[7,4:1] are active low interrupts. Location 0xc8004014 (GPIT2R) is set to 0x00000249 (0b0000 0000 0000 0000 0000 0010 0100 1001), meaning GPIO[11:8] are active high interrupts, and GPIO[12] is an active low interrupt. Location 0xc8004018 (GPCLKR) is set to 0x00000000 (0b0000 0000 0000 0000 0000 0000 0000 0000), meaning GPIO[15:14] are normal outputs. November 11, 2005, at 04:36 AM
by --
Added lines 43-65:
GPOUTR = 0x000020e0 GPOER = 0x00005fdf GPINR = 0x00002ffd GPISR = 0x0000a06b GPIT1R? = 0x00201248 GPIT2R? = 0x00000249 GPCLKR = 0x00000000 Location 0xc8004000 (GPOUTR) is set to 0x000020e0 (0b0010 0000 1110 0000), meaning GPIO[13,7,6,5] are set to 1. Location 0xc8004004 (GPOER) is set to 0x00005fdf (0b1001 1111 1101 1111), meaning GPIO[15,12:6,4:0] are inputs or tristated, and GPIO[14:13,5] are outputs. Location 0xc8004008 (GPINR) is set to 0x00002ffd (0b0010 1111 1111 1101), meaning GPIO[15,14,12,1] are reading as 0, and the rest are reading as 1. Location 0xc800400c (GPISR) is set to 0x0000a06b (0b1010 0000 0101 1011), meaning there are interrupts pending on GPIO[6,4,3,1,0]. Location 0xc8004010 (GPIT1R) is set to 0x00201248 (0b0000 0000 0010 0000 0001 0010 0100 1000), meaning GPIO[6,5,0] are active high interrupts, and GPIO[7,4:1] are active low interrupts. Location 0xc8004014 (GPIT2R) is set to 0x00000249 (0b0000 0000 0000 0000 0000 0010 0100 1001), meaning GPIO[11:8] are active high interrupts, and GPIO[12] is an active low interrupt. Location 0xc8004018 (GPCLKR) is set to 0x00000000 (0b0000 0000 0000 0000 0000 0000 0000 0000), meaning GPIO[15:14] are normal outputs. November 11, 2005, at 03:56 AM
by --
Changed line 9 from:
to:
November 11, 2005, at 03:56 AM
by --
Changed line 5 from:
to:
Changed line 9 from:
to:
Changed line 19 from:
to:
Changed lines 21-23 from:
to:
November 11, 2005, at 03:40 AM
by --
Changed lines 5-6 from:
to:
November 10, 2005, at 08:28 PM
by --
Changed lines 12-16 from:
to:
November 10, 2005, at 08:09 PM
by --
Changed lines 12-13 from:
to:
Changed lines 15-16 from:
to:
November 10, 2005, at 02:49 PM
by --
Changed lines 5-8 from:
to:
November 10, 2005, at 02:48 PM
by --
Changed lines 31-38 from:
Location 0xc8004000 (GPOUTR) is set to 0x000020C0 (0b0010 0000 1100 0000), meaning GPIO[13,7,6] are set to 1. Location 0xc8004004 (GPOER) is set to 0x00001F3F (0b0001 1111 0011 1111), meaning GPIO[12:8] and GPIO[5:0] are inputs or tristated, and GPIO[15:13] and GPIO[7:6] are outputs. Location 0xc8004008 (GPINR) is set to 0x0000affd (0b1010 1111 1111 1101), meaning GPIO[14,12,1] are reading as 0, and the rest are reading as 1. Location 0xc800400c (GPISR) is set to 0x0000a0d3 (0b1010 0000 1101 0011), meaning there are interrupts pending on GPIO[7,6,4,1,0]. Location 0xc8004010 (GPIT1R) is set to 0x00009248 (0b0000 0000 0000 0000 1001 0010 0100 1000), meaning GPIO[7,6,0] are active high interrupts, and GPIO[5:1] are active low interrupts. Location 0xc8004014 (GPIT2R) is set to 0x00000249 (0b0000 0000 0000 0000 0000 0010 0100 1001), meaning GPIO[11:8] are active high interrupts, and GPIO[12] is an active low interrupt. Location 0xc8004018 (GPCLKR) is set to 0x017f01ff (0b0000 0001 0111 1111 0000 0001 1111 1111), meaning GPIO[15:14] are clock outputs. to:
Location 0xc8004000 (GPOUTR) is set to 0x000020C0 (0b0010 0000 1100 0000), meaning GPIO[13,7,6] are set to 1. Location 0xc8004004 (GPOER) is set to 0x00001F3F (0b0001 1111 0011 1111), meaning GPIO[12:8] and GPIO[5:0] are inputs or tristated, and GPIO[15:13] and GPIO[7:6] are outputs. Location 0xc8004008 (GPINR) is set to 0x0000affd (0b1010 1111 1111 1101), meaning GPIO[14,12,1] are reading as 0, and the rest are reading as 1. Location 0xc800400c (GPISR) is set to 0x0000a0d3 (0b1010 0000 1101 0011), meaning there are interrupts pending on GPIO[7,6,4,1,0]. Location 0xc8004010 (GPIT1R) is set to 0x00009248 (0b0000 0000 0000 0000 1001 0010 0100 1000), meaning GPIO[7,6,0] are active high interrupts, and GPIO[5:1] are active low interrupts. Location 0xc8004014 (GPIT2R) is set to 0x00000249 (0b0000 0000 0000 0000 0000 0010 0100 1001), meaning GPIO[11:8] are active high interrupts, and GPIO[12] is an active low interrupt. Location 0xc8004018 (GPCLKR) is set to 0x017f01ff (0b0000 0001 0111 1111 0000 0001 1111 1111), meaning GPIO[15:14] are clock outputs. November 10, 2005, at 02:46 PM
by --
Changed lines 31-43 from:
Location 0xc8004000 (GPOUTR) is set to 0x000020C0 (0b0010 0000 1100 0000), meaning GPIO[13,7,6] are set to 1. Location 0xc8004004 (GPOER) is set to 0x00001F3F (0b0001 1111 0011 1111), meaning GPIO[12:8] and GPIO[5:0] are inputs or tristated, and GPIO[15:13] and GPIO[7:6] are outputs. Location 0xc8004008 (GPINR) is set to 0x0000affd (0b1010 1111 1111 1101), meaning GPIO[14,12,1] are reading as 0, and the rest are reading as 1. Location 0xc800400c (GPISR) is set to 0x0000a0d3 (0b1010 0000 1101 0011), meaning there are interrupts pending on GPIO[7,6,4,1,0]. Location 0xc8004010 (GPIT1R?) is set to 0x00009248 (0b0000 0000 0000 0000 1001 0010 0100 1000), meaning GPIO[7,6,0] are active high interrupts, and GPIO[5:1] are active low interrupts. Location 0xc8004014 (GPIT2R?) is set to 0x00000249 (0b0000 0000 0000 0000 0000 0010 0100 1001), meaning GPIO[11:8] are active high interrupts, and GPIO[12] is an active low interrupt. Location 0xc8004018 (GPCLKR) is set to 0x017f01ff (0b000 00001 0111 1111 0000 0001 1111 1111), meaning ... to:
Location 0xc8004000 (GPOUTR) is set to 0x000020C0 (0b0010 0000 1100 0000), meaning GPIO[13,7,6] are set to 1. Location 0xc8004004 (GPOER) is set to 0x00001F3F (0b0001 1111 0011 1111), meaning GPIO[12:8] and GPIO[5:0] are inputs or tristated, and GPIO[15:13] and GPIO[7:6] are outputs. Location 0xc8004008 (GPINR) is set to 0x0000affd (0b1010 1111 1111 1101), meaning GPIO[14,12,1] are reading as 0, and the rest are reading as 1. Location 0xc800400c (GPISR) is set to 0x0000a0d3 (0b1010 0000 1101 0011), meaning there are interrupts pending on GPIO[7,6,4,1,0]. Location 0xc8004010 (GPIT1R) is set to 0x00009248 (0b0000 0000 0000 0000 1001 0010 0100 1000), meaning GPIO[7,6,0] are active high interrupts, and GPIO[5:1] are active low interrupts. Location 0xc8004014 (GPIT2R) is set to 0x00000249 (0b0000 0000 0000 0000 0000 0010 0100 1001), meaning GPIO[11:8] are active high interrupts, and GPIO[12] is an active low interrupt. Location 0xc8004018 (GPCLKR) is set to 0x017f01ff (0b0000 0001 0111 1111 0000 0001 1111 1111), meaning GPIO[15:14] are clock outputs. November 10, 2005, at 02:42 PM
by --
Changed lines 31-32 from:
So 0x00001F3F is 0b0001111100111111, meaning GPIO[12:8] and GPIO[5:0] are inputs or tristated, and GPIO[15:13] and GPIO[7:6] are outputs. So 0x000020C0 is 0b0010000011000000, meaning GPIO13?, GPIO7? and GPIO6? are set to 1. to:
Location 0xc8004000 (GPOUTR) is set to 0x000020C0 (0b0010 0000 1100 0000), meaning GPIO[13,7,6] are set to 1. Location 0xc8004004 (GPOER) is set to 0x00001F3F (0b0001 1111 0011 1111), meaning GPIO[12:8] and GPIO[5:0] are inputs or tristated, and GPIO[15:13] and GPIO[7:6] are outputs. Location 0xc8004008 (GPINR) is set to 0x0000affd (0b1010 1111 1111 1101), meaning GPIO[14,12,1] are reading as 0, and the rest are reading as 1. Location 0xc800400c (GPISR) is set to 0x0000a0d3 (0b1010 0000 1101 0011), meaning there are interrupts pending on GPIO[7,6,4,1,0]. Location 0xc8004010 (GPIT1R?) is set to 0x00009248 (0b0000 0000 0000 0000 1001 0010 0100 1000), meaning GPIO[7,6,0] are active high interrupts, and GPIO[5:1] are active low interrupts. Location 0xc8004014 (GPIT2R?) is set to 0x00000249 (0b0000 0000 0000 0000 0000 0010 0100 1001), meaning GPIO[11:8] are active high interrupts, and GPIO[12] is an active low interrupt. Location 0xc8004018 (GPCLKR) is set to 0x017f01ff (0b000 00001 0111 1111 0000 0001 1111 1111), meaning ... November 10, 2005, at 02:26 PM
by --
Changed line 9 from:
to:
Changed lines 31-32 from:
to:
November 10, 2005, at 01:44 PM
by --
Added lines 23-31:
Here is the way to determine GPIO connections: RedBoot> cache off RedBoot> x -b 0xc8004000 C8004000: 00 00 20 C0 00 00 1F 3F 00 00 AF FD 00 00 A0 C3 |.. ....?........| C8004010: 00 00 92 48 00 00 02 49 01 7F 01 FF 00 00 00 00 |...H...I........| So 0x0000200 is 0b0010000011000000, meaning GPIO13?, GPIO7? and GPIO6? are outputs. November 10, 2005, at 01:33 PM
by --
Changed lines 1-10 from:
The IXP420 CPU has 16 General Purpose Input/Output (GPIO) pins which are used to interface to external hardware. In the case of the NSLU2, the GPIO pins are used to monitor the buttons, control the LEDs, connect to the RTC and USB 2.0 controller. GPIO(8) should actually be assigned as INTD on the PCI bus but it's been set as an output instead of tristate. It is connected to the power circuitry and is used to power down the NSLU2. GPIO(15) is GPIO_CLK1 and is running at 33MHz. It is required to access the Flash memory on the expansion bus. After power-up the IXP420 is configured to provide a clock on this GPIO pin. If the clock output on this pin is disabled, access to the Flash is impossible. The USB 2.0 controller can be configured to only use INTA which would free up GPIO(9) and GPIO(10). If the USB 2.0 controller tristates the INTB0 and INTC0 pins when they are disabled then we may reuse the GPIOs without cutting traces. If the USB 2.0 controller however actively pulls the pin high or low even when disabled then we must cut traces to allow reuse of the GPIOs. A much safer and easier option to add extra IO pins is to use a I²C IO extender. Please see PinoutOfI2CPort? for more details on the I²C connection. to:
The IXP420 CPU has 16 General Purpose Input/Output (GPIO) pins which are used to interface to external hardware. In the case of the NSLU2, the GPIO pins are used to monitor the buttons, control the LEDs, connect to the RTC, IDE controller and USB 2.0 controller. Changed lines 9-19 from:
to:
Added lines 21-22:
November 10, 2005, at 01:19 PM
by --
Added lines 1-28:
The IXP420 CPU has 16 General Purpose Input/Output (GPIO) pins which are used to interface to external hardware. In the case of the NSLU2, the GPIO pins are used to monitor the buttons, control the LEDs, connect to the RTC and USB 2.0 controller. GPIO(8) should actually be assigned as INTD on the PCI bus but it's been set as an output instead of tristate. It is connected to the power circuitry and is used to power down the NSLU2. GPIO(15) is GPIO_CLK1 and is running at 33MHz. It is required to access the Flash memory on the expansion bus. After power-up the IXP420 is configured to provide a clock on this GPIO pin. If the clock output on this pin is disabled, access to the Flash is impossible. The USB 2.0 controller can be configured to only use INTA which would free up GPIO(9) and GPIO(10). If the USB 2.0 controller tristates the INTB0 and INTC0 pins when they are disabled then we may reuse the GPIOs without cutting traces. If the USB 2.0 controller however actively pulls the pin high or low even when disabled then we must cut traces to allow reuse of the GPIOs. A much safer and easier option to add extra IO pins is to use a I²C IO extender. Please see PinoutOfI2CPort? for more details on the I²C connection.
|