20150418 s3c2440 nor_flash驅動程式
2015-04-18 lover雪兒
和前面的nandflash差不多,我們此處來重新學習一下norflash驅動。
1/*2* 參考 drivers\mtd\maps\physmap.c3*/
45 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18
19//
定義nor flash的分割槽
20static
struct mtd_partition lhy_nor_part =,
26 [1] =,
31};
3233
static
struct map_info *lhy_nor_map;
34static
struct mtd_info *lhy_nor_mtd; //
動態建立
3536
static
int lhy_nor_init(void)37
57if(!lhy_nor_mtd)
6263
/*4.新增分割槽: add_mtd_partitions
*/64 add_mtd_partitions(lhy_nor_mtd,lhy_nor_part,2); //
總共兩個分割槽
65return0;
66}6768
static
void lhy_nor_exit(void)69
75}7677
module_init(lhy_nor_init);
78module_exit(lhy_nor_exit);
79 module_license("
gpl"
);80
81/*
8283
使用u-boot來體驗nor flash 的操作(開發板設為nor啟動,進入u-boot)
84使用openjtag燒寫u-boot到nor flash
851.讀資料
86md.b 0
8788
2.讀id
89往位址555h寫入aah
90往位址2aah寫入55h
91往位址555h寫入90h
92讀0位址得到廠家id c2h
93讀1位址得到裝置id 22dah/225dh
94退出讀id狀態 往任意位址寫入f0h
9596
由於2440的cpu的資料線和nor的資料線相錯開,所以uboot操作時,寫的位址應該<<1得到
97往位址aaah寫入aah mw.w aaa aa
98往位址554h寫入55h mw.w 554 55
99往位址aaah寫入90h mw.w aaa 90h
100讀0位址得到廠家id c2h md.w 0 1
101讀2位址得到裝置id 22dah/225dh md.w 2 1
102退出讀id狀態 往任意位址寫入f0h mw.w 0 f0
103104
3.nor 手冊上有兩種規範,jedec,cfi(common flash inte***ce)
105讀取cfi資訊
106進入cfi模式,往位址55h寫入98h
107讀資料: 讀10h得到0051
108讀11h得到0052
109讀12h得到0059
110讀27h得到容量
111uboot操作時,寫的位址應該左移一位
112進入cfi模式,往位址aah寫入98h mw.w aa 98
113讀資料: 讀20h得到0051 md.w 20 1
114讀22h得到0052 md.w 22 1
115讀24h得到0059 md.w 24 1
116讀4eh得到容量 md.w 4e 1 2^n
117退出cfi模式,往任意位址寫入f0h mw.w 0 f0
1184.寫資料 在位址0x100000寫入0x1234 發現無法寫資料
119往位址555h寫入aah
120往位址2aah寫入55h
121往位址555h寫入a0h
122往燒寫位址寫入要寫的資料
123124
u-boot操作
125往位址aaah寫入aah mw.w aaa aa
126往位址554h寫入55h mw.w 554 55
127往位址aaah寫入a0h mw.w aaa a0h
128往燒寫位址寫入要寫的資料 mw.w 100000 1234h 往1m的位址寫資料
129130
1315.測試核心自帶的驅動程式:
1321).通過配置核心支援nor flash
133--> device drivers
134--> memory technology device (mtd) support
135136
cfi flash device in physical memory map
137138
139(2) bank owidth in octets //位寬為16位
1402).make modules
141cp drivers/mtd/maps/physmap.ko /home/study/nfs_home
142143
1446.寫驅動程式
145①分配
146②設定
147③使用
148驅動程式框架:
149150
7.測試 使用自己寫的驅動程式
1512.儲存以前的根檔案系統的bootargs
152nfs 30000000 192.168.1.5:/work/nfs_root/uimage_nonand
153set bootargs console=ttysac0 root=/dev/nfs nfsroot=192.168.1.105:/work/nfs_root/first_fs ip=192.168.1.17:192.168.1.5:192.168.1.1:255.255.255.0::eth0:off
154155
ls /dev/mtd*
156insmod lhy_nor.ko
157ls /dev/mtd*
158格式化: flash_eraseall -j /dev/mtd1 ;格式化為jffs2檔案系統(一般nand(yaffs),nor(jffs2))
159160
掛接: mount -t jffs2 /dev/mtdblock1 /mnt ;格式化時用字元裝置,掛接時用塊裝置
161在裡面增加檔案,重啟之後,看看檔案是否還在
162insmod lhy_nor.ko
163ls /dev/mtd*
164mount -t jffs2 /dev/mtdblock1 /mnt ;讀檔案
165166
1678.協議層追蹤
168lhy_nor_mtd = do_map_probe("cfi_probe",lhy_nor_map);
169lhy_nor_mtd = do_map_probe("jedec_probe",lhy_nor_map);
170171
172*/
求教 s3c2440問題
趙老師您好,我把您的程式新增到我的程式中去了,下面是主要 1 main函式 int main void a a b rgpbdat liushui delay 20 liushui liushui 0xffe 2 pwm初始化 void pwm init void 3 定時器中斷 static vo...
s3c2440系統時鐘
1 flck hclk和pclk的關係 一般來說,mcu的主時鐘源主要是外部晶振或外部時鐘,而用的最多的是外部晶振。在正確情況下,系統內所使用的時鐘都是外部時鐘源經過一定的處理得到的。由於外部時鐘源的頻率一般不能滿足系統所需要的高頻條件,所以往往需要pll 鎖相環 進行倍頻處理。在s3c2440中,...
s3c2440儲存控制
nandflash和norflash都是flash的一種,都是散存,都是磁碟儲存介子,但是nandflash一般比較大,而norflash都比較小,並且norflash比較貴,並且norflash寫的速度比較慢,但讀的速度比較快 而nandflash讀的速度比較慢,寫的速度比較快。nor flash...