Posts Tagged ‘s3c2440’

Android on MINI2440

我今天把网友编译好的Android修改好,主要是修改8寸屏幕的定义部分而已,放到我的MINI2440上运行了一下,能显示菜单能动作,就是速度那简直是太慢了,应该是和8寸屏幕有关系,或许三寸屏幕要好一些。没办法玩了。

最近试了试基于Linux的GUI,结论如下:XFCE相当慢无法用;GNOME Mobile也很慢;Enlightenment还凑合,只是运行其他程序就慢很多了;Android在我的八寸屏幕上无法用,截图我就不发了。

现在就只有耐心的等待友善出WINCE6的BSP了,否则只好弄个WINCE5的系统来玩玩。Linux恐怕还是最好玩玩控制台算了。呵呵。

当然,主要是我的目标太高了,想做个类似于MID的系统,但64M的RAM和400M的CPU,恐怕是有点遗憾呢。

HP 1937拆解

看图,懒得说了~呵呵,人太懒了

中断控制器操作实例:外部中断

注:本源代码修改自《嵌入式Linux应用开发完全手册》第9章例程,以适用于友善之臂的MINI2440开发板。
整个程序需要关注的是按键的EINT位。由于MIN2440开发板的K1-K4使用的是EINT8、EINT11、EINT13、EINT14,所以必须要修改int.c对应的#define为:

/*
 * K1-K4对应GPG0、GPG3、GPG5、GPG6
 */
#define GPG0_eint    (2<<(0*2))		//EINT8
#define GPG3_eint    (2<<(3*2))		//EINT11
#define GPG5_eint    (2<<(5*2))		//EINT13
#define GPG6_eint    (2<<(6*2))		//EINT14

由于EINT位置不同,所以初始化irq的时候也需要进行修改,重点是EINTMASK寄存器的值。由于四个中断都连接在ARBITER1的REQ1,所以四个中断优先级相同:

/*
 * 初始化GPIO引脚为外部中断
 * GPIO引脚用作外部中断时,默认为低电平触发、IRQ方式(不用设置INTMOD)
 */
void init_irq( )
{
    GPGCON  =  GPG0_eint | GPG3_eint | GPG5_eint | GPG6_eint;

    // 对于EINT8,11,13,14需要在EINTMASK寄存器中使能它们
    EINTMASK &= (~(1<<8)) & (~(1<<11)) & (~(1<<13)) & (~(1<<14));

    //EINT8,11,13,14优先级相同
    PRIORITY = 0x00 ;

    // EINT8,11,13,14使能
    INTMSK   &= (~(1<<5));
}

另外还需要修改的地方时interrupt.c中中断处理函数。由于这几个中断对应于INTPND的寄存器位[5],所以还得用EINTPEND来区分到底是那个中断源。

void EINT_Handle()
{
    unsigned long oft = INTOFFSET;
    unsigned long val;

    switch( oft )
    {
        case 5:
        {
            GPBDAT |= (0x0f<<5);   // 所有LED熄灭

            val = EINTPEND;
            if (val & (1<<8))
            	GPBDAT &= ~(1<<5);	//按K1 LED1亮
            if (val & (1<<11))
            	GPBDAT &= ~(1<<6);	//按K2 LED2亮
            if (val & (1<<13))
            	GPBDAT &= ~(1<<7);	//按K3 LED3亮
            if (val & (1<<14))
            	GPBDAT &= ~(1<<8);  //按K4 LED4亮

            if ((val & (1<<8)) && (val & (1<<11))) GPBDAT = 1;	//同时按K1K2,所有灯都两

            break;
        }

        default:
            break;
    }

    //清中断
    if( oft == 5 )
        EINTPEND = (1<<8) | (1<<11) | (1<<13) | (1<<14);   // EINT8_23合用IRQ5
    SRCPND = 1<

这样修改以后,就可以实现中断的正确响应了。
完整代码下载:

  Mini2440_Intrupt (3.4 KiB, 192 hits)

1
Return top