最近在搞BOOT,于是利用手里的板子LPC1778的片子进行调试。
先去网上找了下发现没有LPC1778U盘进行更行的历程,于是只能自己动手做了。
1.首先当然是U盘底层驱动,这里没什么可说的,当然是下载NXP官网最新的底层库,然后再弄个FAT文件系统,一切似乎都是水到渠成没有什么大的问题。但是当我在调试时却发现枚举成功后却不能读写U盘。单步调试发现没有文件系统,读写U盘零扇区返回0,本来应该是返回MBR的。
这是为什么呢?在网上找了问了好久才找到,可能问题出在LPC1778片子上。重新查看数据手册,发现U盘底层读写的缓存是存放在设备RAM中的,而FAT文件系统中的BUFF是放在RAM中,无法读取设备RAM中的数据。于是这又引出另一个问题:如何读取设备RAM中的数据呢?
1)可以将FAT中的结构体(主要是FAT FIL)定义到设备RAM中。(此设计到MDK的环境设置以及分散加载文件,后续会讲如何修改)
2)利用NXP底层驱动中定义的变量
volatile uint8_t *FATBuffer; /* Buffer used by FAT file system */
volatile uint8_t *UserBuffer; /* Buffer used byapplication */
进行读写,再使用memcpy进行复制到FAT的BUFF中,虽然繁琐但是简单实用。
到这里U盘底层驱动就结束了。