Intel Edisonで最新のLinuxカーネルを起動する

世界へ#ArduinoD15 Day Intel Edisonボード(Arduino Edition)で最新のLinuxカーネルの構成と起動に関する資料を準備しました。



前に、バニラコアがIntel Galileoボードに確実にロードされるようにする方法について書きましたが、今はIntel Edisonの番です。





これまでのところ、バニラカーネルにはシリアルポートドライバがなく、事実上、ボードでの作業が不可能になっています。 今日、ttyサブシステムのメンテナーであるGreg KHは、Intel Edison High Speed UARTサポートをカーネルにもたらす変更を承認しました。 実際には、メインブランチでは、変更はバージョンv4.1-rc1でのみ表示されます。



それでは始めましょう。 記事「 Intel GalileoでのVanilla Coreの起動」で説明されているアクションの一部を再説明しないという事実にすぐに注意を喚起したいと思います。 また、Yoctoベースの標準ファームウェアを使用していると仮定しています。



カーネルとファイルシステムの準備



まず、ttyサブシステムリポジトリ のlinux-next リポジトリから簡単に取得できるカーネルが必要ですtty-next



ブランチが必要です




 mkdir ~/devel cd ~/devel git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git cd ~/devel/linux-next
      
      





デフォルトの構成、つまりarch / x86 / configs / i386_defconfigファイルに最小限の変更を加える必要があります 。 何らかの理由でこのファイルに触れたくない場合は、 cp arch/x86/configs/{i386,eds}_defconfig



を使用して簡単にコピーできます。この場合は、記事でi386_defconfigが記載されているeds_defconfigを使用します。



だから、それはそうだった(ファイルから行を削除する):

CONFIG_DRM_I915 = y



今(ファイルに行を追加):

#CONFIG_DRM_I915が設定されていません

CONFIG_BACKLIGHT_LCD_SUPPORT = y

CONFIG_USB_XHCI_HCD = y

CONFIG_USB_DWC3 = y

CONFIG_USB_DWC3_GADGET = y

CONFIG_GPIOLIB = y

CONFIG_GPIO_INTEL_MID = y

CONFIG_INTEL_MID_WATCHDOG = y

CONFIG_X86_EXTENDED_PLATFORM = y

CONFIG_X86_INTEL_MID = y

CONFIG_EFI_STUB = y

CONFIG_EARLY_PRINTK_EFI = y

CONFIG_HSU_DMA = y

CONFIG_HSU_DMA_PCI = y

CONFIG_SERIAL_8250_DMA = y

CONFIG_SERIAL_8250_PCI = y



この構成には、すぐにUSB、ウォッチドッグ、GPIO、HSUドライバーが含まれます。



受け取ったものを収集します。

 make i386_defconfig make -j4
      
      





結果は、ファイルarch / x86 / boot / bzImageです。



ファイルシステムのイメージを準備するプロセスは、Intel Edisonの場合は/ dev / ttyS2になる出力デバイスを除き、上記のプロセスと同じです。したがって、Buildroot構成パラメーターで指定する必要があります。

BR2_TARGET_GENERIC_GETTY_PORT = "ttyS2"



アセンブリの結果、ファイルoutput / images / rootfs.cpio.bz2を取得します。



結果をeMMCにコピーします





ファイル〜/ devel / linux / arch / x86 / boot / bzImageおよび

〜/ devel / buildroot / output / images / rootfs.cpio.bz2それぞれvmlinuz.efiおよびinitrdという名前でボードにコピーする必要があります。



最初にUSBを介してデバイスモードに切り替え、ケーブルを組み立てるコンピューターに接続することにより、ストックファームウェアでボードを起動します。 ボードを起動すると、コンピューターはUSBドライブデバイスを検出します。 これが必要なものです。 マップされたドライブのルートにファイルを直接コピーします。



U-Bootブートローダーの構成





ストーリーの最も興味深い部分は、U-Boot構成に書き込む必要がある魔法のラインです。 これが私たちがする必要があることです。

  1. 任意のキーを押して、ボードをU-Bootコマンドラインにダウンロードします。
  2. 次のように、いくつかの環境変数を追加します。

      boot_edsboot=zboot 0x100000 0 0x3000000 0x800000 bootargs_edsboot=console=tty1 console=ttyS2,115200n8 rootfstype=ramfs rw bootcmd_edsboot=setenv bootargs ${bootargs_edsboot}; run load_edsboot; run boot_edsboot load_edsboot=load mmc 0:9 0x100000 vmlinuz.efi; load mmc 0:9 0x3000000 initrd
          
          





    これは、 setenv



    コマンドを使用して行われます(詳細な例は、 こちらをご覧ください )。
  3. 既存の変更を損なわずに変更を保存します。

      setenv bootcmd_orig ${bootcmd} setenv bootcmd ${bootcmd_edsboot} saveenv
          
          





これで、たとえば次のコマンドでボードをダウンロードできます。

 run bootcmd
      
      





またはリセットボタンを押してください。



したがって、次を実行することでいつでも元の構成に戻ることができます。

 run bootcmd_orig
      
      







そしてそれだけです!



何が起こったのかを見る
buildrootへようこそ

buildrootログイン:root

#uname -a

Linux buildroot 4.0.0-rc5 +#1 SMP Fri Mar 27 15:15:28 EET 2015 i686 GNU / Linux



#lspci -kn

00:00.0 0600:8086:1170(rev 01)

00:01.0 0805:8086:1190(rev 01)

00:01.2 0805:8086:1190(rev 01)

00:01.3 0805:8086:1190(rev 01)

00:02.0 0380:8086:1182(rev 01)

00:04.0 0700:8086:1191(rev 01)

00:04.1 0700:8086:1191(rev 01)

使用中のカーネルドライバー:シリアル

00:04.2 0700:8086:1191(rev 01)

使用中のカーネルドライバー:シリアル

00:04.3 0700:8086:1191(rev 01)

使用中のカーネルドライバー:シリアル

00:05.0 0700:8086:1192(rev 01)

使用中のカーネルドライバー:hsu_dma_pci

00:06.0 0880:8086:1193(rev 01)

00:06.1 0880:8086:1193(rev 01)

00:07.0 0880:8086:1194(rev 01)

00:07.1 0880:8086:1194(rev 01)

00:07.2 0880:8086:1194(rev 01)

00:08.0 0780:8086:1195(rev 01)

00:08.1 0780:8086:1195(rev 01)

00:08.2 0780:8086:1195(rev 01)

00:08.3 0780:8086:1195(rev 01)

00:09.0 0780:8086:1196(rev 01)

00:09.1 0780:8086:1196(rev 01)

00:09.2 0780:8086:1196(rev 01)

00:0a.0 0780:8086:1197(rev 01)

00:0b.0 1080:8086:1198(rev 01)

00:0c.0 0880:8086:1199(rev 01)

使用中のカーネルドライバー:intel_mid_gpio

00:0d.0 0401:8086:119a(rev 01)

00:0e.0 0880:8086:119b(rev 01)

00:11.0 0c03:8086:119e(rev 01)

使用中のカーネルドライバー:dwc3-pci

00:12.0 1180:8086:119f(rev 01)

00:13.0 0b40:8086:11a0(rev 01)

使用中のカーネルドライバー:intel_scu_ipc

00:14.0 0b40:8086:11a1(rev 01)

00:15.0 0880:8086:11a2(rev 01)

00:16.0 0b40:8086:11a3(rev 01)

00:16.1 0b40:8086:11a4(rev 01)

00:17.0 0880:8086:11a5(rev 01)

00:18.0 0380:8086:11a6(rev 01)



#cat / proc / interrupts

CPU0 CPU1

15:0 0 IO-APIC 15-fasteoiウォッチドッグ

31:3 1 IO-APIC 31-fasteoi hsu_dma_pci

34:50 49 IO-APIC 34-fasteoi xhci-hcd:usb1

48:0 0 IO-APIC 48-fasteoi intel_scu_ipc

54:61 65 IO-APIC 54-fasteoiシリアル

...




All Articles