embeddedはじめにZephyrのdriverを作る方法を学びます。driverを写経します。zephyr/drivers/serial/uart_stellaris.c全体で700行くらいなので、全てを単純に写経する、というよりポイントを押さえて行きたいと思います。進め方qemu_cortex_m3のボード定義をコピーして、UARTだけ、自作driverに差し替えます。テスト用アプリケーションプロジェクトの準備まずは、テスト用のアプリケーションプロジェクトとして、hello_worldをベースとします。zephyr/samples/hello_worldレポジトリのboardファイルを直接編集したくないため、プロジェクト内にboardファイルを作成します。boards/arm/CMakeLists.txtを編集して、プロジェクト下のボードファイルを見に行くようにします。qemu_cortex_m3)defconfigの修正qemu_cortex_m3をターゲットにすると、UARTのdriverは、stellarisというデバイスのdriverを使います。driverに変更していきます。CONFIG_UART_STELLARIS=yCONFIG_UART_MY_UART=yこれで、存在しない機能を有効化したため、ビルドが通らなくなるはず。symbolとなり、ビルドが通りません。Kconfigの追加ビルドが通るように、自作UARTのKconfigを追加します。"drivers/serial/Kconfig.my_uart"ベースとするstellarisのKconfigをコピーします。Kconfig.my_uartKconfig.my_uartを編集します。STELLARISとなっている部分を、MY_UARTに置換します。symbolが解決されます。ビルドプロセスが少し先に進み、次のエラーが発生します。files.my_uartに、何らかのソースファイルを紐づける必要があるようです。stellarisのソースファイルを紐づけるとして、どこでソースファイルの紐づけを行っているか調べます。uart_altera_jtag_hal.c)zephyr_library_sources_if_kconfig(uart_imx.c)zephyr_library_sources_if_kconfig(uart_cc32xx.c)zephyr_library_sources_if_kconfig(uart_cmsdk_apb.c)...zephyr_library_sources_if_kconfig(usart_sam.c)zephyr_library_sources_if_kconfig(uart_stellaris.c)zephyr_library_sources_if_kconfig(uart_stm32.c)...CONFIG_XXXXのXXXX部分と対応した名前のソースコードを指定します。uart_stellaris.cをコピーしてuart_my_uart.cを作成し、次の1行を追加します。zephyr_library_sources_if_kconfig(uart_my_uart.c)これで、cmakeが通るようになります。${item})endfunction()zephyr_library_sources_if_kconfig(uart_my_uart.c)と書いた場合、CONFIG_UART_MY_UARTが定義されていれば、ビルド対象になるようです。動作確認ビルドできるようになったので、動作確認してみます。dumped)むむむ...。driverのソースコードを確認します。*/Kconfigで変更したシンボルが、ソースコードで反映されていないので、初期化が走っていないようです。CONFIG_UART_STELLARIS_PORT_0を有効化している場所を探してみると、socディレクトリにあるdefconfigでした。y...ということで、少しアドホックな対応ですが、boardファイルを少し修正します。^~~~~~~~~~~~~~~~~~~~~~~~~~...うげぇ~。SYSCLK_DEFAULT_IOSC_HZなんかありますねぇ...。*/ああ、そういう...。上記ヘッダファイルに追加します。ZephyrとRustのインテグレーションに挑戦しています。ZephyrとRustのインテグレーションに挑戦しています。ZephyrとRustのインテグレーションに挑戦しています。Zephyrのdriverを作る方法を学びます。読者になる検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro最新記事Zen言語の標準ライブラリ紹介〜rand2〜Zen言語の標準ライブラリ紹介〜rand1〜Zen言語の標準ライブラリ紹介〜lazy〜Zen言語の標準ライブラリ紹介〜sort2〜Zen言語の標準ライブラリ紹介〜sort1〜月別アーカイブはてなブログをはじめよう!tomo-wait-for-it-yukiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。