本节叙述串口FLASH在TinyOS上的移植。 FLASH采用华邦的W25X80,存储容量8M bit,通过SPI接口进行数据读写,具有写保护功能。
采用3层模型,最底层实现在特定平台中的引脚连接,以及SPI接口的连接。中间层提供Flash接口,该接口为带参数接口(主要是为了学习带参数接口的应用,FLASH的擦除可以体现此方法的优点),参数即为写FLASH的命令。最高层提供应用层模块的接口。
在本架构中,中间层和最高层提供相同的接口Flash,该接口提供的实现方法有erase,perase(提供块擦除和区域擦除),read,write。最高层接口的实现中并没有给出真正的FLASH操作代码,而仅仅是保存了应用层传递的参数,并且设置当前状态变量,申请SPI资源是操作的关键,因为FLASH的操作都是通过SPI接口进行的,当资源申请成功后,根据当前状态,调用中间层FLASH接口相应的实现函数,这样就把应用层的参数传递到中间层,这时开始真正的FLASH操作。
因为接口Flash是带参数的接口模型,那么就需要给出不同的实例,在配件HplFlashC和FlashC中提供了接口Flash的不同实例,包括Flash_program,Flash_read,Flash_chiperase,Flash_blocherase,Flash_sectorerase,而这些接口分别连接到HplFlashWireC和FlashWireC,而其中的接口参数分别为对应的FLASH操作命令。最高层Flash接口连接到中间层Flash接口上,而应用层使用的Flash接口则连接在最高层Flash接口上,这样就完成了整个配线过程。
执行流程:通过接口SplitControl的start启动,该操作完成FLASH控制线的配置,最高层SplitControl接口连接到中间层SplitControl接口上,实际的操作都是在中间层完成。当SplitControl的startDone 触发后,就可以执行接口Flash提供的函数。
应用中需要使用SplitControl接口和Flash接口,连接到模块FlashC上。
移植完成的程序可以在资源中搜索 TinyOS SPI FLASH 移植。
方便大家的交流,加QQ群180839287