[ECOS] About iPAQ H3870

Sung-Nan Yao catboy@ms63.url.com.tw
Sun Apr 27 19:27:00 GMT 2003

Jonathan Larmour wrote:

> Gary D. Thomas wrote:
>> On Wed, 2003-04-23 at 11:24, Sung-Nan Yao wrote:
>>> Hi,
>>> After tracing the Linux code for H3800,
>>> I found the memory mapped I/O between the iPAQ H3800 and
>>> iPAQ H6000 is different.
>>> So I think some code in eCos won`t work on H3870.
>>> For example,
>>> the RS232_ON is different between them.
>>> In linux,
>>> #define H3800_ASIC1_GPIO_OUT    0x49001e68
>>> #define GPIO1_RS232_ON          (1  << 2)
>>> In eCos,
>>> #define EGPIOBase               0x49000000
>>> #define EGPIO_BITSY_RS232_ON    (1  << 7)
>>> In InitUART3 macro in eCos,it initializes the UART3.
>>> In the end of the macro,it turns on the RS232_ON by setting the 
>>> EGPIOBase.
>>> But in the linux,it sets the H3800_ASIC1_GPIO_OUT.
>>> So I change the EGPIOBase to 0x49001e68 and
>>> EGPIO_BITSY_RS232_ON to (1  << 7).
>>> In the test on my H3870,the Serial Port can work.
>>> Does anyone find the problem or do the porting?
>> As far as I know, no one has ever tried to get eCos/RedBoot running on
>> the 3870.
> Obviously if this is the only change required, and Sung-Nan can verify 
> this, then we want to know so we can add this support! Sung-Nan?
> Jifl 

This change is for serial port.
Its job just turns on the RS-232 chip.
And I use the bad way to do it.
I think there are many codes must be modified.

After tracing linux,
I guess that H3870 has two ASIC(application-specific integrated 
circuit)-ASIC1 and ASIC2.
The ASIC2 is connected to pin 1 in GPIO and ASIC1 is connected to ASIC2.
ASIC1 has one GPIO and ASIC2 has one GPIO and KPIO(keyboardPIO??).

H3600 has GPIO,EGPIO and microcontroller.

I think the ASIC2 is similar to microcontroller and
the ASIC1 is similar to EGPIO.

Below is a part of the memory mapped I/O in H3870 and I`m trying to 
modify these.
I`m just a beginner.If there is something wrong,please tell me.thanks.  ^_^

    address                                                 the name of 
the definiens in linux
0x4900 0000 	H3800_ASIC2_GPIODIR 	
0x4900 0004 	H3800_ASIC2_GPIINTTYPE 	
0x4900 0008 	H3800_ASIC2_GPIINTESEL 	
0x4900 000c 	H3800_ASIC2_GPIINTALSEL 	
0x4900 0010 	H3800_ASIC2_GPIINTCLR 	
0x4900 0010 	H3800_ASIC2_GPIINTFLAG 	
0x4900 0014 	H3800_ASIC2_GPIOPIOD 	
0x4900 0018 	H3800_ASIC2_GPOBFSTAT 	
0x4900 001c 	H3800_ASIC2_GPIINTSTAT 	
0x4900 003c 	H3800_ASIC2_GPIOALT 	
0x4900 0200 	H3800_ASIC2_KPIODIR 	
0x4900 0204 	H3800_ASIC2_KPIINTTYPE 	
0x4900 0208 	H3800_ASIC2_KPIINTESEL 	
0x4900 020c 	H3800_ASIC2_KPIINTALSEL 	
0x4900 0210 	H3800_ASIC2_KPIINTCLR 	
0x4900 0210 	H3800_ASIC2_KPIINTFLAG 	
0x4900 0214 	H3800_ASIC2_KPIOPIOD 	
0x4900 0218 	H3800_ASIC2_KPOBFSTAT 	
0x4900 021c 	H3800_ASIC2_KPIINTSTAT 	
0x4900 023c 	H3800_ASIC2_KPIOALT 	
0x4900 0400 	H3800_ASIC2_SPI_Control 	
0x4900 0404 	H3800_ASIC2_SPI_Data 	
0x4900 0408 	H3800_ASIC2_SPI_ChipSelectDisabled 	
*ASIC2 PWM_0* 	
0x4900 0600 	H3800_ASIC2_PWM_0_TimeBase 	
0x4900 0604 	H3800_ASIC2_PWM_0_PeriodTime 	
0x4900 0608 	H3800_ASIC2_PWM_0_DutyTime 	
*ASIC2 PWM_1* 	
0x4900 0700 	H3800_ASIC2_PWM_1_TimeBase 	
0x4900 0704 	H3800_ASIC2_PWM_1_PeriodTime 	
0x4900 0708 	H3800_ASIC2_PWM_1_DutyTime 	
*ASIC2 LED_0* 	
0x4900 0800 	H3800_ASIC2_LED_0_TimeBase 	
0x4900 0804 	H3800_ASIC2_LED_0_PeriodTime 	
0x4900 0808 	H3800_ASIC2_LED_0_DutyTime 	
0x4900 080c 	H3800_ASIC2_LED_0_AutoStopCount 	
*ASIC2 LED_1* 	
0x4900 0880 	H3800_ASIC2_LED_1_TimeBase 	
0x4900 0884 	H3800_ASIC2_LED_1_PeriodTime 	
0x4900 0888 	H3800_ASIC2_LED_1_DutyTime 	
0x4900 088c 	H3800_ASIC2_LED_1_AutoStopCount 	
*ASIC2 LED_2* 	
0x4900 0900 	H3800_ASIC2_LED_2_TimeBase 	
0x4900 0904 	H3800_ASIC2_LED_2_PeriodTime 	
0x4900 0908 	H3800_ASIC2_LED_2_DutyTime 	
0x4900 090c 	H3800_ASIC2_LED_2_AutoStopCount 	
*ASIC2 UART_0* 	
0x4900 0a00 	H3800_ASIC2_UART_0_Base 	
0x4900 0a00 	H3800_ASIC2_UART_0_RCVR 	
0x4900 0a00 	H3800_ASIC2_UART_0_XMIT 	
0x4900 0a04 	H3800_ASIC2_UART_0_IER 	
0x4900 0a08 	H3800_ASIC2_UART_0_IIR 	
0x4900 0a08 	H3800_ASIC2_UART_0_FCR 	
0x4900 0a0c 	H3800_ASIC2_UART_0_LCR 	
0x4900 0a10 	H3800_ASIC2_UART_0_MCR 	
0x4900 0a14 	H3800_ASIC2_UART_0_LSR 	
0x4900 0a18 	H3800_ASIC2_UART_0_MSR 	
0x4900 0a1c 	H3800_ASIC2_UART_0_SCR 	
0x4900 0a20 	H3800_ASIC2_UART_0_RSR 	
0x4900 0a00 	H3800_ASIC2_UART_0_DLL 	
0x4900 0a04 	H3800_ASIC2_UART_0_DLM 	
*ASIC2 UART_1* 	
0x4900 0c00 	H3800_ASIC2_UART_1_Base 	
0x4900 0c00 	H3800_ASIC2_UART_1_RCVR 	
0x4900 0c00 	H3800_ASIC2_UART_1_XMIT 	
0x4900 0c04 	H3800_ASIC2_UART_1_IER 	
0x4900 0c08 	H3800_ASIC2_UART_1_IIR 	
0x4900 0c08 	H3800_ASIC2_UART_1_FCR 	
0x4900 0c0c 	H3800_ASIC2_UART_1_LCR 	
0x4900 0c10 	H3800_ASIC2_UART_1_MCR 	
0x4900 0c14 	H3800_ASIC2_UART_1_LSR 	
0x4900 0c18 	H3800_ASIC2_UART_1_MSR 	
0x4900 0c1c 	H3800_ASIC2_UART_1_SCR 	
0x4900 0c20 	H3800_ASIC2_UART_1_RSR 	
0x4900 0c00 	H3800_ASIC2_UART_1_DLL 	
0x4900 0c04 	H3800_ASIC2_UART_1_DLM

Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

More information about the Ecos-discuss mailing list