組み込みLinux環境の構築

「組み込み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またはuImageDTBファイルが
あり、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」を実行すると、このデバイスノードが見つかります。その主要なデバイス番号は上の図と同じです。
ここに画像の説明を挿入

12.プログラムの更新

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/LIU944602965/article/details/115379243
おすすめ