(1)先在目录项表中找到与文件名匹配的,如“Mvfile”,从“Myfile”所对应的目录项中可以读到该文件的首簇号0004:
(2)根据首簇号0004访问FAT表,读出首簇号对应的FAT表项内容0005,即第2个簇号。根据第2个簇号再访问FAT表,读出其对应的FAT表内容,即第3个簇号0006…等。依次做下去,直到最后一个表项内容为FFFF为止;
(3)由第(2)步可知,“Myfile“这个文件占用了4个簇,这4个簇号形成一个簇链000dH一0005H一0006H一0008H,根据这些簇号所形成的簇链访问这4个簇号对应的4个数据存储区域.文件“Myfile”就分成4个部分分别存放在这4个存储区域中161。
4.3 IAP功能的实现
IAP:In Application Programming 是指在应用编程,即在程序运行中编程,就是片子提供一系列的机制(硬件/软件上的)当片子在运行程序的时候可以提供一种改变flash数据的方法。通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的boot程序在里面,片子上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到存储区。
LPC2148支持多种方式对Flash进行编程,用来写入用户代码或数据。第一种方式是通过内置的串行JTAG接口进行编程:第二种方式是通过UART0进行在系统编程(ISP);第三种方式是通过在应用编程(IAP)。IAP程序是thumb代码,地址为0x7FFFFFF0。在使用IAP擦除、编程操作过程中,片内Flash存储器不可访问。当用户运行应用程序时,用户Flash区域的中断向量有效.所以在调用Flash擦除、写IAP之前,用户应当禁止中断,确保用户中断向量在RAM中有效和中断处理程序位于RAM中。IAP代码不使用或禁止中断。可将SD卡读出的数据用C代码烧入指定的Flash段中: