Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300659
  • 博文数量: 60
  • 博客积分: 1451
  • 博客等级: 上尉
  • 技术积分: 710
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-23 23:55
文章分类

全部博文(60)

文章存档

2017年(9)

2014年(1)

2013年(1)

2011年(9)

2010年(35)

2009年(5)

我的朋友

分类:

2010-11-18 18:51:58

1、下载TI官方最新内核,解压
 

Download and install the Linux kernel

The Linux kernel is installed using the following steps:

  • Download the PSP product installer "OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin" from the link near the bottom of this page (under the "Linux Platform Support Package [PSP]" heading):

  • Install the PSP release.
- Type ./OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin in a working directory on the Linux host.
[your_path]$ ./OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin
- If the above command does not work, make sure that the installation package has executable rights. In Ubuntu it may be copied without executable rights. Change them using the "chmod" command:
[your_path]$ ls -ghn
-rw-r--r-- 1 1000 191M 2009-12-14 11:48 OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin
[your_path]$ sudo chmod 777 OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin 
[your_path]$ls -gnh
-rwxrwxrwx 1 1000 191M 2009-12-14 11:48 OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin
- Now try again and the installer should run using the above command:
[your_path]$ ./OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin
- In in some Ubuntu configurations, if trying to open the installer from the file folder, the extention ".bin" may need to be removed to be able to run the installer.
- The installer will create the directory "OMAP35x-PSP-SDK-02.01.03.11".
  • Copy the linux kernel linux-02.1.03.11.tar.gz which is located under the folder “OMAP35x-PSP-SDK-02.01.03.11/src/kernel/” to the folder "$HOME/v2.01.03.11-WL6.1.3.1/software/sources/common/kernel_src/"
[OMAP35x-PSP-SDK-02.01.03.11]$ cp src/kernel/linux-02.01.03.11.tar.gz $HOME/v2.01.03.11-WL6.1.3.1/software/sources/common/kernel_src/
  • Verify the content using the following terminal command:
[your_path]$ cd v2.01.03.11-WL6.1.3.1/software/sources/common/kernel_src
[kernel_src]$ ls
-rw-r--r-- 1 1000 70M 2009-09-14 03:27 linux-02.01.03.11.tar.gz
[kernel_src]$

Installing the tool chain

The toolchain needed to compile the WLAN and the Bluetooth package is "arm-2007q3" by codesourcery.
Follow the next steps to install the toolchain:

  • The arm-2007q3 can be downloaded from
  • Copy the arm-2007q3 tar file to "sources" folder,

From the terminal the source folder looks like the following:

[sources]$ ls -ghn
-rw-r--r--  1 1000  93M 2009-12-15 16:51 arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
drwxr-xr-x 11 1000 4.0K 2009-12-14 14:56 common
drwxr-xr-x  8 1000 4.0K 2009-12-10 16:32 arm-2007q3
-rwxrwxrwx  1 1000  55K 2009-12-02 09:05 WL1271Build.sh
-rw-r--r--  1 1000 214K 2009-11-30 08:16 MS_TI_WL1271_Build_Instructions_Guide.doc
[sources]$
  • Extract the tar file using the folowing command, it will generate a folder name arm-2007q3:
[sources]$ tar -xjf arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
2、下载天漠科技最新内核补丁
 
打上补丁:
#cd linux-02.01.03.11
#patch -p1 > ../linux-02.01.03.11-devkit8000-2.patch
 
3、修改内核使支持DVI输出
a.
参考board-omap3beagle.c
修改board-omap3devkit8000.c,添加以下代码:
在#define ENABLE_VAUX2_DEV_GRP 0x20后面添加:
#define ENABLE_VDAC_DEDICATED 0x03
#define ENABLE_VDAC_DEV_GRP 0x20
#define ENABLE_VPLL2_DEDICATED 0x05
#define ENABLE_VPLL2_DEV_GRP 0xE0
#define TWL_PWMA_PWMAON         0x00
#define TWL_PWMA_PWMAOFF        0x01

static struct omap_display_data omap3_evm_display_data_lcd = {
        .type = OMAP_DISPLAY_TYPE_DPI,
        .name = "lcd",
        .panel_name = "panel-generic",
        .u.dpi.data_lines = 24,
        .panel_enable = omap3_evm_panel_enable_lcd,
        .panel_disable = omap3_evm_panel_disable_lcd,
};
后面添加:
static int omap3_evm_panel_enable_dvi(struct omap_display *display)
{
 if (lcd_enabled) {
  return -EINVAL;
 }
 
 if (omap_rev() > OMAP3430_REV_ES1_0) {
  twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
   ENABLE_VPLL2_DEDICATED, TWL4030_PLL2_DEDICATED);
  twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
   ENABLE_VPLL2_DEV_GRP, TWL4030_VPLL2_DEV_GRP);
  twl4030_i2c_write_u8(TWL4030_MODULE_LED, 0x10, TWL4030_LED_EN);
  twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, 70, TWL_PWMA_PWMAOFF);
 }
 twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80,
   REG_GPIODATADIR1);
 twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80,
   REG_GPIODATAOUT1);
 dvi_enabled = 1;
 return 0;
}
static void omap3_evm_panel_disable_dvi(struct omap_display *display)
{
 if (omap_rev() > OMAP3430_REV_ES1_0) {
  twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0,
    TWL4030_PLL2_DEDICATED);
  twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0,
    TWL4030_VPLL2_DEV_GRP);
  twl4030_i2c_write_u8(TWL4030_MODULE_LED, 0x11, TWL4030_LED_EN);
  twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, 0, TWL_PWMA_PWMAOFF);
 }
 twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x00,
   REG_GPIODATADIR1);
 twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x00,
   REG_GPIODATAOUT1);
 dvi_enabled = 0;
}
static struct omap_display_data omap3_evm_display_data_dvi = {
 .type = OMAP_DISPLAY_TYPE_DPI,
 .name = "dvi",
 .panel_name = "panel-generic",
 .u.dpi.data_lines = 24,
 .panel_enable = omap3_evm_panel_enable_dvi,
 .panel_disable = omap3_evm_panel_disable_dvi,
};
在omap3_evm_panel_enable_tv和omap3_evm_panel_disable_tv里面添加如下代码:
static int omap3_evm_panel_enable_tv(struct omap_display *display)
{
        #if defined(CONFIG_TWL4030_CORE)
 twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
   ENABLE_VDAC_DEDICATED, TWL4030_VDAC_DEDICATED);
 twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
   ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP);
#endif
 return 0;
}
static void omap3_evm_panel_disable_tv(struct omap_display *display)
{
#if defined(CONFIG_TWL4030_CORE)
 twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00,
   TWL4030_VDAC_DEDICATED);
 twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00,
   TWL4030_VDAC_DEV_GRP);
#endif
}
 
修改
static struct omap_dss_platform_data omap3_evm_dss_data = {
        .num_displays = 2,
        .displays = {
                &omap3_evm_display_data_lcd,
                &omap3_evm_display_data_tv,
        }
};
为:
static struct omap_dss_platform_data omap3_evm_dss_data = {
        .num_displays = 3,
        .displays = {
                &omap3_evm_display_data,
  &omap3_evm_display_data_dvi,
                &omap3_evm_display_data_tv,
        }
};
b.
注释drivers\char\vt.c里面的blank_screen_t函数的代码:
static void blank_screen_t(unsigned long dummy)
{
/*
 if (unlikely(!keventd_up())) {
  mod_timer(&console_timer, jiffies + blankinterval);
  return;
 }
 blank_timer_expired = 1;
 schedule_work(&console_work);*/
}
c.
修改drivers\video\console\fbcon.c去掉LOGO闪动光标:
static void fb_flashcursor(struct work_struct *work)
函数
static void fbcon_cursor(struct vc_data *vc, int mode)
函数的内容注释掉
 
完毕
编译,下载到开发板试试
 
 
 
 
阅读(2122) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~