ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
11 июля
356802
Unreal_2004 (25.09.2012 08:02, просмотров: 610)
LPC4350 USBD_API and SD/MMC - карты объемом более 4GB - может кому нить время сэкономит. Оживляя плату с LPC4350 на борту от HITEX столкнулся с проблемой. У NXP в контроллер встроена ROM с поддержкой USB mass storage. Удобно. Говоришь просто что нужен MassStorage - и все работает. Но параметр который передается в ф-цию выглядит так typedef struct USBD_MSC_INIT_PARAM { uint32_t BlockCount; /**< Number of blocks present in the mass storage device */ uint32_t BlockSize; /**< Block size in number of bytes */ uint32_t MemorySize; /**< Memory size in number of bytes */ } Обратите внимание - передается кол-во блоков, размер блока и общий размер памяти.... Причем общий размер памяти 32 бита - т.е. до 4GB NXP ответил - Dmitry, Unfortunately the MSC class in our USB ROM drivers does not support volume sizes larger than 4gb in size. To do this using the ROM drivers you would need to implement your own MSC class using the custom class interface. Regards Зашибись.... В процессе реализации своего стэка меня торкнуло... попробовал указать MemorySize=0xFFFFFFFF В этом случае реальный размер вычисляется как BlockSize*BlockCount Заработало. Т.е. capacity = BlockSize * BlockSize If capacity < 4GB then USBD_MSC_INIT_PARAM_T::MemorySize = capacity USBD_MSC_INIT_PARAM_T::BlockSize = BlockSize USBD_MSC_INIT_PARAM_T::BlockCount = BlockSize If capacity >= 4GB USBD_MSC_INIT_PARAM_T::MemorySize = 0xFFFFFFFF USBD_MSC_INIT_PARAM_T::BlockSize = BlockSize USBD_MSC_INIT_PARAM_T::BlockCount = BlockSize