スキップしてメイン コンテンツに移動

投稿

Zephyr build (4)

この記事で関係するターゲット $(TMP_ELF) ターゲット このターゲットは、アーキテクチャに関係なく実行される(x86依存ではない)。 [zephyr_base]/Makefile $(TMP_ELF): $(zephyr-deps) $(KBUILD_ZEPHYR_APP) linker.cmd $(KERNEL_NAME).lnk $(Q)$(CC) -T linker.cmd @$(KERNEL_NAME).lnk -o $@ $(TMP_ELF) 前の記事 参照。 $(zephyr-deps) TODO 後で調べる $(KBUILD_ZEPHYR_APP) 未定義 $(KERNEL_NAME).lnk zephyr.lnk $(KERNEL_NAME) については、 前の記事 参照。 $(Q)$(CC) -T linker.cmd @$(KERNEL_NAME).lnk -o $@ /Volumes/CrossToolNG/x-tools/i586-pc-elf/bin/i586-pc-elf-gcc -T linker.cmd @zephyr.lnk -o .tmp_zephyr.prebuilt リンカスクリプト (linker.cmd)、リンカオプション(zephyr.lnk)を使い、.tmp_zephyr.prebuilt を生成する。 linker.cmd [zephyr_base]/samples/hello_world/microkernel/outdir/linker.cmd 次の記事 参照 zephyr.lnk [zephyr_base]/Makefile 次の記事 参照

Zephyr build (3)

この記事で関係するターゲット staticIdt.o ターゲット [zephyr_base]/Makefile staticIdt.o: $(TMP_ELF) $(call cmd,gen_idt) $(TMP_ELF) $(TMP_ELF)は、.tmp_zephyr.prebuilt。 [zephyr_base]/Makefile TMP_ELF = .tmp_$(KERNEL_NAME).prebuilt $(call cmd,gen_idt) cmd_get_idt ファンクションを実行。 cmd_gen_idt ファンクション [zephyr_base]/Makefile cmd_gen_idt = \ ( \ $(OBJCOPY) -I $(OUTPUT_FORMAT) -O binary -j intList $ ① $(OBJCOPY) -I $(OUTPUT_FORMAT) -O binary -j intList $ /Volumes/CrossToolNG/x-tools/i586-pc-elf/bin/i586-pc-elf-objcopy -I elf32-i386 -O binary -j intList .tmp_zephyr.prebuilt isrList.bin objcopy --help i586-pc-elf-objcopy [option(s)] in-file [out-file] -I --input-target <bfdname> Assume input file is in format <bfdname> -O --output-target <bfdname> Create an output file in format <bfdname> -j --only-sec...

Zephyr build (2)

この記事で関係するターゲット qemu ターゲット [zephyr_base]/Makefile qemu: zephyr (省略) 詳細は 前の記事 参照。 zephyrターゲット [zephyr_base]/Makefile zephyr: $(zephyr-deps) $(KERNEL_BIN_NAME) $(zephyr-deps) [zephyr_base]/Makefile $(zephyr-deps) := $(KBUILD_LDS) $(KBUILD_ZEPHYR_MAIN) TODO 後で調べる $(KERNEL_BIN_NAME) zephyr.bin [zephyr_base]/samples/hello_world/microkernel/outdir/.config CONFIG_KERNEL_BIN_NAME="zephyr" TODO .config の生成方法(ct-ng makemenuconfigがベース?)、.config の Makefile中のinlcude箇所。 [zephyr_base]/Makefile KERNEL_NAME = $(subst $(DQUOTE),,$(CONFIG_KERNEL_BIN_NAME)) KERNEL_BIN_NAME = $(KERNEL_NAME).bin $(KERNEL_BIN_NAME) ターゲット [zephyr_base]/Makefile ifeq ($(ARCH),x86) $(KERNEL_ELF_NAME): staticIdt.o final-linker.cmd $(call cmd,lnk_elf) @$(WARN_ABOUT_ASSERT) else $(KERNEL_ELF_NAME): $(TMP_ELF) @cp $(TMP_ELF) $(KERNEL_ELF_NAME) @$(WARN_ABOUT_ASSERT) endif 今回は、ARCHがx86の場合を調べる。 staticIdt.o 次の記事 参照 final-linker.cmd TODO 調査 $(KERNEL_ELF_NAME) zephyr.elf [zephy...

Zephyr build (1)

qemu 実行 Zephyrのソースコードが展開されたディレクトリ(絶対パス)を、[zephyr_base]と記述する。 $ cd [zephyr_base]/samples/hello_world/microkernel $ QEMU_BIN_PATH=/usr/local/bin make BOARD=qemu_x86 qemu Using [zephyr_base] as source for kernel GEN ./Makefile CHK include/generated/version.h CHK misc/generated/configs.c CHK include/generated/offsets.h CHK misc/generated/sysgen/prj.mdef UPD misc/generated/sysgen/prj.mdef CC kernel/microkernel/k_task.o CC kernel/microkernel/k_idle.o CC kernel/microkernel/k_init.o CC kernel/microkernel/k_command_packet.o CC kernel/microkernel/k_move_data.o CC kernel/microkernel/k_ticker.o CC kernel/microkernel/k_memory_map.o CC kernel/microkernel/k_memory_pool.o CC kernel/microkernel/k_nop.o CC kernel/microkernel/k_offload.o CC kernel/microkernel/k_event.o CC kernel/microkernel/k_mailbox.o CC kernel/microkernel/k_mutex.o CC kernel/microkernel/k_fifo.o CC...

Zephyr make qemu error

環境 MacBook Air Mid 2013 (OS X 10.11.6) Zephyr Kernel v1.4.0 参考 https://www.zephyrproject.org/doc/getting_started/installation_mac.html (1) ツールチェインのビルドエラー1 エラー $ ct-ng build [INFO ]  Performing some trivial sanity checks [ERROR]  Your file system in '/Volumes/CrossToolNG/build/.build' is *not* case-sensitive! [ERROR] [ERROR]  >> [ERROR]  >>  Build failed in step '(top-level)' [ERROR]  >> [ERROR]  >>  Error happened in: CT_Abort[scripts/functions@329] [ERROR]  >>        called from: CT_TestAndAbort[scripts/functions@351] [ERROR]  >>        called from: main[scripts/crosstool-NG.sh@93] [ERROR]  >> [ERROR]  >>  For more info on this error, look at the file: 'build.log' [ERROR]  >>  There is a list of known issues, some with workarounds, in: [ERROR]  >>      '/usr/local/Cellar/crossto...