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):
- - 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)
函数的内容注释掉
完毕
编译,下载到开发板试试