目次
1.情報クエリコマンド(bdinfo、printenv、versionn)
4.ネットワーク操作コマンド(ping、dhcp、nfs、tftp)
6. FAT形式のファイルシステム操作コマンド(fatinfo、fatls、fstype、fatload、fatwrite)
10.その他の一般的に使用されるコマンド(リセット、実行、実行)
序文
以下の内容は、U-BOOTを使用したPunctuality Atom Alpha開発ボード(I.MAX6ULL Linux開発ボード)の学習に関する章のメモの要約です。
1.情報クエリコマンド(bdinfo、printenv、versionn)
bdinfo
printenv
バージョン
2.環境変数操作コマンド(setenv、saveenv)
setenvを設定するために使用し、環境変数の値を変更している;のsetenvは、設定内容が空の場合、環境を削除するために使用されます。saveenvを修正、環境変数を保存するために使用され、一般的な環境変数がuboot開始に使用される外部フラッシュに格納されていますフラッシュからDRAMに環境変数を読み取ります。したがって、コマンドsetenvを使用して、DRAMの環境変数の値を変更します。変更後、saveenvコマンドを使用して、変更した環境変数をフラッシュに保存する必要があります。そうしないと、ubootを次に再起動すると、以前の環境変数の値が引き続き使用されます。
3.メモリ操作命令(md、nm、mm、mw、cp、cmp)
1. .b.w.lは、それぞれバイト、ワード、ロングで表示することを意味します
2、アドレスは表示されるメモリの開始アドレスです
3.データ長の単位はバイトではありませんが、選択した表示形式に関連しています。たとえば、メモリの長さを20(16進数の0x14)として表示するように設定した場合、表示形式が.bの場合は20バイトを意味し、表示形式が.wの場合は20ワード、つまり20を意味します。 * 2 = 40バイト。表示形式が.lの場合、20ロング、つまり20 * 4 = 80バイトを意味します。
4. ubootコマンドの数値はすべて16進数です!10進数ではありません!
(1)メモリ値の表示:md [.b、.w、.l]アドレス[オブジェクト数]
(2)指定されたアドレスのメモリ値を変更します。変更後もアドレスは増加しません:nm [.b、.w、.l]アドレス
(3)指定したアドレスのメモリ値を変更します。変更後、アドレスは増加します:mm [.b、.w、.l]アドレス
(4)指定されたデータでメモリを埋めます:mw [.b、.w、.l]アドレス値[カウント]
(5)データコピー:cp [.b、.w、.l]ソースターゲットカウント
DRAMのデータをあるメモリから別のメモリにコピーするか、NorFlashのデータをDRAMにコピーします
(6)データ比較:cmp [.b、.w、.l] addr1 addr2 count
4.ネットワーク操作コマンド(ping、dhcp、nfs、tftp)
ネットワーク操作コマンドを使用する前に、環境変数を設定してください
環境変数 |
説明 |
ipaddr |
開発ボードのIPアドレスは未設定のままにしておくことができます。dhcpコマンドを使用して、ルーターからIPアドレスを取得します。 |
ethaddr |
開発ボードのMACアドレスを設定する必要があります。 |
ゲートウェイIP |
ゲートウェイアドレス。 |
ネットマスク |
サブネットマスク。 |
serverip |
UbuntuホストのIPアドレスであるサーバーIPアドレスは、コードのデバッグに使用されます。 |
(1)ネットワーク接続ステータスを表示します:ping
(2)IPアドレスを自動的に取得します:dhcp
(3)ubuntuホストからファイルをダウンロードします:nfs [loadAddress] [[hostIPaddr:] bootfilename]
loadAddressは保存するDRAMアドレス、[[hostIPaddr:] bootfilename]はダウンロードするファイルアドレスです
nfs(ネットワークファイルシステム)ネットワークファイルシステム、nfsを介して、ネットワークを介してコンピューター間でリソースを共有できます。たとえば、LinuxイメージとデバイスツリーファイルをUbuntuに配置し、ubootでnfsコマンドを使用してUbuntuでLinuxをミラーリングします。そして、デバイスツリーが開発ボードのDRAMにダウンロードされます。これの目的は、Linuxミラーとデバイスツリーのデバッグ、つまりネットワークデバッグを容易にすることです。ネットワークデバッグは、Linux開発で最も一般的に使用されるデバッグ方法です。その理由は、組み込みLinuxの開発は、シングルチップマイクロコンピュータの開発とは異なり、JLINKやSTLinkなどのエミュレータを介してシングルチップマイクロコンピュータの内部フラッシュにコードを直接プログラムできるためです。組み込みLinuxは通常、EMMC、NANDフラッシュ、SPIフラッシュなどの外部デバイスにプログラムされます。フラッシュには、組み込みLinux開発用のMDK IARなどのIDEがなく、プログラミングアルゴリズムもないため、ダウンロードボタンをクリックしてファームウェアを外部フラッシュにフラッシュすることはできません。半導体メーカーは一般的にプログラミングを提供していますがファームウェアソフトウェアですが、このソフトウェアは使用がより複雑です。このプログラミングソフトウェアは、一般的に大量生産に使用されます。
(4)ubuntuホストからファイルをダウンロードします:tftp [loadAddress] [[hostIPaddr:] bootfilename]
loadAddressは、保存するDRAMのアドレス、[[hostIPaddr:] bootfilename]は、ダウンロードするファイルのアドレスです(tftpdサービスがubuntuホストで有効になっていて、ファイルがtftpサーバーに配置されている場合、TFTPを使用するときにフルネームを指定する必要はありません。フォルダ)
5.EMMCおよびSDカードの操作コマンド
(1)現在のmmcデバイスを切り替えます:mmc dev [dev] [part]
[dev]:切り替えるMMCデバイスのデバイス番号を設定するために使用されます(0はSDカード、1はeMMC)、
[part]:はパーティション番号です。パーティション番号を書き込まない場合、デフォルトはパーティション0です。
使用如下命令切换到 SD卡:
mmc dev 0 //切换到 SD卡, 0为 SD卡, 1为 eMMC
(2)ビューパーティション:mmcパーツ
比如查看 EMMC的分区情况,输入如下命令:
mmc dev 1 //切换到 EMMC
mmc part //查看 EMMC分区
図からわかるように、この時点でEMMCには2つのパーティションがあり、セクター20480〜1024000が最初のパーティションであり、セクター1228800〜6504448が2番目のパーティションです。LinuxシステムがEMMCで書き込まれる場合、EMMCには3つのパーティションがあります.0番目のパーティションにはubootが格納され、1番目のパーティションにはLinuxイメージファイルとデバイスツリーが格納され、2番目のパーティションにはルートファイルシステムが格納されます。ただし、図には2つのパーティションしかないため、0番目のパーティションがフォーマットされていないため、認識できません。実際には、0番目のパーティションが存在します。
(3)読み取り命令:mmc read addr blk#cnt
addr:データがDRAMに読み込まれるアドレスです
blk:読み取られるブロックの開始アドレス(16進数)、ブロック(セクター)は512バイト、MMC機器では通常セクターと呼ばれます
cnt:読み取るブロックの数(16進数)
比如从 EMMC的第 1536(0x600)个块开始,读取 16(0x10)个块的数据到 DRAM的0X80800000地址处,命令如下:
mmc dev 1 0 //切换到 MMC分区 0
mmc read 80800000 600 10 //读取数据
(4)書き込み命令:mmc write addr blk#cnt
addrは、MMCに書き込まれるデータのDRAMの開始アドレスです。
blkは、MMC(hexadecimal)に書き込まれるブロックの開始アドレスです。
cntは書き込まれるブロックのサイズで、1つのブロックは512バイトです。
コマンド「mmcwrite」を使用して、ubootをアップグレードできます。つまり、ubootのubootを更新します。ここでは、nfsまたはtftpコマンドを使用して、nfsまたはtftpコマンドを使用して新しいu-boot.binを開発ボードのDRAMにダウンロードしてから、コマンド「mmcwrite」を使用してMMCデバイスに書き込む必要があります。
比如更新EMMC中的uboot:
mmc dev 1 0 //切换到 EMMC分区 0
tftp 80800000 u-boot.imx //下载 u-boot.imx到 DRAM
mmc write 80800000 2 32E //烧写 u-boot.imx到 EMMC中
mmc partconf 1 1 0 0 //分区配置, EMMC需要这一步!
6. FAT形式のファイルシステム操作コマンド(fatinfo、fatls、fstype、fatload、fatwrite)
(1)指定されたパーティションのファイルシステム情報を照会します。fatinfo<interface> [<dev [:part]>]
interface:mmcなどのインターフェイスを示します
dev:照会するデバイス番号、0はSDカード、1はEMMCです。
パート:照会するパーティションです
(2)FAT形式のデバイスのディレクトリおよびファイル情報を照会します。fatls<interface> [<dev [:part]>] [directory]
interface:mmcなどのインターフェイスを示します
dev:照会するデバイス番号、0はSDカード、1はEMMCです。
パート:照会するパーティションです
directory:照会するディレクトリです
(3)MMCデバイスのパーティションのファイルシステム形式を照会します。fstype<interface> <dev>:<part>
interface:mmcなどのインターフェイスを示します
dev:照会するデバイス番号、0はSDカード、1はEMMCです。
パート:照会するパーティションです
fstype mmc 1:0 //查看EMMC分区0的文件系统格式
fstype mmc 1:1 //查看EMMC分区1的文件系统格式
fstype mmc 1:2 //查看EMMC分区2的文件系统格式
(4)指定されたファイルをDRAMに読み込みます。fatload<interface> [<dev [:part]> [<addr> [<filename> [bytes [pos]]]]]
interface:mmcなどのインターフェイスを示します
dev:照会するデバイス番号、0はSDカード、1はEMMCです。
パート:照会するパーティションです
addr:DRAMに格納されている開始アドレス
filename:読み取るファイルの名前
bytes:読み取るデータのバイト数を示します。0または省略は、ファイル全体を読み取ることを意味します。
pos:ファイルの最初のアドレスを基準にした読み取りデータのオフセット。0または省略は、ファイルの最初のアドレスから読み取りを開始することを意味します。
fatload mmc 1:1 80800000 zImage //将EMMC分区1中的zImage文件读取到DRAM中的80800000地址处
(5)DRAMのデータをMMCデバイスに書き込みます。
fatwrite <interface> <dev [:part]> <addr> <filename> <bytes>
interface:mmcなどのインターフェイスを示します
dev:照会するデバイス番号、0はSDカード、1はEMMCです。
パート:照会するパーティションです
addr:DRAMに書き込まれるデータの開始アドレス
filename:書き込むファイルの名前
bytes:書き込むデータのバイト数を示します。0または省略は、ファイル全体を書き込むことを意味します。
7.EXT形式のファイルシステム操作コマンド
これら2つの形式のファイルシステム操作に一般的に使用されるコマンドは、ext2load、ext2ls、ext4load、ext4ls、およびext4writeの4つです。これらのコマンドの意味と使用法は、ext2とext4がextファイルシステム用であることを除いて、fatload、fatls、およびfatwritと同じです。
8.NAND操作コマンド
9.BOOT操作コマンド
(1)Linuxを起動します:bootz [addr [initrd [:size]] [fdt]]
addr:はDRAM内のLinuxイメージファイルの場所です。
initrd:はDRAM内のinitrdファイルのアドレスです。initrdを使用しない場合は、代わりに「-」を使用してください。
fdt:はDRAM内のデバイスツリーファイルのアドレスです。
例:tftpネットワークを介してubuntuホストからDDRにzImageとデバイスツリーをダウンロードします。
tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-emmc-4.3-800x480-c.dtb
bootz 80800000 - 83000000
例:fatloadを介してEMMCのパーティション1からDDRにzImageとデバイスツリーをコピーします。
fatload mmc 1:1 80800000 zImage
fatload mmc 1:1 83000000 imx6ull-14x14-emmc-4.3-800x480-c.dtb
bootz 80800000 - 83000000
(2)Linuxを起動します:起動します
bootコマンドはLinuxの起動にも使用されます。bootコマンドはbootcmd環境変数を読み取ってLinuxを起動します。bootcmd環境変数はbootコマンドのセットであるbootコマンドを格納します。特定のbootコマンドの内容は変更できます。
例:tftpネットワークを介してubuntuホストからDDRにzImageとデバイスツリーをダウンロードします。
setenv bootcmd '
tftp 80800000 zImage;
tftp 83000000 imx6ull-14x14-emmc-4.3-800x480-c.dtb;
bootz 80800000 - 83000000;' //设置bootcmd环境变量
saveenv //保存环境变量
boot //启动Linux
例:fatloadを介してEMMCのパーティション1からDDRにzImageとデバイスツリーをコピーします。
setenv bootcmd '
fatload mmc 1:1 80800000 zImage;
fatload mmc 1:1 83000000 imx6ull-14x14-emmc-4.3-800x480-c.dtb;
bootz 80800000 - 83000000;' //设置bootcmd环境变量
saveenv //保存环境变量
boot //启动Linux
10.その他の一般的に使用されるコマンド(リセット、実行、実行)
(1)再起動:リセット
(2)指定されたアドレスにジャンプしてアプリケーションを実行します。goaddr[arg ...] ;主にベアメタルプログラムのデバッグに使用されます
addr:DRAMで使用される最初のアドレス
(3)実行環境変数で定義されたコマンド:実行環境変数;主にカスタム環境変数を実行するために使用されます
参照
「[PunctualAtom] i.MX6U EmbeddedLinuxドライバー開発ガイドV1.3」