Nand分區及nand erase簡解

我的nand flash 32M,kernel 2.6.18, rootfs is emb linux, cramfs.

nand flash分區如下:
static struct mtd_partition nand_partitions[] = {
? ? ? ? /* bootloader (UBL, U-Boot, BBT) in sectors: 0 - 14 */
? ? ? ? {
? ? ? ? ? ? ? ? .name = "bootloader",
? ? ? ? ? ? ? ? .offset = 0,
? ? ? ? ? ? ? ? .size = 32 * NAND_BLOCK_SIZE,??//32x16 = 512k
? ? ? ? ? ? ? ? .mask_flags = MTD_WRITEABLE,? ? ? ? /* force read-only */
? ? ? ? },
? ? ? ? /* bootloader params in the next sector 15 */
? ? ? ? {
? ? ? ? ? ? ? ? .name = "params",
? ? ? ? ? ? ? ? .offset = MTDPART_OFS_APPEND,
? ? ? ? ? ? ? ? .size = 96 * NAND_BLOCK_SIZE, //96x16 = 1536k = 1.5M
? ? ? ? ? ? ? ? .mask_flags = MTD_WRITEABLE,? ? ? ? /* force read-only */
? ? ? ? },
? ? ? ? /* kernel in sectors: 16 */
? ? ? ? {
? ? ? ? ? ? ? ? .name = "kernel",
? ? ? ? ? ? ? ? .offset = MTDPART_OFS_APPEND,
? ? ? ? ? ? ? ? .size = SZ_2M, //2M
? ? ? ? ? ? ? ? .mask_flags = 0
? ? ? ? },
? ? ? ? /* rootfs */
? ? ? ? {
? ? ? ? ? ? ? ? .name = "filesystem1",
? ? ? ? ? ? ? ? .offset = MTDPART_OFS_APPEND,
? ? ? ? ? ? ? ? .size = SZ_16M + SZ_8M, //24M
? ? ? ? ? ? ? ? .mask_flags = 0
? ? ? ? },
? ? ? ? /*parameter*/
? ? ? ? {
? ? ? ? ? ? ? ? .name = "filesystem2",
? ? ? ? ? ? ? ? .offset = MTDPART_OFS_APPEND,
? ? ? ? ? ? ? ? .size = MTDPART_SIZ_FULL, //4M, /mnt/nand, save log,sysenv,
? ? ? ? ? ? ? ? .mask_flags = 0
? ? ? ? }
};

//系統啟動后
# cat /proc/partitions? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
major minor??#blocks??name? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
??31? ???0? ?? ???512 mtdblock0? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
??31? ???1? ?? ? 1536 mtdblock1? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
??31? ???2? ?? ? 2048 mtdblock2? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
??31? ???3? ?? ?24576 mtdblock3? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
??31? ???4? ?? ? 4096 mtdblock4? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
254? ???0? ?? ???512 sbulla? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
#
# cat /proc/mtd? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
dev:? ? size? ?erasesize??name? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
mtd0: 00080000 00004000 "bootloader"? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
mtd1: 00180000 00004000 "params"? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
mtd2: 00200000 00004000 "kernel"? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
mtd3: 01800000 00004000 "filesystem1"? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
mtd4: 00400000 00004000 "filesystem2"? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
#

loadb 20000000????????????????? //(1)
nand erase 0x100000?? 0x200000 ????????? //(2)
nand write 0x20000000 0x100000 0x200000 -//(3)
nand read? 0x20000000 0x100000 0x200000 -//(4)

tftp 0x80200000(內存地址) uImage
過程? 從服務器 到內存 從內存在到Nand flash
為什么呢 因為 nandflash 的擦出 讀寫不獨立 萬一一邊擦好了 可網絡斷了 那就麻煩了 呵呵 通過內存中轉 好主意阿 速度起碼快把 呵呵

(1) 從串口下載到SDRAM的0x20000000處
(2) 從1M處開始擦寫Nand Flash,擦寫2M大小的空間
(3) 將SDRAM中的0x20000000處開始的內容,燒寫到Nand Flash的0x100000處開始的2M空間內
(4) 將Nand Flash的0x100000處開始的2M空間內容,拷貝到SDRAM中0x20000000處開始的地方
Nand flash芯片工作原理
------------------------------------
??? Nand flash芯片型號為Samsung K9F1208U0B,數據存儲容量為64MB,采用塊頁式存儲管理。8個I/O
引腳充當數據、地址、命令的復用端口。

??? 芯片內部存儲布局及存儲操作特點:
??? 一片Nand flash為一個設備(device), 其數據存儲分層為:
??? 1 (Device) = 4096 (Blocks)
??? 1 (Block) -= 32?? (Pages/Rows) 頁與行是相同的意思,叫法不一樣
??? 1 (Page)?? = 528 (Bytes) = 數據塊大小(512Bytes) + OOB 塊大小(16Bytes)
???? 在每一頁中,最后16個字節(又稱OOB)用于Nand Flash命令執行完后設置狀態用,剩余512個字節又
分為前半部分和后半部分。可以通過Nand Flash命令00h/01h/50h分別對前半部、后半部、OOB進行定位通過
Nand Flash內置的指針指向各自的首地址。

??? 存儲操作特點:
??? 1. 擦除操作的最小單位是塊。
??? 2. Nand Flash芯片每一位(bit)只能從1變為0,而不能從0變為1,所以在對其進行寫入操作之前要一定將相應塊擦除(擦除即是將相應塊得位全部變為1).
??? 3. OOB部分的第六字節(即517字節)標志是否是壞塊,如果不是壞塊該值為FF,否則為壞塊。
??? 4. 除OOB第六字節外,通常至少把OOB的前3個字節存放Nand Flash硬件ECC碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253231.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253231.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253231.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

eclipse啟動了tomcat,但是瀏覽器打不開歡迎頁

tomcat在eclipse中啟動成功,主頁卻打不開 癥狀: tomcat在eclipse里面能正常啟動,而在瀏覽器中訪問http://localhost:8080/不能訪問,且報404錯誤。同時其他項目頁面也不能訪問。 關閉eclipse里面的tomcat,在tomcat安裝目…

洛谷1011 車站

水題。題目描述有坑&#xff0c;可以先根據樣例手算試一試//Serene #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> using namespace std; const int maxn50; int f[50],…

三極管放大電路三種類型

根據三極管三個電極與輸入輸出端子的連接方式&#xff0c;可歸納為三種&#xff1a;共發射極電路、共基極電路和共集電極電路&#xff1b; 三種電路的共同點&#xff1a;各有兩個回路&#xff0c;一個輸入回路一個輸出回路&#xff0c;兩個回路有一個公共 端&#xff0c;而公…

ImportError: No module named 'chardet'

1.使用requsets出現這個錯誤&#xff0c;ImportError: No module named chardet 原因&#xff1a;requests依賴其他一些模塊 解決&#xff1a;依次使用pip安裝即可 pip install certifi pip install chardet pip install idna pip install urllib3轉載于:https://www.cnblogs.c…

各種組件的js 獲取值 / js動態賦值

jQuery獲取Select選擇的Text和Value:語法解釋&#xff1a;1. $("#select_id").change(function(){//code...}); //為Select添加事件&#xff0c;當選擇其中一項時觸發2. var checkText$("#select_id").find("option:selected").text(); //獲取…

Linux下/proc目錄簡介

1. /proc目錄 Linux 內核提供了一種通過 /proc 文件系統&#xff0c;在運行時訪問內核內部數據結構、改變內核設置的機制。proc文件系統是一個偽文件系統&#xff0c;它只存在內存當中&#xff0c;而不占用外存空間。它以文件系統的方式為訪問系統內核數據的操作提供接口。 用戶…

Mysql帶返回值與不帶返回值的2種存儲過程

過程1&#xff1a;帶返回值&#xff1a; 1 drop procedure if exists proc_addNum; 2 create procedure proc_addNum (in x int,in y int,out sum int) 3 BEGIN 4 SET sum x y; 5 end 然后&#xff0c;執行過程&#xff0c;out輸出返回值&#xff1a; 1 call proc_addNum(2,3,…

MOS管的米勒效應簡介

一、米勒平臺介紹 Mos管的三極都會存在以下 的三個電容,分別是:Cgs,Cgd,Cds。 米勒電容指的是Cgd。米勒效應在MOS驅動中臭名昭著,他是由MOS管的米勒電容引發的米勒效應,在MOS管開通過程 中,GS電壓上升到某一電壓值后GS電壓有一段穩定值(圖中t2~t3階段),過后Vgs電壓…

PopupWindow 使用詳解(二) Popwindow 制作常見花哨效果

帝都幾日降溫&#xff0c;終于被撂倒了。but 只要一息尚存就得不斷進步&#xff01;于是&#xff0c;寫出 《PopupWindow 使用詳解》的第二篇 筆記&#xff0c;先奉上 第一篇鏈接: 《PopupWindow 使用詳解&#xff08;一&#xff09; 中文API 文檔 贈送 ListPopupWindow 中文 A…

hbase replication原理分析

本文只是從總體流程來分析replication過程&#xff0c;很多細節沒有提及&#xff0c;下一篇文章準備多分析分析細節。replicationSource啟動過程org.apache.hadoop.hbase.regionserver.HRegionServer#startServiceThreads ->org.apache.hadoop.hbase.replication.regionserv…

8168

http://blog.csdn.net/crushonme/article/details/10287693 http://blog.csdn.net/yangxueble/article/details/10138763

Mysql查詢結果只有一條的情況下把值賦值給變量,再用if else 流程判斷

1 BEGIN 2 set n(SELECT count(day) from log where dayCURDATE()); 3 IF n0 THEN 4 call m_LogInsert(); 5 ELSE 6 call m_LoginCheck(); 7 end if; 8 end 轉載于:https://www.cnblogs.com/mengms/p/7629486.html

近距離無線通信技術對比

定義&#xff1a;無線通信是利用電磁波信號在自由空間中傳播的特性進行信息交換的一種通信方式。 優點&#xff1a;成本低、無物理線路&#xff0c;不受工業環境限制&#xff0c;環境適應能力強&#xff1b; 故障診斷簡單&#xff0c;可遠程診斷&#xff0c;擴展性強&#xff…

看不清的融資迷局 二線玩家字節跳動在打什么主意?

互聯網似乎對離經叛道者總是多一分關注&#xff0c;吃瓜心態隨著時間的推進越來越濃烈。 其中&#xff0c;今日頭條成了“看熱鬧”時代最佳的“演員”之一&#xff0c;供看客消遣&#xff1a;其母公司字節跳動一個融資傳聞從8月炒到了10月&#xff0c;即便是媒體通過信源確認這…

第3章-動態基礎分析實驗

Lab 3-1 Question: 1.先對文件使用PEID進行查殼,顯示文件被加殼處理過 2.使用Dependency Walker查看文件導入函數&#xff0c;文件只有一個DLL而且只有一個導入函數Exitprocess 3.使用Strings程序查看字符串&#xff0c;發現可疑字符串。 4.動態分析前期準備 4.1 對系統進行初始…

如何優化增強第三方庫?

開發中&#xff0c;我們不可避免要使用&#xff0c;別人花很多時間打磨好的輪子&#xff0c;輪子好用&#xff0c;但有時卻無法完全滿足我們的要去&#xff0c;這時我們不可避免的要去修改增強一下這個庫&#xff0c;如何增強&#xff1f; 我認為&#xff0c;一般有兩種修改的方…

C語言變長數組data[0]【總結】

C語言變長數組data[0]【總結】 1、前言 今天在看代碼中遇到一個結構中包含char data[0]&#xff0c;第一次見到時感覺很奇怪&#xff0c;數組的長度怎么可以為零呢&#xff1f;于是上網搜索一下這樣的用法的目的&#xff0c;發現在linux內核中&#xff0c;結構體中經常用到data…

Excel 轉為 MySQL 語句

一、方法 一、假設你的表格有A、B、C三列數據&#xff0c;希望導入到你的數據庫中表格table&#xff0c;對應的字段分別是col1、col2、col3 二、在你的表格中增加一列&#xff0c;利用excel的公式自動生成sql語句&#xff0c;具體方法如下&#xff1a; 1、增加一列&#xff08;…

CentOS7下安裝zookeeper3.4.9

獲取zookeeper官方安裝包 1 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz 解壓該文件包 1 tar zxf zookeeper-3.4.9.tar.gz 進入conf文件夾并創建新配置文件 1 cd zookeeper-3.4.9/conf 2 vi zoo.cfg 在config文件中加…