sciLogger用カーネル変更点

sciLogger用のカーネル変更点。出荷時にSDに入っているカーネルは変更済みです。

kernel config

spi1.0(=SPI1 CS0)を使うために、下記3つのオプションをOFFにしている。

Device Drivers
    SPI support
        User mode SPI device driver support

Device Drivers
    Input Device Support
        Touchscreens
            ADS7846/...

Device Drivers
    Graphics Support
        OMAP2+ Display Subsystem support (EXPERIMENTAL)
            OMAP2/3 Display Device Drivers
                LG. Philips LB035Q02 LCD Panel

board-overo.c

  • ファイルの場所
    ${OVEROTOP}/tmp/work/overo-angstrom-linux-gnueabi/linux-omap3-3.0-r103/git/arch/arm/mach-omap2
    

GPIO144をPIC DRDY信号の入力として使えるようにするために、他のデバイスに取られないようにする。

  • my-board-overo.patch
    1. diff --git git/arch/arm/mach-omap2/board-overo.c-orig git/arch/arm/mach-omap2/board-overo.c
    2. index e6d2441..57bfdec 100644
    3. --- git/arch/arm/mach-omap2/board-overo.c-orig
    4. +++ git/arch/arm/mach-omap2/board-overo.c
    5. @@ -668,7 +668,7 @@ static void __init overo_init(void)
    6. usbhs_init(&usbhs_bdata);
    7. overo_spi_init();
    8. overo_init_smsc911x();
    9. - overo_display_init();
    10. +// overo_display_init();
    11. overo_init_led();
    12. overo_init_keys();
    13. overo_opp_init();

omap2_mcspi.c

  • ファイルの場所
    ${OVEROTOP}/tmp/work/overo-angstrom-linux-gnueabi/linux-omap3-3.0-r103/git/drivers/spi
    

頻繁に下記のエラーメッセージが出るので抑制するため。

spike-ad spi1.0: DMA RX last word empty

  • my-omap2_mcspi.patch
    1. diff --git git/drivers/spi/omap2_mcspi.c-orig git/drivers/spi/omap2_mcspi.c
    2. index da981ee..4c9826b 100644
    3. --- git/drivers/spi/omap2_mcspi.c-orig
    4. +++ git/drivers/spi/omap2_mcspi.c
    5. @@ -430,7 +430,7 @@ omap2_mcspi_txrx_dma(struct spi_device *spi, struct spi_transfer *xfer)
    6. else /* word_len <= 32 */
    7. ((u32 *)xfer->rx_buf)[elements] = w;
    8. } else {
    9. - dev_err(&spi->dev, "DMA RX last word empty");
    10. +// dev_err(&spi->dev, "DMA RX last word empty");
    11. count -= (word_len <= 8) ? 1 :
    12. (word_len <= 16) ? 2 :
    13. /* word_len <= 32 */ 4;

board-overo.cにpatchを当てる手順

基本的に下記URLの手順で行う。

Gumstix kernel development
http://www.jumpnowtek.com/index.php?option=com_content&view=article&id=46:gumstix-kernel-dev&catid=35:gumstix&Itemid=54#_patching_board_file

目的のファイルがあるディレクトリに移動する。

  1. $ cd ${OVEROTOP}/tmp/work/overo-angstrom-linux-gnueabi/linux-omap3-3.0-r103/git/arch/arm/mach-omap2

ディレクトリ名の"""linux-omap3-3.0-r103"""の所は、kernelのvarsionによって変わるので注意。

ファイルをバックアップしておく。

  1. $ cp board-overo.c board-overo.c-orig

board-overo.cを編集して変更する。

編集が終わったら、diffでパッチを作る。

  1. $ cd ${OVEROTOP}/tmp/work/overo-angstrom-linux-gnueabi/linux-omap3-3.0-r103
  2. $ git diff --no-prefix git/arch/arm/mach-omap2/board-overo.c-orig \
  3. git/arch/arm/mach-omap2/board-overo.c > my-board-overo.patch

出来たパッチをrecipeの所にコピーする。

  1. $ cp my-board-overo.patch ${OVEROTOP}/org.openembedded.dev/recipes/linux/linux-omap3/overo

kernel recipeファイルで作ったパッチファイルを指定する。

  1. $ cd ${OVEROTOP}/org.openembedded.dev/recipes/linux
  2. $ <edit> linux-omap3_git.bb

下記のようにpatchファイルを指定する行を追加。

SRC_URI = "git://www.sakoman.com/git/linux-omap-2.6.git;branch=omap-3.0-pm;protocol=git \
	   file://defconfig \
           file://${BOOT_SPLASH} \
+           file://my-board-overo.patch \
           "

この変更で終わりならば、kernelビルドする。

  1. $ cd ${OVEROTOP}
  2. $ bitbake -c clean virtual/kernel; bitbake virtual/kernel

omap2_mcspi.c patch当てる手順

目的のファイルがあるディレクトリに移動する。

  1. $ cd ${OVEROTOP}/tmp/work/overo-angstrom-linux-gnueabi/linux-omap3-3.0-r103/git/drivers/spi

ファイルをバックアップしておく。

  1. $ cp omap2_mcspi.c omap2_mcspi.c-orig

board-overo.cを編集して変更する。

編集が終わったら、diffでパッチを作る。

  1. $ cd ${OVEROTOP}/tmp/work/overo-angstrom-linux-gnueabi/linux-omap3-3.0-r103
  2. $ git diff --no-prefix git/drivers/spi/omap2_mcspi.c-orig \
  3. git/drivers/spi/omap2_mcspi.c > my-omap2_mcspi.patch

出来たパッチをrecipeの所にコピーする。

  1. $ cp my-omap2_mcspi.patch ${OVEROTOP}/org.openembedded.dev/recipes/linux/linux-omap3/overo

kernel recipeファイルで作ったパッチファイルを指定する。

  1. $ cd ${OVEROTOP}/org.openembedded.dev/recipes/linux
  2. $ <edit> linux-omap3_git.bb

下記のようにpatchファイルを指定する行を追加。

SRC_URI = "git://www.sakoman.com/git/linux-omap-2.6.git;branch=omap-3.0-pm;protocol=git \
	   file://defconfig \
           file://${BOOT_SPLASH} \
           file://my-board-overo.patch \
+           file://my-omap2_mcspi.patch \
           "

この変更で終わりならば、kernelビルドする。

  1. $ cd ${OVEROTOP}
  2. $ bitbake -c clean virtual/kernel; bitbake virtual/kernel