Nand Flash 分区问题

时间:2022-05-12 16:36:16
我在EBOOT里面没有对Flash进行分区,我是直接下载到RAM里面运行的,当我加载了Flash驱动后,怎么也会显示FAT分区呢??(在Flash驱动初始化里面也没有进行分区)
以前有对Flash进行格式化,但是后来对Flash擦除过,难道没有擦除干净??

25 个解决方案

#1


帮顶
   回复内容太短了! 

#2


不是没格式化干净,是你的注册表和驱动实现了FLASH的FAT分区,所以在启动OS的时候检测没有分区便自动帮你分区。

#3


引用 2 楼 veabol 的回复:
不是没格式化干净,是你的注册表和驱动实现了FLASH的FAT分区,所以在启动OS的时候检测没有分区便自动帮你分区。


那我怎么可以更改分区的大小??或者怎么指定分区的起始地址??

#4


分区和更改分区的大小,一般都是在EBOOT中做的。
建议楼主仔细的看一下EBOOT的相关代码。

#5


不同的BSP不同,有些是在EBOOT里,有些是在platform.reg里边设置的,你都看下吧

#6


引用 4 楼 sunrain_hjb 的回复:
分区和更改分区的大小,一般都是在EBOOT中做的。
建议楼主仔细的看一下EBOOT的相关代码。


sunrain_hjb大侠,我在EBOOT没有使用BP_OpenPartition之类的函数,也没有使用CreatePartition,我把这些函数都屏蔽掉了。

#7


引用 5 楼 veabol 的回复:
不同的BSP不同,有些是在EBOOT里,有些是在platform.reg里边设置的,你都看下吧


在注册表中??我查了一下好想没有设置分区的大小的表项诶??
郁闷。。。

#8


你的意思是以前实现BinFS,现在不想用这个功能?不进行分区直接烧写?
这样的话你可以参照如何实现BinFS,相当于一个逆运算啊!
或者在注册表中你把有关FAT和分区的内容屏蔽一下,试试?

#9


注册表中有关NAND驱动中可能会有分区占用sector数目的设置,也就是设置了分区大小。

#10


引用 8 楼 xilidecai 的回复:
你的意思是以前实现BinFS,现在不想用这个功能?不进行分区直接烧写?
这样的话你可以参照如何实现BinFS,相当于一个逆运算啊!
或者在注册表中你把有关FAT和分区的内容屏蔽一下,试试?

我就是把分区的内容直接全部屏蔽掉了。。可还是看见有盘符出来,大小大概24M多

#11


把你注册表中关于NAND的内容帖出来,看看有没有。

#12


引用 9 楼 veabol 的回复:
注册表中有关NAND驱动中可能会有分区占用sector数目的设置,也就是设置了分区大小。

这个注册表项是系统使用的,还是我驱动中会读这个注册表项??我在驱动中没有看到有读这个注册表项的。
另外,分区的起始Sector也会在注册表中设置么??

#13


引用 12 楼 luixing67 的回复:
引用 9 楼 veabol 的回复:
注册表中有关NAND驱动中可能会有分区占用sector数目的设置,也就是设置了分区大小。

这个注册表项是系统使用的,还是我驱动中会读这个注册表项??我在驱动中没有看到有读这个注册表项的。
另外,分区的起始Sector也会在注册表中设置么??

不同的驱动代码不同,分区设置方法也不同,我只是说有这种方式,至于你的是不是这样我也没办法知道。

#14


注册表中有没有
"WMRStartSector"=dword:0
"WMRNumOfSector"=dword:C000
这样类似的内容?

#15


没有,如果有的话,我就可以查查哪边用这个注册表项了。。。
     "Prefix"="DSK"
     "Ioctl"=dword:4
     "Order"=dword:0
     "Index"=dword:1
     "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Profile"="S3C2440Disk"
"Flags"=dword:1000

Profiles目录下的是
     "AutoMount"=dword:1
     "AutoPart"=dword:1
     "AutoFormat"=dword:1
     "MountFlags"=dword:2
     "Name"="S3C2440Disk"
     "Folder"="Flash"
     "DefaultFileSystem"="FATFS"
     "PartitionDriver"="mspart.dll"

#16


没用过2440,当时用2410时是在EBOOT中分区的,不知道2440是否跟2410差不多。

#17


引用 16 楼 sunrain_hjb 的回复:
没用过2440,当时用2410时是在EBOOT中分区的,不知道2440是否跟2410差不多。

都是差不多的,我现在的想法是不用EBOOT,直接用NBOOT,用ADS编译的。
我记得以前见人家的BSP,也是用NBOOT编译的,也没有见人家分区,但是程序运行后确实有分区,而且貌似FLASH驱动中也没有分区的代码。奇怪

#18


总共就一下FAT分区吗?可能是驱动自动将剩余的FLASH空间分区的?

#19


引用 17 楼 luixing67 的回复:
引用 16 楼 sunrain_hjb 的回复:
没用过2440,当时用2410时是在EBOOT中分区的,不知道2440是否跟2410差不多。

都是差不多的,我现在的想法是不用EBOOT,直接用NBOOT,用ADS编译的。
我记得以前见人家的BSP,也是用NBOOT编译的,也没有见人家分区,但是程序运行后确实有分区,而且貌似FLASH驱动中也没有分区的代码。奇怪

还有一种可能就是通过外部烧写工具分区的。
要在NBOOT中实现分区,可能性非常小。

#20


顶起,好好学习

#21


引用 18 楼 veabol 的回复:
总共就一下FAT分区吗?可能是驱动自动将剩余的FLASH空间分区的?

是的,就一个FAT分区。而且系统没有采用BinFS.
驱动怎么自动分区呢??不知怎么做到的??

#22


学习中!帮顶!

#23


做个记号学习一下

#24


有一个月没来了,今天来顶顶帖子,呵呵

#25


如果bootloader没有分区,但是加载了flash驱动跟注册表后,怎么会看见盘符??疑惑

#1


帮顶
   回复内容太短了! 

#2


不是没格式化干净,是你的注册表和驱动实现了FLASH的FAT分区,所以在启动OS的时候检测没有分区便自动帮你分区。

#3


引用 2 楼 veabol 的回复:
不是没格式化干净,是你的注册表和驱动实现了FLASH的FAT分区,所以在启动OS的时候检测没有分区便自动帮你分区。


那我怎么可以更改分区的大小??或者怎么指定分区的起始地址??

#4


分区和更改分区的大小,一般都是在EBOOT中做的。
建议楼主仔细的看一下EBOOT的相关代码。

#5


不同的BSP不同,有些是在EBOOT里,有些是在platform.reg里边设置的,你都看下吧

#6


引用 4 楼 sunrain_hjb 的回复:
分区和更改分区的大小,一般都是在EBOOT中做的。
建议楼主仔细的看一下EBOOT的相关代码。


sunrain_hjb大侠,我在EBOOT没有使用BP_OpenPartition之类的函数,也没有使用CreatePartition,我把这些函数都屏蔽掉了。

#7


引用 5 楼 veabol 的回复:
不同的BSP不同,有些是在EBOOT里,有些是在platform.reg里边设置的,你都看下吧


在注册表中??我查了一下好想没有设置分区的大小的表项诶??
郁闷。。。

#8


你的意思是以前实现BinFS,现在不想用这个功能?不进行分区直接烧写?
这样的话你可以参照如何实现BinFS,相当于一个逆运算啊!
或者在注册表中你把有关FAT和分区的内容屏蔽一下,试试?

#9


注册表中有关NAND驱动中可能会有分区占用sector数目的设置,也就是设置了分区大小。

#10


引用 8 楼 xilidecai 的回复:
你的意思是以前实现BinFS,现在不想用这个功能?不进行分区直接烧写?
这样的话你可以参照如何实现BinFS,相当于一个逆运算啊!
或者在注册表中你把有关FAT和分区的内容屏蔽一下,试试?

我就是把分区的内容直接全部屏蔽掉了。。可还是看见有盘符出来,大小大概24M多

#11


把你注册表中关于NAND的内容帖出来,看看有没有。

#12


引用 9 楼 veabol 的回复:
注册表中有关NAND驱动中可能会有分区占用sector数目的设置,也就是设置了分区大小。

这个注册表项是系统使用的,还是我驱动中会读这个注册表项??我在驱动中没有看到有读这个注册表项的。
另外,分区的起始Sector也会在注册表中设置么??

#13


引用 12 楼 luixing67 的回复:
引用 9 楼 veabol 的回复:
注册表中有关NAND驱动中可能会有分区占用sector数目的设置,也就是设置了分区大小。

这个注册表项是系统使用的,还是我驱动中会读这个注册表项??我在驱动中没有看到有读这个注册表项的。
另外,分区的起始Sector也会在注册表中设置么??

不同的驱动代码不同,分区设置方法也不同,我只是说有这种方式,至于你的是不是这样我也没办法知道。

#14


注册表中有没有
"WMRStartSector"=dword:0
"WMRNumOfSector"=dword:C000
这样类似的内容?

#15


没有,如果有的话,我就可以查查哪边用这个注册表项了。。。
     "Prefix"="DSK"
     "Ioctl"=dword:4
     "Order"=dword:0
     "Index"=dword:1
     "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
"Profile"="S3C2440Disk"
"Flags"=dword:1000

Profiles目录下的是
     "AutoMount"=dword:1
     "AutoPart"=dword:1
     "AutoFormat"=dword:1
     "MountFlags"=dword:2
     "Name"="S3C2440Disk"
     "Folder"="Flash"
     "DefaultFileSystem"="FATFS"
     "PartitionDriver"="mspart.dll"

#16


没用过2440,当时用2410时是在EBOOT中分区的,不知道2440是否跟2410差不多。

#17


引用 16 楼 sunrain_hjb 的回复:
没用过2440,当时用2410时是在EBOOT中分区的,不知道2440是否跟2410差不多。

都是差不多的,我现在的想法是不用EBOOT,直接用NBOOT,用ADS编译的。
我记得以前见人家的BSP,也是用NBOOT编译的,也没有见人家分区,但是程序运行后确实有分区,而且貌似FLASH驱动中也没有分区的代码。奇怪

#18


总共就一下FAT分区吗?可能是驱动自动将剩余的FLASH空间分区的?

#19


引用 17 楼 luixing67 的回复:
引用 16 楼 sunrain_hjb 的回复:
没用过2440,当时用2410时是在EBOOT中分区的,不知道2440是否跟2410差不多。

都是差不多的,我现在的想法是不用EBOOT,直接用NBOOT,用ADS编译的。
我记得以前见人家的BSP,也是用NBOOT编译的,也没有见人家分区,但是程序运行后确实有分区,而且貌似FLASH驱动中也没有分区的代码。奇怪

还有一种可能就是通过外部烧写工具分区的。
要在NBOOT中实现分区,可能性非常小。

#20


顶起,好好学习

#21


引用 18 楼 veabol 的回复:
总共就一下FAT分区吗?可能是驱动自动将剩余的FLASH空间分区的?

是的,就一个FAT分区。而且系统没有采用BinFS.
驱动怎么自动分区呢??不知怎么做到的??

#22


学习中!帮顶!

#23


做个记号学习一下

#24


有一个月没来了,今天来顶顶帖子,呵呵

#25


如果bootloader没有分区,但是加载了flash驱动跟注册表后,怎么会看见盘符??疑惑