はじめに
Digilentが提供している,Embedded Linux Hands-on Tutorial for the ZYBOをやってみました.
日本語情報としては,下記記事を参考にさせていただきました. Hands-on Tutorialだけでは初心者の私にはわかりづらい箇所は,ほとんど下記記事で補完されていました. 大変助かりました.
- FPGAの部屋 - ZYBO用のEmbedded Linux チュートリアル1(IPのアップグレード) 複数記事に渡り,スクリーンショットとともに丁寧に説明されています.
- Being a nerd engineer - Embedded Linux Hands-on Tutorial for the ZYBO をやってみた 作業ログ要約や,バグ修正後のファイルなどが提供されています.
- ippeiの日記 - zybo でlinux 最近の記事です.
開発環境
Hardware Customization, Generate BOOT.BIN
ZYBO Base System Designのカスタマイズ関係(1. Hardware Customization, 3. Generate BOOT.BIN)は,Windows環境で行いました.
OS | Microsoft Windows 7 Professional x64 Service Pack 1 |
---|---|
Vivado | Vivado 2014.4 WebPACK Edition (Windows) |
SDK | Xilinx SDK 2014.4 |
Compile U-Boot, Compile Linux Kernel以降
コンパイル環境については,Xilinx SDKを使用せず,PetaLinuxツールを使用しました. 参考にした上記記事との違いは,この点くらいです.
OS | Ubuntu 14.04 LTS 32bit |
---|---|
PetaLinuxツール | Zynq、MicroBlaze用 PetaLinux 2014.4 |
PetaLinuxツールのインストール
PetaLinuxツールをインストールしました.XilinxのWebサイトからFirefoxでダウンロードし,Installation Guideを参考にして,下記のようにコマンドを実行しました.
1 2 3 4 5 6 7 | ~$ mv ./ダウンロード /petalinux-v2014 .4-final-installer.run . ~$ chmod +x petalinux-v2014.4-final-installer.run ~$ sudo . /petalinux-v2014 .4-final-installer.run /opt 2>&1 | tee petalinux-v2014.4-final-installer.run.log ~$ cd /opt/petalinux-v2014 .4-final/ petalinux-v2014.4-final$ source settings.sh 2>&1 | tee ~ /settings .sh.log petalinux-v2014.4-final$ echo $PETALINUX /opt/petalinux-v2014 .4-final |
私の環境では,初回インストール時に下記メッセージが表示されてエラー終了しました.
1 2 3 4 5 6 7 | ~$ sudo . /petalinux-v2014 .4-final-installer.run /opt 2>&1 | tee petalinux-v2014.4-final-installer.run.log # 出力メッセージ一部省略 ERROR: You are missing the following system tools required by PetaLinux: - gawk Please check PetaLinux installation guide - required tools and libraries pacakge section for detailed information # 出力メッセージ一部省略 |
下記コマンドでgawkをインストールすることで解決しました.
1 | sudo apt-get install gawk |
インストール中,下記のような警告が表示されました. どうやら,MicroBlazeシステムにLinuxシステムのイメージをダウンロードするために必要のようです. 今回は関係ないと判断し,無視しました.
1 | WARNING: No tftp server found - please refer to "PetaLinux SDK Installation Guide" for its impact and solution |
作業ログ
1. Hardware Customization
上記の参考記事を読みながら進めました. 特に躓くことはなかったと思います. プロジェクトを開きなおすと「system_LEDs_4Bits_1.upgrade_log」が見つからないとのCritical Warningが出るので,プロジェクトから該当ファイルを削除しておきました.
2. Compile U-Boot
ここでも,特に躓くことはなかったと思います. Ubuntu上でのコマンド実行ログです.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ~$ cd /opt/petalinux-v2014 .4-final/ petalinux-v2014.4-final$ source settings.sh # 出力メッセージ省略 petalinux-v2014.4-final$ echo $PETALINUX # 出力メッセージ省略 petalinux-v2014.4-final$ cd ~ ~$ mkdir zybo_bsd_linux ~$ cd zybo_bsd_linux/ zybo_bsd_linux$ git clone -b master-next https: //github .com /DigilentInc/u-boot-Digilent-Dev .git # 出力メッセージ省略 zybo_bsd_linux$ cd u-boot-Digilent-Dev/ # 出力メッセージ省略 u-boot-Digilent-Dev$ make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config # 出力メッセージ省略 u-boot-Digilent-Dev$ make CROSS_COMPILE=arm-xilinx-linux-gnueabi- # 出力メッセージ省略 |
3. Generate BOOT.BIN
参考記事と重複しますが,注意点だけ書きます.
- workspaceのビルドが進まない FSBLプロジェクトを作成後,自動的にビルドが開始されますが,進捗率が79%のまま動かなくなってしまいました. ビルドを中断させてFSBLプロジェクトを削除し,Xilinx SDKを再起動して再試行すると上手くいきました.
- system.bitではなく,system_wrapper.bit Hands-on Tutorialの3.2.10ではsystem.bitになっていますが,system_wrapper.bitでした.
4. Compile Linux Kernel
Ubuntu上でのコマンド実行ログです.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ~$ cd /opt/petalinux-v2014 .4-final/ petalinux-v2014.4-final$ source settings.sh # 出力メッセージ省略 petalinux-v2014.4-final$ echo $PETALINUX # 出力メッセージ省略 petalinux-v2014.4-final$ cd ~ ~$ cd zybo_bsd_linux/ zybo_bsd_linux$ sudo apt-get install u-boot-tools # 出力メッセージ省略 zybo_bsd_linux$ git clone -b master-next https: //github .com /DigilentInc/Linux-Digilent-Dev .git # 出力メッセージ省略 zybo_bsd_linux$ cd Linux-Digilent-Dev/ Linux-Digilent-Dev$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- xilinx_zynq_defconfig Linux-Digilent-Dev$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- Linux-Digilent-Dev$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage |
5. Test Kernel Image with Pre-built File System
参考記事にしたがい,5.2.1のzynq-zybo.dtsの編集は実行しませんでした. また,ramdisk8M.image.gzはZedBoardのデザインから流用しました.
[追記 2015/01/25] ramdisk8M.image.gzは,下記リンクからwget (ダウンロード)してきた方が良さそうです. 下記で述べているような,Linux起動時の警告が出なくなります. 「yuki-sato.com - 7. Zynq RAMディスク」が参考になりました. ありがとうございます.
1 2 3 4 5 6 7 | ~$ cd zybo_bsd_linux/ zybo_bsd_linux$ wget http: //www .digilentinc.com /Data/Products/ZEDBOARD/ZedBoard_OOB_Design .zip zybo_bsd_linux$ unzip ZedBoard_OOB_Design.zip zybo_bsd_linux$ cp . /ZedBoard_OOB_Design/sd_image/ramdisk8M .image.gz . zybo_bsd_linux$ . /u-boot-Digilent-Dev/tools/mkimage -A arm -T ramdisk -c gzip -d . /ramdisk8M .image.gz uramdisk.image.gz zybo_bsd_linux$ cd Linux-Digilent-Dev Linux-Digilent-Dev$ . /scripts/dtc/dtc -I dts -O dtb -o .. /devicetree .dtb . /arch/arm/boot/dts/zynq-zybo .dts |
Linuxが起動しました!下記はTera Term上のログです. 228行目付近で警告が出ています.ramdisk8M.image.gzをZedBoardのデザインから流用したことが原因でしょう. この問題については,次回記事「ZYBOのFile System (ramdisk)を修正してみました」で解決しました.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | 0 Device: zynq_sdhci Manufacturer ID: 74 OEM: 4a45 Name: USD Tran Speed: 50000000 Rd Block Len: 512 SD version 3.0 High Capacity: Yes Capacity: 7.5 GiB Bus Width: 4-bit reading uEnv.txt ** Unable to read file uEnv.txt ** Copying Linux from SD to RAM... reading uImage 3819360 bytes read in 334 ms (10.9 MiB/s) reading devicetree.dtb 7442 bytes read in 16 ms (454.1 KiB/s) reading uramdisk.image.gz 3694172 bytes read in 325 ms (10.8 MiB/s) ## Booting kernel from Legacy Image at 03000000 ... Image Name: Linux-3.14.0-xilinx-13567-g906a2 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3819296 Bytes = 3.6 MiB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 02000000 ... Image Name: Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 3694108 Bytes = 3.5 MiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK ## Flattened Device Tree blob at 02a00000 Booting using the fdt blob at 0x2a00000 Loading Kernel Image ... OK Loading Ramdisk to 1f7a9000, end 1fb2ee1c ... OK Loading Device Tree to 1f7a4000, end 1f7a8d11 ... OK Starting kernel ... Uncompressing Linux... done, booting the kernel. [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 3.14.0-xilinx-13567-g906a2c9 (省略) (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-23) ) #1 SMP PREEMPT Thu Jan 22 20:59:00 JST 2015 [ 0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] Machine model: Xilinx Zynq [ 0.000000] bootconsole [earlycon0] enabled [ 0.000000] cma: CMA: reserved 128 MiB at 17400000 [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] PERCPU: Embedded 8 pages/cpu @dfb9e000 s10752 r8192 d13824 u32768 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 [ 0.000000] Kernel command line: console=ttyPS0,115200 root=/dev/ram rw earlyprintk [ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Memory: 371800K/524288K available (5133K kernel code, 319K rwdata, 1888K rodata, 206K init, 5339K bss, 152488K reserved, 0K highmem) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) [ 0.000000] vmalloc : 0xe0800000 - 0xff000000 ( 488 MB) [ 0.000000] lowmem : 0xc0000000 - 0xe0000000 ( 512 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) [ 0.000000] .text : 0xc0008000 - 0xc06e3a0c (7023 kB) [ 0.000000] .init : 0xc06e4000 - 0xc0717a00 ( 207 kB) [ 0.000000] .data : 0xc0718000 - 0xc0767d40 ( 320 kB) [ 0.000000] .bss : 0xc0767d4c - 0xc0c9eb88 (5340 kB) [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] RCU lockdep checking is enabled. [ 0.000000] Dump stacks of tasks blocking RCU-preempt GP. [ 0.000000] RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] ps7-slcr mapped to e0802000 [ 0.000000] zynq_clock_init: clkc starts at e0802100 [ 0.000000] Zynq clock init [ 0.000016] sched_clock: 64 bits at 325MHz, resolution 3ns, wraps every 3383112499200ns [ 0.008513] ps7-ttc #0 at e0804000, irq=43 [ 0.013573] Console: colour dummy device 80x30 [ 0.017911] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.025991] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.030015] ... MAX_LOCK_DEPTH: 48 [ 0.034187] ... MAX_LOCKDEP_KEYS: 8191 [ 0.038604] ... CLASSHASH_SIZE: 4096 [ 0.042959] ... MAX_LOCKDEP_ENTRIES: 16384 [ 0.047431] ... MAX_LOCKDEP_CHAINS: 32768 [ 0.051932] ... CHAINHASH_SIZE: 16384 [ 0.056376] memory used by lock dependency info: 3695 kB [ 0.061821] per task-struct memory footprint: 1152 bytes [ 0.067269] Calibrating delay loop... 1292.69 BogoMIPS (lpj=6463488) [ 0.110964] pid_max: default: 32768 minimum: 301 [ 0.116269] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.122807] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.137470] CPU: Testing write buffer coherency: ok [ 0.143774] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.149417] Setting up static identity map for 0x4deb20 - 0x4deb78 [ 0.155792] L310 cache controller enabled [ 0.159748] l2x0: 8 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x72760000, Cache size: 512 kB [ 0.240379] CPU1: Booted secondary processor [ 0.328292] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 [ 0.329296] Brought up 2 CPUs [ 0.342159] SMP: Total of 2 processors activated. [ 0.346860] CPU: All CPU(s) started in SVC mode. [ 0.354961] devtmpfs: initialized [ 0.365682] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 [ 0.380023] regulator-dummy: no parameters [ 0.393184] NET: Registered protocol family 16 [ 0.401929] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.415568] cpuidle: using governor ladder [ 0.419550] cpuidle: using governor menu [ 0.446536] syscon f8000000.ps7-slcr: regmap [mem 0xf8000000-0xf8000fff] registered [ 0.459089] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. [ 0.467267] hw-breakpoint: maximum watchpoint size is 4 bytes. [ 0.473438] zynq-ocm f800c000.ps7-ocmc: ZYNQ OCM pool: 256 KiB @ 0xe0880000 [ 0.544952] bio: create slab <bio-0> at 0 [ 0.554037] vgaarb: loaded [ 0.558501] SCSI subsystem initialized [ 0.564648] usbcore: registered new interface driver usbfs [ 0.570615] usbcore: registered new interface driver hub [ 0.576354] usbcore: registered new device driver usb [ 0.582915] media: Linux media interface: v0.10 [ 0.587742] Linux video capture interface: v2.00 [ 0.593338] pps_core: LinuxPPS API ver. 1 registered [ 0.598177] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.607731] PTP clock support registered [ 0.612599] EDAC MC: Ver: 3.0.0 [ 0.618915] Advanced Linux Sound Architecture Driver Initialized. [ 0.635057] DMA-API: preallocated 4096 debug entries [ 0.639893] DMA-API: debugging enabled by kernel config [ 0.645836] Switched to clocksource arm_global_timer [ 0.707882] NET: Registered protocol family 2 [ 0.714807] TCP established hash table entries: 4096 (order: 2, 16384 bytes) [ 0.722911] TCP bind hash table entries: 4096 (order: 5, 147456 bytes) [ 0.731113] TCP: Hash tables configured (established 4096 bind 4096) [ 0.737614] TCP: reno registered [ 0.740747] UDP hash table entries: 256 (order: 2, 20480 bytes) [ 0.746997] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes) [ 0.754516] NET: Registered protocol family 1 [ 0.760483] RPC: Registered named UNIX socket transport module. [ 0.766333] RPC: Registered udp transport module. [ 0.770994] RPC: Registered tcp transport module. [ 0.775723] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.783239] Trying to unpack rootfs image as initramfs... [ 0.790123] rootfs image is not initramfs (no cpio magic); looks like an initrd [ 0.821510] Freeing initrd memory: 3604K (df7a9000 - dfb2e000) [ 0.827672] hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available [ 0.841602] futex hash table entries: 512 (order: 3, 32768 bytes) [ 0.855309] jffs2: version 2.2. (NAND) (SUMMARY) c 2001-2006 Red Hat, Inc. [ 0.862864] msgmni has been set to 989 [ 0.868170] io scheduler noop registered [ 0.871976] io scheduler deadline registered [ 0.876515] io scheduler cfq registered (default) [ 0.900709] dma-pl330 f8003000.ps7-dma: Loaded driver for PL330 DMAC-2364208 [ 0.907677] dma-pl330 f8003000.ps7-dma: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16 [ 0.919825] e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 82, base_baud = 3125000) is a xuartps [ 0.929303] console [ttyPS0] enabled [ 0.929303] console [ttyPS0] enabled [ 0.936409] bootconsole [earlycon0] disabled [ 0.936409] bootconsole [earlycon0] disabled [ 0.947544] xdevcfg f8007000.ps7-dev-cfg: ioremap 0xf8007000 to e0866000 [ 0.957372] [drm] Initialized drm 1.1.0 20060810 [ 0.995475] brd: module loaded [ 1.017895] loop: module loaded [ 1.033602] m25p80 spi0.0: found s25fl128s1, expected n25q128 [ 1.040189] m25p80 spi0.0: s25fl128s1 (16384 Kbytes) [ 1.045214] 4 ofpart partitions found on MTD device spi0.0 [ 1.050922] Creating 4 MTD partitions on "spi0.0": [ 1.055660] 0x000000000000-0x000000400000 : "qspi-fsbl-uboot" [ 1.069039] 0x000000400000-0x000000900000 : "qspi-linux" [ 1.078943] 0x000000900000-0x000000920000 : "qspi-device-tree" [ 1.089592] 0x000000920000-0x000001000000 : "qspi-user" [ 1.108949] e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k [ 1.114704] e1000e: Copyright(c) 1999 - 2013 Intel Corporation. [ 1.126884] libphy: XEMACPS mii bus: probed [ 1.133208] xemacps e000b000.ps7-ethernet: pdev->id -1, baseaddr 0xe000b000, irq 54 [ 1.143729] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.150943] ehci-pci: EHCI PCI platform driver [ 1.156081] ULPI transceiver vendor/product ID 0x0424/0x0007 [ 1.161664] Found SMSC USB3320 ULPI transceiver. [ 1.166381] ULPI integrity check: passed. [ 1.171211] zynq-ehci zynq-ehci.0: Xilinx Zynq USB EHCI Host Controller [ 1.178687] zynq-ehci zynq-ehci.0: new USB bus registered, assigned bus number 1 [ 1.215958] zynq-ehci zynq-ehci.0: irq 53, io mem 0x00000000 [ 1.235908] zynq-ehci zynq-ehci.0: USB 2.0 started, EHCI 1.00 [ 1.248654] hub 1-0:1.0: USB hub found [ 1.252653] hub 1-0:1.0: 1 port detected [ 1.260691] usbcore: registered new interface driver usb-storage [ 1.269555] mousedev: PS/2 mouse device common for all mice [ 1.277214] i2c /dev entries driver [ 1.289700] zynq-edac f8006000.ps7-ddrc: ecc not enabled [ 1.295928] cpufreq_cpu0: failed to get cpu0 regulator: -19 [ 1.304355] Xilinx Zynq CpuIdle Driver started [ 1.310701] sdhci: Secure Digital Host Controller Interface driver [ 1.317065] sdhci: Copyright(c) Pierre Ossman [ 1.321340] sdhci-pltfm: SDHCI platform and OF driver helper [ 1.328580] mmc0: no vqmmc regulator found [ 1.332608] mmc0: no vmmc regulator found [ 1.375889] mmc0: SDHCI controller on e0100000.ps7-sdio [e0100000.ps7-sdio] using ADMA [ 1.388343] usbcore: registered new interface driver usbhid [ 1.395941] usbhid: USB HID core driver [ 1.408774] TCP: cubic registered [ 1.412021] NET: Registered protocol family 17 [ 1.417018] Registering SWP/SWPB emulation handler [ 1.424329] regulator-dummy: disabling [ 1.428776] drivers/rtc/hctosys.c: unable to open rtc device (rtc0) [ 1.438583] mmc0: new high speed SDHC card at address b368 [ 1.446898] mmcblk0: mmc0:b368 USD 7.45 GiB [ 1.456894] mmcblk0: p1 [ 1.462271] ALSA device list: [ 1.465168] No soundcards found. [ 1.470654] RAMDISK: gzip image found at block 0 [ 1.884229] EXT2-fs (ram0): warning: mounting unchecked fs, running e2fsck is recommended [ 1.892697] VFS: Mounted root (ext2 filesystem) on device 1:0. [ 1.899470] devtmpfs: mounted [ 1.902748] Freeing unused kernel memory: 204K (c06e4000 - c0717000) Starting rcS... ++ Mounting filesystem ++ Setting up mdev ++ Configure static IP 192.168.1.10 ++ Starting telnet daemon ++ Starting http daemon ++ Starting ftp daemon ++ Starting dropbear (ssh) daemon [ 2.676499] random: dropbear urandom read with 7 bits of entropy available ++ Starting OLED Display insmod: can't read '/lib/modules/3.14.0-xilinx-13567-g906a2c9/pmodoled-gpio.ko': No such file or directory ++ Exporting LEDs & SWs rcS Complete zynq> ls bin lib lost+found proc sys var dev licenses mnt root tmp etc linuxrc opt sbin usr zynq> |
6. Modify Device Tree and Compose Kernel Driver
Ubuntu上でのコマンド実行ログです.
1 2 3 4 5 6 7 8 9 10 | zybo_bsd_linux$ mkdir drivers zybo_bsd_linux$ cd drivers/ drivers$ vi Makefile # Hands-on Tutorialにしたがい,編集 drivers$ wget http: //nerdengineer .com /jp/resources/Blog_2014-08-19/myled .c drivers$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- drivers$ cp .. /Linux-Digilent-Dev/arch/arm/boot/dts/zynq-zybo .dts . drivers$ vi zynq-zybo.dts # Hands-on Tutorialにしたがい,編集 drivers$ .. /Linux-Digilent-Dev/scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb zynq-zybo.dts |
7. User Application
Ubuntu上でのコマンド実行ログです.
1 2 3 4 5 6 | zybo_bsd_linux$ mkdir user_app zybo_bsd_linux$ cd user_app/ user_app$ wget http: //nerdengineer .com /jp/resources/Blog_2014-08-19/led_blink .c user_app$ vi Makefile # Hands-on Tutorialにしたがい,編集 user_app$ make |
0 件のコメント:
コメントを投稿