skyeye install

(一)skyeye install:

sudo apt-get install  libxft-dev libx11-dev libxpm-dev

sudo apt-get install libncurses5-dev

./configure
make lib
make
sudo make install_lib
sudo make install

 

(二)dowload  arm-linux-gcc

需要注意的是gcc最好使用友善之臂的4.4.3(http://arm9download.cncncn.com/mini2440/linux/arm-linux-gcc-4.4.3-20100728.tar.gz ),传说中这个版本编译QT时能避免所有的Segmentation Fault

 

#tar -jxvf  arm-linux-gcc-4.4.3-20100728.tar.gz

  # cd .........

  #cp -rv .... /usr/local/
  现在交叉编译程序集都在........../4.4.3/bin下面了

vi /etc/bash.bashrc

export PATH=$PATH:/usr/local/arm/4.4.3/bin
export PATH

 

更新

source bash.bashrc

(三)compile linux kernel supporting LCD, touchmonitor

先下载linux-2.6.36.tar.bz2(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2 sudo tar jxvf linux-2.6.36.tar.bz2

使用tar命令时为什么会有“不允许的操作":权限不够,你用root操作应该就不会了。另外在解包时放在linux分区上,不要在win分区下。
win分区不支持符号链接。

 

 tar jxvf linux-2.6.36.tar.bz2

2. cd linux-2.6.36/

3. gedit arch/arm/mach-s3c2410/include/mach/memory.h &
    将:
#define PHYS_OFFSET    UL(0x30000000)
    修改成:
#define PHYS_OFFSET    UL(0xC0000000)

4. gedit arch/arm/mach-s3c2410/include/mach/map.h &
    将:
#define S3C2410_CS6 (0x30000000)
    修改成:
#define S3C2410_CS6 (0xC0000000)

5. gedit arch/arm/mach-s3c2410/include/mach/smdk2410.h &
    在文件中添加以下内容:
#ifndef _INCLUDE_SMDK2410_H_
#define _INCLUDE_SMDK2410_H_

#include <generated/autoconf.h>

#define pSMDK2410_ETH_IO __phys_to_pfn(0x19000000)
#define vSMDK2410_ETH_IO S3C2410_ADDR(0xE0000000)
#define SMDK2410_ETH_IRQ IRQ_EINT9

#define pSMDK2410_TS_IO __phys_to_pfn(0x19100000)
#define vSMDK2410_TS_IO S3C2410_ADDR(0xE0100000)
#define SMDK2410_TS_IRQ IRQ_EINT19

#endif // _INCLUDE_SMDK2410_H_

6. gedit arch/arm/mach-s3c2410/mach-smdk2410.c &
    添加以下内容:
#include <mach/smdk2410.h>
#include <mach/regs-lcd.h>
#include <mach/fb.h>

static struct s3c2410fb_display s3c2410_lcd_cfg __initdata = {
    .type = S3C2410_LCDCON1_TFT,
 
    .lcdcon5    = S3C2410_LCDCON5_FRM565 |
                  S3C2410_LCDCON5_INVVLINE |
                  // S3C2410_LCDCON5_INVVCLK |
                  S3C2410_LCDCON5_INVVFRAME |
                  // S3C2410_LCDCON5_INVLEND|
                 S3C2410_LCDCON5_PWREN |
                  S3C2410_LCDCON5_HWSWP,

   .width       = 320,
   .height        = 240,
   .xres        = 320,
   .yres        = 240,
   .bpp            = 16,

    .pixclock     = 100000,
    .left_margin  = 13,
    .right_margin = 8,
    .hsync_len    = 4,
    .upper_margin = 2,
    .lower_margin = 7,
    .vsync_len    = 4,
};

static struct s3c2410fb_mach_info s3c2410_lcd_info __initdata = {
    .displays=     &s3c2410_lcd_cfg,
    .num_displays=     1,
    .default_display= 0,
 
    .gpcup=         0xffffffff,
    .gpcup_mask=    0xffffffff,
    .gpccon=        0xaaaaaaaa,
    .gpccon_mask=   0xffffffff,
    .gpdup  =       0xFFFFFFFF,
    .gpdup_mask=    0xffffffff,
    .gpdcon=        0xaaaaaaaa,
    .gpdcon_mask=   0xffffffff,

    .lpcsel=     0,// ((0xCE6) & ~7) | 1<<4,
};

    在smdk2410_iodesc的定义中添加以下内容:
  /* Map the ethernet controller CS8900A */
  {vSMDK2410_ETH_IO,pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE},
  /* Map the touchscreen controller SKYEYE */
  {vSMDK2410_TS_IO,pSMDK2410_TS_IO, SZ_1M, MT_DEVICE},

    在smdk2410_init的定义中s3c_i2c0_set_platdata(NULL);这一句的下面添加:
    s3c24xx_fb_set_platdata(&s3c2410_lcd_info);

7. gedit arch/arm/plat-s3c24xx/common-smdk.c &
    将结构定义mtd_partition smdk_default_nand_part由:
static struct mtd_partition smdk_default_nand_part[] = {
    [0] = {
        .name    = "Boot Agent",
        .size    = SZ_16K,
        .offset    = 0,
    },
    [1] = {
        .name    = "S3C2410 flash partition 1",
        .offset = 0,
        .size    = SZ_2M,
    },
    [2] = {
        .name    = "S3C2410 flash partition 2",
        .offset = SZ_4M,
        .size    = SZ_4M,
    },
    [3] = {
        .name    = "S3C2410 flash partition 3",
        .offset    = SZ_8M,
        .size    = SZ_2M,
    },
    [4] = {
        .name    = "S3C2410 flash partition 4",
        .offset = SZ_1M * 10,
        .size    = SZ_4M,
    },
    [5] = {
        .name    = "S3C2410 flash partition 5",
        .offset    = SZ_1M * 14,
        .size    = SZ_1M * 10,
    },
    [6] = {
        .name    = "S3C2410 flash partition 6",
        .offset    = SZ_1M * 24,
        .size    = SZ_1M * 24,
    },
    [7] = {
        .name    = "S3C2410 flash partition 7",
        .offset = SZ_1M * 48,
        .size    = SZ_16M,
    }
};
改成:
static struct mtd_partition smdk_default_nand_part[] = {
    [0] = {
        .name    = "S3C2410 flash partition 1",
        .offset = 0,
        .size    = SZ_32M,
    },
    [1] = {
        .name    = "S3C2410 flash partition 2",
        .offset = SZ_32M,
        .size    = SZ_32M,
    }/*,
    [2] = {
        .name    = "S3C2410 flash partition 2",
        .offset = SZ_4M,
        .size    = SZ_4M,
    },
    [3] = {
        .name    = "S3C2410 flash partition 3",
        .offset    = SZ_8M,
        .size    = SZ_2M,
    },
    [4] = {
        .name    = "S3C2410 flash partition 4",
        .offset = SZ_1M * 10,
        .size    = SZ_4M,
    },
    [5] = {
        .name    = "S3C2410 flash partition 5",
        .offset    = SZ_1M * 14,
        .size    = SZ_1M * 10,
    },
    [6] = {
        .name    = "S3C2410 flash partition 6",
        .offset    = SZ_1M * 24,
        .size    = SZ_1M * 24,
    },
    [7] = {
        .name    = "S3C2410 flash partition 7",
        .offset = SZ_1M * 48,
        .size    = SZ_16M,
    }*/
};

将:
static struct s3c2410_nand_set smdk_nand_sets[] = {
    [0] = {
        .name        = "NAND",
        .nr_chips    = 1,
        .nr_partitions    = ARRAY_SIZE(smdk_default_nand_part),
        .partitions    = smdk_default_nand_part,
    },
};
改成:
static struct s3c2410_nand_set smdk_nand_sets[] = {
    [0] = {
        .name        = "NAND",
        .nr_chips    = 1,
        .disable_ecc    = 1,
        .nr_partitions    = ARRAY_SIZE(smdk_default_nand_part),
        .partitions    = smdk_default_nand_part,
    },
};

8. gedit arch/arm/plat-samsung/time.c &
    将函数s3c2410_timer_setup中的:
    if (tcnt > TICK_MAX) {
    修改成:
    if (tcnt > 0xffffffff) {

9. 下载cs8900驱动(http://blog.csdn.net/Matrix_Designer/archive/2010/12/09/6065055.aspx ),然后:
cp cs8900.h drivers/net/arm/
cp cs8900.c drivers/net/arm/

10. gedit drivers/net/arm/Kconfig &
    在文件最后添加以下内容:
config ARM_CS8900
        tristate "CS8900 support"
        depends on NET_ETHERNET && ARM && ARCH_SMDK2410
        help
          Support for CS8900A chipset based Ethernet cards. If you have a network
          (Ethernet) card of this type, say Y and read the Ethernet-HOWTO, available
          from as well as .To compile this driver as a module, choose M here and read.
          The module will be called cs8900.o.

11. gedit drivers/net/arm/Makefile &
    在文件最后添加以下内容:
obj-$(CONFIG_ARM_CS8900)     += cs8900.o


12. 下载TouchScreen驱动(http://blog.csdn.net/Matrix_Designer/archive/2010/12/09/6065713.aspx ),然后:
cp skyeye_ts_drv.h drivers/input/touchscreen/
cp skyeye_ts_drv.c drivers/input/touchscreen/

13. gedit drivers/input/touchscreen/Kconfig &
在if INPUT_TOUCHSCREEN的下面添加以下内容:
config TOUCHSCREEN_SKYEYE
    tristate "SkyEye Touch Screen support"
    depends on INPUT && INPUT_TOUCHSCREEN
    help
      Support for skyeye based touchscreen. If you build the kernel
          for skyeye, and want to use the touchscreen, say Y. To compile
          this driver as a module, choose M here and read.
          The module will be called skyeye_ts_drv.o.

14. gedit drivers/input/touchscreen/Makefile &
在文件最后添加以下内容:
obj-$(CONFIG_TOUCHSCREEN_SKYEYE)    += skyeye_ts_drv.o

15. make ARCH=arm CROSS_COMPILE=arm-linux- s3c2410_defconfig

16. make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
      将Boot options->Default kernel command string改成mem=64M console=ttySAC0 root=/dev/ram initrd=0xC0800000,0x01000000 ramdisk_size=16384 rw
      选中Kernel Features->Use the ARM EABI to compile the kernel
      取消Device Drivers->Character devices->Serial drivers->8250/16550 and compatible serial support
      选中Device Drivers->Graphics support->Logo configuration->Bootup logo
      选中Device Drivers->Input device support->Event Debugging
      选中Device Drivers->Input device support->Touchscreens->SkyEye Touch Screen support
      选中Device Drivers->Network device support->Ethernet (10 or 100Mbit)->CS8900 support
      修改Device Drivers->Block devices下的几个值:
            (1) Default number of RAM disks
            (16384) Default RAM disk size (kbyte)
      选中Device Drivers->Memory Technology Device(MTD) support->Mapping drivers for chip access->Flash device in physical memory map
      选中Device Drivers->Memory Technology Device(MTD) support->Mapping drivers for chip access->Flash device in physical memory map->Physmap compat support
      修改Device Drivers->Memory Technology Device(MTD) support->Mapping drivers for chip access->Flash device in physical memory map->Physmap compat support下的几个值:
            (0x80000000) Physical start address of flash mapping
            (0x2000000) Physical length of flash mapping
            (4) Bank width in octets
      取消File System->Network File System->Root file system on NFS
      选中File System->Network File System->NFS client support for NFS version 4
      选中File System->Network File System->NFS client support for NFSv4.1 (EXPERIMENTAL)

17. make ARCH=arm CROSS_COMPILE=arm-linux-

至此,linux2.6.36编译完成,此内核支持cs8900网卡、LCD和触摸屏。

你可能感兴趣的:(skyeye install)