Armadilloフォーラム

ドライバーについて

hhirayama

2022年2月17日 21時15分

お世話になっております。平山と申します。

Armadillo-X1でCONTECのAI-1608AY-USBをつなぎたいのですがうまくいきません。
Armadillo-X1でCONTECからダウンロードしたドライバをMakeすると下記のようなエラーが出ました。
make -C /lib/modules/`uname -r`/build M=`pwd` V=1 modules
make[2]: Entering directory '/home/guest/caio490F/contec/caio/module_usb'
make[2]: *** /lib/modules/4.9.133-at21/build: No such file or directory. Stop.
make[2]: Leaving directory '/home/guest/caio490F/contec/caio/module_usb'
make[1]: *** [Makefile:18: caiousb.ko] Error 2
make[1]: Leaving directory '/home/guest/caio490F/contec/caio/module_usb'
make: *** [Makefile:5: all] Error 2

過去のフォーラムを見ると、X1実機上ではなくArmdilloの開発環境であるATDE上でドライバをビルドした方がいいと書かれていましたが、ATDE上でのビルド方法が分かりません。
ATDE上でのビルド方法を教えて頂けないでしょうか。

コメント

アットマークテクノの古賀です。

平山さん:
>Armadillo-X1でCONTECのAI-1608AY-USBをつなぎたいのですがうまくいきません。
>Armadillo-X1でCONTECからダウンロードしたドライバをMakeすると下記のようなエラーが出ました。
>make -C /lib/modules/`uname -r`/build M=`pwd` V=1 modules
>make[2]: Entering directory '/home/guest/caio490F/contec/caio/module_usb'
>make[2]: *** /lib/modules/4.9.133-at21/build: No such file or directory. Stop.
>make[2]: Leaving directory '/home/guest/caio490F/contec/caio/module_usb'
>make[1]: *** [Makefile:18: caiousb.ko] Error 2
>make[1]: Leaving directory '/home/guest/caio490F/contec/caio/module_usb'
>make: *** [Makefile:5: all] Error 2
>
>過去のフォーラムを見ると、X1実機上ではなくArmdilloの開発環境であるATDE上でドライバをビルドした方がいいと書かれていましたが、ATDE上でのビルド方法が分かりません。
>ATDE上でのビルド方法を教えて頂けないでしょうか。

一点確認ですが、ビルドしようとしていらっしゃるのは、こちらのページからダウンロードできる「Linux版アナログ入出力ドライバ API-AIO(LNX) 開発環境(フルセット) Ver. 5.01」でしょうか?
 https://www.contec.com/jp/download/donwload-list/?itemid=8fc50126-0f98-…

古賀さん

> 一点確認ですが、ビルドしようとしていらっしゃるのは、こちらのページからダウンロードできる「Linux版アナログ入出力ドライバ API-AIO(LNX) 開発環境(フルセット) Ver. 5.01」でしょうか?
>  https://www.contec.com/jp/download/donwload-list/?itemid=8fc50126-0f98-…

ビルドしようとしているのは、Linux版アナログ入出力ドライバ API-AIO(LNX) 開発環境(フルセット)になります。最近更新されているのを知らなかったので、Ver.5.01ではなくVer4.90でビルドしようとしていました。

アットマークテクノの古賀です。

平山さん:
>>一点確認ですが、ビルドしようとしていらっしゃるのは、こちらのページからダウンロードできる「Linux版アナログ入出力ドライバ API-AIO(LNX) 開発環境(フルセット) Ver. 5.01」でしょうか?
>> https://www.contec.com/jp/download/donwload-list/?itemid=8fc50126-0f98-…
>
>ビルドしようとしているのは、Linux版アナログ入出力ドライバ API-AIO(LNX) 開発環境(フルセット)になります。最近更新されているのを知らなかったので、Ver.5.01ではなくVer4.90でビルドしようとしていました。

了解しました。上記ページには Ver4.90 へのダウンロードリンクがありませんので、Ver.5.01 をダウンロードして内容を見てみました。

平山さん(2022年2月17日 21時15分):
>Armadillo-X1でCONTECのAI-1608AY-USBをつなぎたいのですがうまくいきません。
>Armadillo-X1でCONTECからダウンロードしたドライバをMakeすると下記のようなエラーが出ました。
>make -C /lib/modules/`uname -r`/build M=`pwd` V=1 modules
>make[2]: Entering directory '/home/guest/caio490F/contec/caio/module_usb'
>make[2]: *** /lib/modules/4.9.133-at21/build: No such file or directory. Stop.
>make[2]: Leaving directory '/home/guest/caio490F/contec/caio/module_usb'
>make[1]: *** [Makefile:18: caiousb.ko] Error 2
>make[1]: Leaving directory '/home/guest/caio490F/contec/caio/module_usb'
>make: *** [Makefile:5: all] Error 2

エラー行の

>make[2]: *** /lib/modules/4.9.133-at21/build: No such file or directory. Stop.

については、その上の行で移動しているディレクトリ
 /home/guest/caio490F/contec/caio/module_usb
にある Makefile をご覧になれば分かります。この Makefile では
 /lib/modules/`uname -r`/build
に該当するディレクトリが存在することを期待しており、Armadillo-X では `uname -r` が 4.9.133-at21 になりますので、該当するディレクトリは
 /lib/modules/4.9.133-at21/build
となり、このディレクトリが存在しないのでエラーする、というわけです。

このエラーですが、「Linux版アナログ入出力ドライバ API-AIO(LNX) 開発環境(フルセット)」のアーカイブを展開して出来たディレクトリで、
 caio501F/contec/caio/help/jp/usage/
にある installation_procedure.htm を見て頂くと、以下の記述があるかと思います:

 モジュールをコンパイルする際には、Linuxのカーネルヘッダが必要になります。
 事前にカーネルヘッダのインストールを行ってください。

この準備作業において、
 /lib/modules/`uname -r`/build
に該当するディレクトリの直下に、Linux カーネルのヘッダファイルのディレクトリがあることを期待した Makefile 記述になっていますので、そのようにしなければいけません。ここで、
 caio501F/contec/caio/
にある Makefile を見ると、以下の行があります(※Ver.5.01 の場合です)。これが、build ディレクトリの作り方のヒントになるでしょう。

all:
ifeq ($(shell uname -r), 4.9.140-tegra)
	cd /lib/modules/4.9.140-tegra/ && ln -sf /usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9 build
endif

実際に試していないのですが、at21 なカーネルの X1 でセルフビルドする場合は、次のページから「Linuxカーネル (Linux 4.9対応)」のアーカイブを X1 にダウンロードして展開するか、または、PC にダウンロードして展開したのち、
 linux-4.9-x1-at21/
に入っているディレクトリ群のうち include/ 以外のディレクトリを削除してから X1 にコピーしたうえで、以下を行なえばよいのではないかと思います:

1.) /lib/modules/4.9.133-at21/ ディレクトリを作る。
2.) (1) のディレクトリに cd で移動する。
3.) ln -s で、linux-4.9-x1-at21/ ディレクトリを指す build というシンボリックリンクを作る。

これを行ってからビルドすると、エラーなくビルドできるかも知れません。

>過去のフォーラムを見ると、X1実機上ではなくArmdilloの開発環境であるATDE上でドライバをビルドした方がいいと書かれていましたが、ATDE上でのビルド方法が分かりません。
>ATDE上でのビルド方法を教えて頂けないでしょうか。

ATDE でビルドする場合は、「Linuxカーネル (Linux 4.9対応)」のアーカイブを ATDE にダウンロードして展開した後、上の (1)~(3) と同様の手順で、ATDE 上に linux-4.9-x1-at21/ ディレクトリへのシンボリックリンク
 /lib/modules/4.9.133-at21/build
を作り、そして、make を実行する際に CC=arm-linux-gnueabihf-gcc オプションを指定すればよいのではないかと思います:
 https://stackoverflow.com/a/2969244

古賀さん
教えていただいたやり方でやってみました。
以前よりは先に進んだのですが、下記のようなエラーが出て止まってしまいました。
-c -o /root/contec/caio/module2/Ccom_module.o /root/contec/caio/module2/Ccom_module.c
In file included from :
././include/linux/kconfig.h:4:10: fatal error: generated/autoconf.h: No such file or directory
#include
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [scripts/Makefile.build:309: /root/contec/caio/module2/Ccom_module.o] Error 1

X1の中に上記のヘッダーファイルが無くてエラーが出ていると思うのですが、対処法などご存じでしたら教えて頂けないでしょうか。

アットマークテクノの古賀です。

hhirayamaさん:
>教えていただいたやり方でやってみました。
>以前よりは先に進んだのですが、下記のようなエラーが出て止まってしまいました。
> -c -o /root/contec/caio/module2/Ccom_module.o /root/contec/caio/module2/Ccom_module.c
>In file included from :
>././include/linux/kconfig.h:4:10: fatal error: generated/autoconf.h: No such file or directory
> #include
> ^~~~~~~~~~~~~~~~~~~~~~
>compilation terminated.
>make[3]: *** [scripts/Makefile.build:309: /root/contec/caio/module2/Ccom_module.o] Error 1
>
>X1の中に上記のヘッダーファイルが無くてエラーが出ていると思うのですが、対処法などご存じでしたら教えて頂けないでしょうか。

include/ の中に generated/ サブディレクトリが存在していない状況ですね。単純にカーネルのソースアーカイブを展開した状態だと、include/generated/ は存在していませんので、コンフィグレーションする必要があります。カーネルのソースアーカイブを展開したディレクトリで、マニュアルの「10.2 Linuxカーネルをビルドする」に記載されているように

$ make ARCH=arm x1_defconfig

としてみて下さい。
 https://manual.atmark-techno.com/armadillo-x1/armadillo-x1_product_manu…

古賀さん

指摘頂いたように
make ARCH=arm x1_defconfig
を実行すると下記のようなエラーが出ました。

root@armadillo:/home/atmark/linux-4.9-x1-at21# make ARCH=arm x1_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
init/Kconfig:1331: can't open file "usr/Kconfig"
make[1]: *** [scripts/kconfig/Makefile:112: x1_defconfig] Error 1
make: *** [Makefile:544: x1_defconfig] Error 2

このような時はどのように対処したらよろしいでしょうか。

古賀さん

下記のエラーが出る件は解決しました。X1の中で展開したので空き容量が無くusrフォルダが作られていませんでした。
> init/Kconfig:1331: can't open file "usr/Kconfig"
> make[1]: *** [scripts/kconfig/Makefile:112: x1_defconfig] Error 1
> make: *** [Makefile:544: x1_defconfig] Error 2

しかし、include/generated/ ができていませんでした。ビルドも必要なのでしょうか?

古賀さん

度々申し訳ございません。
include/generated/ はできました。
そのあと、cd でcaio501F/contec/caio/に移動し、makeを実行すると下記のエラーが出ました。
対処法などご存じでしたら教えて頂けないでしょうか

-c -o /root/contec/caio/module2/.tmp_Ccom_module.o /root/contec/caio/module2/Ccom_module.c
In file included from ./include/asm-generic/int-ll64.h:10,
from ./arch/arm/include/asm/types.h:4,
from ./include/uapi/linux/types.h:4,
from ./include/linux/types.h:5,
from ./include/linux/list.h:4,
from ./include/linux/module.h:9,
from /root/contec/caio/module2/Ccom_module.c:12:
./include/uapi/asm-generic/int-ll64.h:11:10: fatal error: asm/bitsperlong.h: No such file or directory
#include
^~~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [scripts/Makefile.build:297: /root/contec/caio/module2/Ccom_module.o] Error 1

アットマークテクノの古賀です。

平山さん:
>度々申し訳ございません。
>include/generated/ はできました。
>そのあと、cd でcaio501F/contec/caio/に移動し、makeを実行すると下記のエラーが出ました。
>対処法などご存じでしたら教えて頂けないでしょうか

asm/bitsperlong.h が存在しないというエラーですね。この bitsperlogn.h は、
 include/uapi/linux/types.h
がインクルードしている
 arch/arm/include/asm/types.h
と同じく、arch/arm/include/asm/ に存在しているはずですが、存在していないかまたは、参照できずにエラーになっているようです。

> -c -o /root/contec/caio/module2/.tmp_Ccom_module.o /root/contec/caio/module2/Ccom_module.c
>In file included from ./include/asm-generic/int-ll64.h:10,
> from ./arch/arm/include/asm/types.h:4,
> from ./include/uapi/linux/types.h:4,
> from ./include/linux/types.h:5,
> from ./include/linux/list.h:4,
> from ./include/linux/module.h:9,
> from /root/contec/caio/module2/Ccom_module.c:12:
>./include/uapi/asm-generic/int-ll64.h:11:10: fatal error: asm/bitsperlong.h: No such file or directory
> #include
> ^~~~~~~~~~~~~~~~~~~
>compilation terminated.
>make[3]: *** [scripts/Makefile.build:297: /root/contec/caio/module2/Ccom_module.o] Error 1

確認ですが、ディレクトリ
 /lib/modules/4.9.133-at21/build/arch/arm/include/asm/
の下に bitsperlong.h は存在しているでしょうか?
もし存在していない場合、types.h は存在しているでしょうか?

古賀さん

> 確認ですが、ディレクトリ
>  /lib/modules/4.9.133-at21/build/arch/arm/include/asm/
> の下に bitsperlong.h は存在しているでしょうか?
> もし存在していない場合、types.h は存在しているでしょうか?

確認したところ、bitsperlong.h は存在していませんでした。types.hの方は存在しています。

アットマークテクノの古賀です。

平山さん:
>>確認ですが、ディレクトリ
>> /lib/modules/4.9.133-at21/build/arch/arm/include/asm/
>>の下に bitsperlong.h は存在しているでしょうか?
>>もし存在していない場合、types.h は存在しているでしょうか?
>
>確認したところ、bitsperlong.h は存在していませんでした。types.hの方は存在しています。

ごめんなさい。手元の環境(ATDE 上で Linux カーネルをビルドしたソースツリー)で確認したところ、
 arch/arm/include/asm/bitsperlong.h
は存在しておらず、存在しているのは
 arch/arm/include/generated/asm/bitsperlong.h
でした。

だいぶ乱暴なやり方ですが、以下のコマンドで
 arch/arm/include/generated/asm/bitsperlong.h
へのシンボリックリンクを作るか、または、この bitsperlong.h を
 /lib/modules/4.9.133-at21/build/arch/arm/include/asm/
にコピーしてからビルドすると、どうなるでしょうか?

# cd /lib/modules/4.9.133-at21/build/arch/arm/include/asm/
# ln -s ../generated/asm/bitsperlong.h .

古賀さん

アーカイブを X1 にダウンロードして展開するときに色々とエラーが出ていたみたいでしたので、アーカイブを X1 にダウンロードして展開からやり直してみました。
すると、
>./include/uapi/asm-generic/int-ll64.h:11:10: fatal error: asm/bitsperlong.h: No such file or directory
のではなく
-c -o /root/contec/caio/module2/.tmp_Ccom_module.o /root/contec/caio/module2/Ccom_module.c
/bin/sh: 1: scripts/basic/fixdep: Exec format error
make[3]: *** [scripts/Makefile.build:297: /root/contec/caio/module2/Ccom_module.o] Error 2
make[2]: *** [Makefile:1510: _module_/root/contec/caio/module2] Error 2
が出るようになりました。
以前、linux-4.9-x1-at21/に入っているディレクトリ群のうち include/ 以外のディレクトリを削除してから X1 にコピーと教えて頂きましたが、cd でcaio501F/contec/caio/に移動し、makeを実行するとエラーが出たため、linux-4.9-x1-at21/内にあったarchとscriptsをx1にコピーしてmakeを実行すると上記のエラーが出ました。archとscriptsをx1にコピーするやり方はあってますでしょうか?

アットマークテクノの古賀です。

平山さん:
>アーカイブを X1 にダウンロードして展開するときに色々とエラーが出ていたみたいでしたので、アーカイブを X1 にダウンロードして展開からやり直してみました。
>すると、
>>./include/uapi/asm-generic/int-ll64.h:11:10: fatal error: asm/bitsperlong.h: No such file or directory
>のではなく
> -c -o /root/contec/caio/module2/.tmp_Ccom_module.o /root/contec/caio/module2/Ccom_module.c
>/bin/sh: 1: scripts/basic/fixdep: Exec format error
>make[3]: *** [scripts/Makefile.build:297: /root/contec/caio/module2/Ccom_module.o] Error 2
>make[2]: *** [Makefile:1510: _module_/root/contec/caio/module2] Error 2
>が出るようになりました。
>以前、linux-4.9-x1-at21/に入っているディレクトリ群のうち include/ 以外のディレクトリを削除してから X1 にコピーと教えて頂きましたが、cd でcaio501F/contec/caio/に移動し、makeを実行するとエラーが出たため、linux-4.9-x1-at21/内にあったarchとscriptsをx1にコピーしてmakeを実行すると上記のエラーが出ました。archとscriptsをx1にコピーするやり方はあってますでしょうか?

上記エラーの
 scripts/basic/fixdep: Exec format error
ですが、これは、クロスビルド環境(ATDE)からコピーしたためのようです。ごめんなさい:
 https://qiita.com/ikwzm/items/e31ecb099d0d50cb027c

X1 でセルフビルドする場合ですが、inux-4.9-x1-at21/ ディレクトリに cd で移動した後、

# make scripts 

を実行してみて下さい。その後、再度 /root/contec/caio/ に cd で移動して make を実行すればよいでしょう。

先ほど、ATDE 上でカーネルのソースツリーをビルドして、ビルドした後のソースツリー一式を実機にコピーしたのち、上記の make scripts を行ったうえで contec/caio/ に移動して make を実行したところ、エラーなくビルドできました。

# なお、実機でのセルフビルドにあたっては、ブート SD ディスクを作り、SD ブートで行いました(容量不足の心配をなくすため)。

以上、参考になりましたら幸いです。

古賀さん

教えて頂いたようにSDブートでおこなったら、make、make installできて、機器を認識するようになりました。
ありがとうございました。

今後もSDブートだと使えないので、通常のブートにするためにはSDカードのデータをx1本体に移動させるとよいのでしょうか?
その辺が分かってなくどのようにしたらいいか分かりません。SDカードからどのデータを移動させたらよいのか教えて頂けないでしょうか。

アットマークテクノの古賀です。

平山さん:
>教えて頂いたようにSDブートでおこなったら、make、make installできて、機器を認識するようになりました。
>ありがとうございました。

ドライバの動作も問題なかったようですね。良かったです。

>今後もSDブートだと使えないので、通常のブートにするためにはSDカードのデータをx1本体に移動させるとよいのでしょうか?
>その辺が分かってなくどのようにしたらいいか分かりません。SDカードからどのデータを移動させたらよいのか教えて頂けないでしょうか。

make install で何が起きたのかは、
 /home/guest/caio490F/contec/caio/
にある Makefile で、ターゲット install に対するルールを見てみて下さい。以下のサブディレクトリを make コマンドの -C オプションで指定して、順に make install を実行するようになっていますよね:

 config
 module_usb
 module
 module2
 library

で、これらのサブディレクトリに対する make install で何が起きたのかは、各サブディレクトリにある Makefile で、ターゲット install に対するルールを見ればよいというわけです。

実際に試してはいないのですが、たぶん、次の手順で、SD カード上のルートファイルシステムでビルドしてできたドライバを eMMC 上のルートファイルシステムにインストールできるのではないかと思います:

(1) Armadillo をシャットダウン&電源断する。
(2) ブート SD カードを Armadillo に装着したままの状態で、eMMC ブートの設定に戻す。
(3) eMMC ブートする。
(4) ブートしたら、ログインして以下のコマンドを実行する(※root でログインしたものとしています。一般ユーザーの場合は sudo 付きで実行して下さい)。

# mount /dev/usb2 /mnt
# mkdir -p /lib/modules/4.9.133-at21/kernel/drivers/usb
# cd /mnt/home/guest/caio490F/contec/caio/
# make install

ただし、config/Makefile では、Armadillo-X1 の場合 caio490F/contec/caio/config/arm32/config を caio490F/contec/caio/config/ にコピーするようになっており、コピーした caio490F/contec/caio/config/config を、以後どのように使うのか僕は理解していません(caio490F/contec/caio/help/ 配下にあるドキュメントに記載されていると思いますが、ちゃんと読んでいません)。サンプルコードを動かす場合に必要なものかも知れませんが、それらも eMMC 上のルートファイルシステムへ移したい場合は、caio490F/contec/caio/ を eMMC 上のルートファイルシステムのディレクトリへ cp -rp でコピーしてみて下さいませ。

ここから先の、このドライバに依存した疑問などは、ドライバ提供元の CONTEC 社に質問して頂くのが、より確実かと思います。
以上、もし参考になりましたら幸いです。

先ほどのコメントで例示したコマンドに、間違いがありました。ごめんなさい。

古賀:
>実際に試してはいないのですが、たぶん、次の手順で、SD カード上のルートファイルシステムでビルドしてできたドライバを eMMC 上のルートファイルシステムにインストールできるのではないかと思います:
>
>(1) Armadillo をシャットダウン&電源断する。
>(2) ブート SD カードを Armadillo に装着したままの状態で、eMMC ブートの設定に戻す。
>(3) eMMC ブートする。
>(4) ブートしたら、ログインして以下のコマンドを実行する(※root でログインしたものとしています。一般ユーザーの場合は sudo 付きで実行して下さい)。

# mount /dev/usb2 /mnt
...

mount コマンドの第一引数は、'/dev/usb2' ではなく '/dev/sdb2' の間違いです。ごめんなさい。

古賀さん

SDブートでおこなってmake、make installできたのですが、実際に物を動かそうとしたときに、lookup_builtin_file() could not open builtin fileというエラーが出て先に進みませんでした。このエラーが出る原因、対策等ご存じでしたら教えて頂けないでしょうか。
物がなく動作確認までできていませんでした。申し訳ありませんが、宜しくお願いします。

アットマークテクノの古賀です。

平山さん:
>SDブートでおこなってmake、make installできたのですが、実際に物を動かそうとしたときに、lookup_builtin_file() could not open builtin fileというエラーが出て先に進みませんでした。このエラーが出る原因、対策等ご存じでしたら教えて頂けないでしょうか。
>物がなく動作確認までできていませんでした。申し訳ありませんが、宜しくお願いします。

このエラーメッセージは、libkmod が出しており、カーネルモジュールをロードしようとした際にエラーしているようです:
 https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git/tree/libkmod/…

で、このエラーが起きた原因ですが、Armadillo-X1 に
 /lib/modules/4.9.133-at21/
というディレクトリが存在していないことが原因だと思われます。おそらく、上記のエラーメッセージの後には、存在していないファイル名が出力されており、その中には modules.builtin.bin などがあると思います。これらのファイルは、Armadillo-X1 のカーネルをビルドした環境で生成して Armadillo-X1 の /lib/modules/ 配下に配置しなければいけないようです。このページが参考になるでしょう:
 http://nahitafu.cocolog-nifty.com/nahitafu/2019/09/post-e84457.html
なお、このページでは、modules と modules_install をターゲットにして make を実行する例が提示されていますが、ATDE (および、それ以外のクロスビルド環境)で Armadillo-X1 のカーネルをビルドしている場合には、例示されているのと同じコマンドを実行するとエラーになります。クロスビルド環境の場合は、こちらの質問の回答で提示しているように、'CROSS_COMPILE=arm-linux-gnueabihf-' を付けて下さい:
 https://armadillo.atmark-techno.com/forum/armadillo/3948

lib/modules/4.9.133-at21/ ディレクトリですが、2/20 のコメントで、「「Linux版アナログ入出力ドライバ API-AIO(LNX) 開発環境(フルセット) 」をビルドする際に手作業で作成して下さいと書きましたが、これが正しくありませんでした。ごめんなさい。
 https://armadillo.atmark-techno.com/forum/armadillo/11052#comment-10673
modules と modules_install を make すると、INSTALL_MOD_PATH で指定したディレクトリの下に lib/modules/4.9.133-at21/ が生成され、生成された /lib/modules/4.9.133-at21/ の下には build/ ディレクトリも生成されます(※build は、Linux カーネルのソースディレクトリのへのシンボリックリンクです)。従って、この
 lib/modules/4.9.133-at21/
ディレクトリに対して、/lib/modules からシンボリックリンクを張ってからビルドすればよい、というわけでした。不十分な対応手順を書いてしまい、申し訳ありませんでした。

ということで、modules と modules_install を make したら、
 http://nahitafu.cocolog-nifty.com/nahitafu/2019/09/post-e84457.html
に記載されているように、INSTALL_MOD_PATH で指定したディレクトリに生成された
 lib/modules/4.9.133-at21/
ディレクトリを、Armadillo-X の
 /lib/modules/4.9.133-at21/
に配置して下さい。Linux カーネルをセルフビルドしている場合は、シンボリックリンクを張ればよいですし、クロスビルドした場合(および、セルフビルドした時とは違うストレージ上のルートファイルシステムで動かす場合)は、このディレクトリを一式コピーするか、または
 /lib/modules/4.9.133-at21/modules*
だけをコピーすればよいでしょう(※build, source, kernel は不要なはずなので)。

古賀さん

色々と教えて頂きありがとうございました。
物を動かすことができました。
eMMC 上のルートファイルシステムへのインストールは、もう少し内容を理解してから進めていくようにします。

本当にありがとうございました。