本帖最后由 aoshi0603 于 2011-8-19 11:33 编辑
想在STM32片内Flash最后100页使用FstFS, 思路是模拟NAND Flash把片内Flash每页做为一块(block),每页分成4份(每份为一段sector, 512字节),已经弄了一天了, 还没成功, 总是死在这里:
void HardFaultException(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{}
}出现硬件错误还没查到原因,仔细检暂时也没发现有指针越界。
问一下, 片内Flash使用FatFS可行不?
补充一下,用的uC/OS-II操作系统.
以下两个函数我都验证了,没有什么问题,从sector 0 到sector 424,每写一个sector再读出来,数据相同,而且没出现硬件固障:
DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);
DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);
成功了, 改了一下ffconf.h文件中的一个宏:
#define _MAX_SS 1024 /* 512, 1024, 2048 or 4096 */
/* Maximum sector size to be handled.
/ Always set 512 for memory card and hard disk but a larger value may be
/ required for on-board flash memory, floppy disk and optical disk.
/ When _MAX_SS is larger than 512, it configures FatFs to variable sector size
/ and GET_SECTOR_SIZE command must be implememted to the disk_ioctl function. */
原来设的512字节,设计上sector大小定为512字节,所以这个宏给的是512,可是为什么不行那?现在设为1024可以,以后会不会再出问题?
现在格式化,创建data.txt,写文件,读文件功能都好用了 |