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

これまでのところ、バニラカーネルにはシリアルポートドライバがなく、事実上、ボードでの作業が不可能になっています。 今日、ttyサブシステムのメンテナーであるGreg KHは、Intel Edison High Speed UARTサポートをカーネルにもたらす変更を承認しました。 実際には、メインブランチでは、変更はバージョンv4.1-rc1でのみ表示されます。
それでは始めましょう。 記事「 Intel GalileoでのVanilla Coreの起動」で説明されているアクションの一部を再説明しないという事実にすぐに注意を喚起したいと思います。 また、Yoctoベースの標準ファームウェアを使用していると仮定しています。
カーネルとファイルシステムの準備
まず
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構成に書き込む必要がある魔法のラインです。 これが私たちがする必要があることです。
- 任意のキーを押して、ボードをU-Bootコマンドラインにダウンロードします。
- 次のように、いくつかの環境変数を追加します。
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
コマンドを使用して行われます(詳細な例は、 こちらをご覧ください )。 - 既存の変更を損なわずに変更を保存します。
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シリアル
...
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シリアル
...