2023-05-25
2023-05-23
2023-05-15
2023-04-07
2023-03-28
2023-03-21
住所:昆山市張浦鎮十人路3階4号工場ビル550号
電話:0512-57225603
携帯:13812682041赵小姐
メール:jessie@ptchip.com.cn
著者:Onco Technology発売日:2020-11-20視聴者:468
業界をリードするプログラマーメーカーとして、Ontech(ストックコード:873207)は、国内の優れたチップメーカーであるAllwinner TechnologyおよびMediaTekとの緊密な協力関係を主導し、Allwinnerによって開発されたUBIファイルシステムのオフラインプログラミングをサポートしています。 スマートスピーカーの生産と燃焼効率; Onco手動バーナーAP8000、高品質自動バーナーIPS7000、費用対効果の高いEAP3000、EAP5000では、Allwinner R328、MTK MediaTek MTK8516、MTK8167スマートスピーカーNandFlashプログラミングの燃焼を完全にサポートします。 アルゴリズム;
图一:AP8000
UBIファイルシステムの概要
linux-2.6.27より前は、Flashファイルシステムについて話すとき、多くの人がcramfs、jffs2、yaffs2などのファイルシステムについて考えることがよくあります。また、ファイルシステム+ mtd +フラッシュデバイスアーキテクチャに基づいています。 linux-2.6.27の後、カーネルは新しいタイプのフラッシュファイルシステムUBI(Unsorted Block Images)を追加しました。ここでは、UBIファイルシステムが追加された理由とその使用方法について簡単に紹介します。私もこのファイルシステムに不慣れで、誤解があるかもしれません。訂正してください。
1.背景
FLASHには、「消去してから書き込む」、不良ブロック、および「読み取りと書き込みの数が制限される」という特性があります。FLASHを管理するための現在の方法には、主に次のものがあります。
1. MTD + FTL / NFTL(フラッシュ変換レイヤー/ nおよびフラッシュ変換レイヤー)+ FAT、ext2などの従来のファイルシステムを採用します。 FTL / NFTLの使用は、FLASHの固有の属性を目的としており、ログ管理、不良ブロック管理、損益バランスなどのテクノロジーをソフトウェアで実現します。ただし、実際には、このスキームには、知的財産権や効率などのさまざまな要因により、特定の制限があることが証明されています。
2.ハードウェア変換レイヤー+従来のファイルシステムを使用します。この方法は、SDカード、Uディスクなどの多くのメモリカード製品で採用されています。一部の製品では、このソリューションのコストが高くなります。
3. JFFS1 / 2、YAFFS1 / 2などのMTD + FLASH特殊ファイルシステムを使用します。 FLASHの管理能力を大幅に向上させ、広く使用されています。
JFFS2、YAFFS2、およびその他の特殊なファイルシステムにも、メモリ消費量の多さ、FLASH容量への線形依存、ファイルシステムのサイズ、コンテンツ、アクセスモードなど、利益と損失のバランス能力の低下、または一時的な利益と損失など、いくつかの技術的なボトルネックがあります。これに関連して、カーネルはUBIファイルシステムのサポートを追加しました。
2、使用法
環境:omap3530プロセッサ、(128Mバイト16ビットNANDフラッシュ)、linnux-2.6.28カーネル
1.UBIFSをサポートするようにカーネルを構成します
デバイスドライバ--->メモリテクノロジーデバイス(MTD)のサポート---> UBI-ソートされていないブロックイメージ---> UBIを有効にする
UBIインターフェイスをサポートするようにmtdを構成します
ファイルシステム--->その他のファイルシステム---> UBIFSファイルシステムのサポート
UBIFSファイルシステムをサポートするようにカーネルを構成します
2.MTDパーティション4をUBIFS形式でマウントします
●flash_eraseall / dev / mtd4 // mtd4を消去します
●ubiattach / dev / ubi_ctrl -m 4 // mtd4に関連付けられています
●ubimkvol / dev / ubi0 -N rootfs -s 100MiB //ボリュームサイズ(固定値ではなく、ツールで変更できます)と名前を設定します
●mount-t ubifs ubi0_0 / mnt / ubiまたはmount-t ubifs ubi0:rootfs / mnt / ubi
3.UBIFSファイルシステムを作成します
UBIイメージを作成するときは、次のパラメーターを決定する必要があります。
MTDパーティションサイズ; //対応するFLASHパーティションサイズ
フラッシュ物理消去ブロックサイズ; //フラッシュ物理消去ブロックサイズ
最小フラッシュ入力/出力ユニットサイズ; //小さいフラッシュ入力および出力ユニットサイズ
NANDフラッシュの場合-サブページサイズ; // NANDフラッシュの場合、サブページサイズ
論理消去ブロックサイズ//論理消去ブロックサイズ
パラメータはいくつかの方法で取得できます
1)2.6.30以降のカーネルを使用している場合、この情報は、mtdinfo-uなどのツールを使用してカーネルから取得できます。
2)以前のカーネルは、次の方法を使用できます。
●MTDパーティションサイズ:カーネルパーティションテーブルまたはcat / proc / mtdから取得
●フラッシュ物理消去ブロックサイズ:フラッシュチップマニュアルまたはcat / proc / mtdからフラッシュ物理消去ブロックサイズを取得できます。
●最小フラッシュ入力/出力ユニットサイズ:
1)フラッシュも:通常1バイト
2)nand falsh:ページ
●サブページサイズ:フラッシュマニュアルから取得
●論理消去ブロックサイズ:サブページのあるNANDフラッシュの場合、「物理消去ブロックサイズ-1ページサイズ」と同じです。
3)ubiとmtdが接続されているときに生成される、次のような情報からも取得できます。
#modprobe ubi mtd = 4 // ubiはモジュールとしてロードされます
または
#ubiattach / dev / ubi_ctrl -m 4 // ubiattachを介してMTDを関連付ける
UBI:mtd4をubi0にアタッチする
UBI:物理消去ブロックサイズ:131072バイト(128 KiB)
UBI:論理消去ブロックサイズ:129024バイト
UBI:最小フラッシュI / Oユニット:2048
UBI:サブページサイズ:512
UBI:VIDヘッダーオフセット:512(位置合わせ512)
UBI:データオフセット:2048
UBI:mtd4をubi0に接続
詳細な説明については、http://www.linux-mtd.infradead.org/doc/ubi.html#L_overheadを参照してください。
#mkfs.ubifs -r rootfs -m 2048 -e 129024 -c 812 -o ubifs.img
#ubinize -o ubi.img -m 2048 -p 128KiB -s 512 / home / lht / omap3530 / tools / ubinize.cfg
-r:ファイルコンテンツの場所を指定します
-m:ページサイズ
-e:論理消去ブロックサイズ
-p:物理的な消去ブロックサイズ
-c:大きな論理消去ブロックの数
この場合、ファイルシステムはボリューム上の129024 * 812 = 100Mスペースにアクセスできます。
-s:k9f1208の256などの小さなハードウェア入力および出力ページサイズ(上半分と下半分のページアクセス)
その中で、ubinize.cfgの内容は次のとおりです。
[ubifs]
mode = ubi
image = ubifs.img
vol_id = 0
vol_size = 100MiB
vol_type = dynamic
vol_name = rootfs
vol_flags = autoresize
4. ubootを使用して、UBIFSイメージを書き込んで開始します
1)UBIFSイメージを書き込む
OMAP3 DevKit8000#mmcinit
OMAP3 DevKit8000#fatload mmc 0:1 81000000 ubi.img
ubi.imgを読む
読み取り12845056バイト
OMAP3 DevKit8000#ロック解除
デバイス0チップ全体
nand_unlock:開始:00000000、長さ:268435456!
NANDフラッシュのロックが正常に解除されました
OMAP3 DevKit8000#nand ecc sw
OMAP3 DevKit8000#ナンド消去680000 7980000
NAND消去:デバイス0オフセット0x680000、サイズ0x7980000
0x7fe0000で消去-100%完了。
OK
OMAP3 DevKit8000#nand write.i 81000000 680000 $(ファイルサイズ)
NAND書き込み:デバイス0オフセット0x680000、サイズ0xc40000
0x12bf800でのデータの書き込み-100%完了。
書き込まれた12845056バイト:OK
カーネルイメージの書き込みと書き込みのプロセスは同じであるため、UBIファイルシステムは、yaffsファイルシステムのようにnのOOB領域を使用しないでください。
2)ルートファイルシステムのブートパラメータとしてUBIFSファイルシステムを設定します
OMAP3 DevKit8000#setenv bootargs console = ttyS2,115200n8 ubi.mtd = 4 root = ubi0:rootfs
rootfstype = ubifs video = omapfb:mode:4.3inch_LCD
OMAP3 DevKit8000#setenv bootcmd nand read.i 80300000 280000 200000; bootm 80300000
ルートファイルシステムの場所はMTD4です。
システムが起動すると、UBIに関連する次の情報が出力されます。
'omap2-nand'で5つのMTDパーティションを作成します。
0x00000000-0x00080000:「Xローダー」
0x00080000-0x00260000:「U-Boot」
0x00260000-0x00280000:「U-BootEnv」
0x00280000-0x00680000:「カーネル」
0x00680000-0x08000000:「ファイルシステム」
UBI:mtd4をubi0にアタッチする
UBI:物理消去ブロックサイズ:131072バイト(128 KiB)
UBI:論理消去ブロックサイズ:129024バイト
UBI:最小フラッシュI / Oユニット:2048
UBI:サブページサイズ:512
UBI:VIDヘッダーオフセット:512(位置合わせ512)
UBI:データオフセット:2048
UBI:mtd4をubi0に接続
UBI:MTDデバイス名:「ファイルシステム」
UBI:MTDデバイスサイズ:121 MiB
UBI:優れたPEBの数:970
UBI:不良PEBの数:2
UBI:最大許容ボリューム:128
UBI:摩耗レベリングしきい値:4096
UBI:内部ボリュームの数:1
UBI:ユーザーボリューム数:1
UBI:利用可能なPEB:0
UBI:予約済みPEBの総数:970
UBI:不適切なPEB処理用に予約されているPEBの数:9
UBI:最大/平均消去カウンター:2/0
Oncotech(証券コード:873207)は、バーナー(プログラマー)業界で最初の国内上場企業であり、バーナー(プログラマー)、自動バーナー、自動オンラインバーナーの研究開発、製造、サービスを独自に所有しています。 同時に、深セン、台北、蘇州、陽州、上海に研究開発・生産サービス拠点を設立し、国内外の大規模工場に好まれるプログラミングソリューションブランドです。オンコテックは、プログラミング機器の開発、製造、サービスにおいて10年以上の豊富な経験を持っています。 経験、世界をリードするテクノロジー、そして革新的なプログラミングソリューションと製品をお客様に提供することをお約束します。 私たちは、プログラミング機器の信頼性、セキュリティ、知的財産保護に卓越した貢献をするために懸命に取り組んでいます。 Oncoは、品質とテクノロジーの追求により、信頼できるパートナーとしてOncoを選択するエレクトロニクスメーカーが増えると常に確信しています。新製品は継続的にリリースされていますので、ご期待ください。