目次
- 1.コンピューターのBIOSが仮想化を開始します
- 2.Linuxネットワークカードの表示とIP設定
- 3. WindowsNAT仮想ネットワーク構成
- 4.Ubuntuのマウントされたポートを変更します
- 5.MobaXtermの設定
- 6.FileZillaの設定
- 6、ubuntuクロスコンパイルチェーンの設定と検査
- 7、ubuntuはカーネルをコンパイルします
- 8、ubuntuはカーネルモジュールをコンパイルします
- 9.カーネルとモジュールを開発ボードにインストールします
- 10. ubuntuはMakefileを変更して、カーネルディレクトリを指定します
- 11.最初のドライバーをコンパイルします
- 12.プログラムの更新
「組み込みLinuxアプリケーション開発完全マニュアル_WeiDongshanビデオドキュメントV2.4の完全なシリーズ」から要約
1.コンピューターのBIOSが仮想化を開始します
2.Linuxネットワークカードの表示とIP設定
すべてのネットワークカードを表示
ifconfig -a
ネットワークIPを設定する
$ sudo ifconfig ens160 192.168.1.16
次のコマンドが失敗した場合は、ルーティングが設定されていないことを意味します。
$ ping 8.8.8.8
connect: Network is unreachable
「ping8.8.8.8」は成功したが、「ping www.baidu.com」が失敗した場合、DNSは正しく設定されていません。
$ ping www.baidu.com
ping: unknown host www.baidu.com
DNS設定は比較的単純です。8.8.8.8は覚えやすいDNSサーバーです。Ubuntuの/etc/resolv.confファイルを次のように変更します。
ネームサーバー8.8.8.8
3. WindowsNAT仮想ネットワーク構成
4.Ubuntuのマウントされたポートを変更します
NATネットワークで、開発ボードにNFS経由でUbuntuをマウントする場合は、マウントされたポートを9999に変更する必要があり
ます。viコマンドの使用方法がわからない場合は、Ubuntuデスクトップでターミナルを起動できます。次のコマンドを実行し、GUIツールで変更します。
sudo gedit /etc/services
コマンドの説明:/ etc / servicesを変更します:
2行追加します:
マウントされた9999 / tcp
マウントされた9999 / udp
5.MobaXtermの設定
MobaXtermをインストールして実行し、次のようにセッションを設定します。注:NATを使用するUbuntuの場合、上の図の手順2で入力したIPは127.0.0.1です。NAT
を使用していない場合は、UbuntuIPを入力する必要があります。
6.FileZillaの設定
注:NATを使用するUbuntuの場合、上の図の手順2で入力したIPは127.0.0.1です。NATを使用していない場合は、UbuntuIPを入力する必要があります。
6、ubuntuクロスコンパイルチェーンの設定と検査
永続的に有効
1.実行:gedit ~/.bashrc
またはvi ~/.bashrc
2.行の終わりに追加または変更し、次の行を追加します(3行目は非常に長く、ここではすべての人がコピーできるように小さなフォントが使用されています)。
export ARCH = arm
export CROSS_COMPILE = arm-buildroot-linux-gnueabihf-
export PATH = $ PATH:/ home / book / 100ask_stm32mp157_pro-sdk / ToolChain / arm-buildroot-linux-gnueabihf_sdk-buildroot / bin
3.source ~/.bashrc
コマンドを実行して有効にするには、このコマンドはこれらの設定の環境変数をロードします。
7、ubuntuはカーネルをコンパイルします
STM32MP157開発ボードのカーネルのコンパイルプロセスは次のとおりです(カーネルをコンパイルする前に、ツールチェーンなどのいくつかの環境変数を構成する必要があります)。
book@100ask:~/100ask_stm32mp157_pro-sdk$ cd Linux-5.4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make 100ask_stm32mp157_pro_defconfig
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make uImage LOADADDR=0xC2000040 -j4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make dtbs
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ cp arch/arm/boot/uImage ~/nfs_rootfs
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ cp arch/arm/boot/dts/100ask-stm32m1p157c-pro.dtb ~/nfs_rootfs
8、ubuntuはカーネルモジュールをコンパイルします
STM32MP157開発ボードがカーネルソースディレクトリに入った後、カーネルモジュールをコンパイルできます。
book@100ask:~$ cd 100ask_stm32mp157_pro-sdk/Linux-5.4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make modules -j4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ sudo make INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install
最後のコマンドは、バックアップのためにモジュールを/ home / book / nfs_rootfsディレクトリにインストールすることです。これにより、
/ home / book / nfs_rootfs / lib / modulesディレクトリが取得されます。
9.カーネルとモジュールを開発ボードにインストールします
前提条件:コマンドを実行すると、Ubuntu /ホームブックの// nfs_rootfsディレクトリの下にすでにzImageまたはuImage、DTBファイルが
あり、lib / modulesサブディレクトリ(さまざまなモジュールが含まれています)があります。
次に、これらのファイルを開発ボードにコピーします。
1. VMware NATを使用している場合、Windows IPが192.168.1.100であると想定して、開発ボードがLinuxで起動した後、
rootと入力してログインし、次のコマンドを実行します(注:ポートを2049として指定する必要があります。 9999としてのmountport):
mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.1.100:/home/book/nfs_rootfs /mnt
cp /mnt/zImage /boot 或 cp /mnt/uImage /boot
cp /mnt/*.dtb /boot
cp /mnt/lib/modules /lib -rfd
sync
reboot
2. VMwareブリッジ方式を使用している場合、Ubuntu IPが192.168.1.100であると想定して、開発ボードで次のコマンドを実行します。
mount -t nfs -o nolock,vers=3 192.168.1.100:/home/book/nfs_rootfs /mnt
cp /mnt/zImage /boot 或 cp /mnt/uImage /boot
cp /mnt/*.dtb /boot
cp /mnt/lib/modules /lib -rfd
sync
reboot
最後に開発ボードを再起動します。新しいzImageまたはuImage、dtb、モジュールが使用されます。
10. ubuntuはMakefileを変更して、カーネルディレクトリを指定します
最初のドライバー01_hello_drvをUbuntuにアップロードした後、そのMakefileを変更し、その中のKERN_DIR変数をカーネルソースディレクトリに設定します。例として、IMX6ULLを次のように取り上げます。
KERN_DIR = /home/book/100ask_imx6ull-sdk/Linux-4.9.88
11.最初のドライバーをコンパイルします
1.ツールチェーンを設定し、カーネルを構成してコンパイルした後、01_hello_drvディレクトリでmakeコマンドを実行して、次のようにドライバとテストプログラムをコンパイルします。
2.開発ボードにコピーした後、ドライバーをインストールし、成功するかどうかを確認します。
[root@board:~]# insmod hello_drv.ko
次のように、「lsmod」を実行してhello_drvドライバーを確認します。
3.「cat / proc / devices」を実行します。デバイス名とデバイス番号を表示します
「ls-l / dev / hello」を実行すると、このデバイスノードが見つかります。その主要なデバイス番号は上の図と同じです。