0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 5
|
|
1 | |
STM32F429 USB Mass Storage из внутренней flash31.07.2018, 14:56. Показов 15527. Ответов 56
Ребят, можете помочь, нужно реализовать usb Mass Storage на stm32f429, используя внутреннюю флеш память контроллера. Устройство в системе опознается как Mass Storage, при попытке на него зайти, ОС просит его отформатировать, при форматировании выскакивает ошибка. проект прикладываю
0
|
31.07.2018, 14:56 | |
Ответы с готовыми решениями:
56
STM32 USB MASS STORAGE in FLASH memory STM32f429 mass storage device + sdram LPC1788 Mass Storage device на базе SPI Flash USB mass storage class |
03.10.2018, 12:18 | 41 |
Указано наличие двух FAT, но чтение программно переадресуется на одну ту же виртуальную FAT. Разойтись не должны.
Проблему пока подавил установкой флага FILE_FLAG_NO_BUFFERING в функции CreateFile , т.е. отключением File Buffering, при чтении файла с накопителя.
1
|
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
03.10.2018, 13:46 | 42 |
звучит фантастично ). Вроде винда ж не настолько тупая, чтобы рандомно кешировать страницы FLASH'а? . Потому что адреса выглядят снаскоку - вполне хаотично...
PS: File buffering для съемных вроде по умолчанию отключен в системе. Разве нет?
0
|
03.10.2018, 14:03 | 43 |
Можно предположить, что винда излишне умная. Увидев, что кластер читается медленно, запрашивает какой-то другой кластер по неизвестному алгоритму. Адреса вроде и случайно выглядят, но повторяемость их отличная. Но точно причину не знаю.
Также замечено, что если в отладке приостановить (breakpoint) чтение первого перескакивающего блока, то всё считывается нормально. Про отключение не знаю. До настроек кеширования флешки не добраться - прав не хватает. Добавлено через 2 минуты Как запасной вариант рассматриваю один-два мелких файла, в которые можно записать команду и считать ответ.
1
|
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
03.10.2018, 16:33 | 44 |
...имея такой инструмент можно вообще сделать запрос-ответ интерфейс, как при работе с доступом "read-write". Так что это классный хинт. В принципе я делал управление через имена файлов. То есть как только система пытается создать определенный файл - происходит реакция. Но ваш вариант с распарсиванием контента даже лучше.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
03.10.2018, 18:14 | 45 |
Господа! я уже ничего не понимаю о чем вы говорите, но система FAT имеет одну таблицу FAT в которой расписаны все клястеры
и еще одну таблицу имен, где расписано какой файл али директория в каком клястере начало энтой сущности лежит или вы о чем то другом?
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
04.10.2018, 15:05 | 47 |
Rius, спасибо, давно не работал не помню
я так понял, отсюда http://piclist.ru/S-FAT-MMC-RUS/S-FAT-MMC-RUS.html что не только в FAT16 а в любых FAT
0
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 8
|
|
13.10.2018, 16:47 | 48 |
А для того чтобы всякая периферия работала в бутоладере, надо ли её деинициализировать на основной прошивке перед переходом в бутлоадер?
Хочу прошиваться через UART, но в бутоладере он у меня не работает.
0
|
13.10.2018, 16:59 | 49 |
Ну... я, для захода в загрузчик из основной прошивки, ставлю флаг в области памяти, сбросом и инициализацией не затрагиваемой, и вызываю сброс через AIRCR и SYSRESETREQ. В загрузчике периферия инициализируется заново, по своему, и работает.
Если же речь о встроенном в МК загрузчике по UART, а не самодельном, то он иначе запускается.
0
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 8
|
|
13.10.2018, 17:11 | 50 |
Rius, можешь пример из кода скинуть,где ты вызываешь сброс?
0
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 8
|
|||||||||||||||||||||
16.10.2018, 15:26 | 52 | ||||||||||||||||||||
Rius, Можешь пожалуйста обьяснить что просходит в твоей функции
1)Для чего смешать адрес на 4?
0
|
16.10.2018, 15:55 | 53 |
В таблице векторов прерываний вектор Reset находится по смещению 0x0004: Cortex-M4 Devices Generic User Guide - 2.3.4. Vector table.
Да, смещают: Cortex-M4 Devices Generic User Guide - 4.3.4. Vector Table Offset Register Вероятно, да. В другом своём загрузчике я вызываю HAL_NVIC_SystemReset и сразу после сброса проверяю, надо ли перейти на адрес прошивки.
0
|
16.10.2018, 16:11 | 55 | |||||||||||||||
Так удачно сложилось, что выполняемая пользовательская прошивка вызывает функцию SystemInit() после сброса, ещё до main(). А уже в SystemInit() прописана установка VTOR. Кликните здесь для просмотра всего текста
Тоже можно поправить. Но вроде не принципиально. Пользовательская прошивка запускается с выключенными прерываниями, поэтому до установки ею VTOR доходит своим ходом.
0
|
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 8
|
||||||
16.10.2018, 16:44 | 56 | |||||
Rius, Спасибо большое за ответ, буду разбираться .
Я с этим не мог сообразить так как думал, что если к адресу прибавить 4 то это будет четвертый элемент массива например vectorsTable[4], а у вас первый)
0
|
16.10.2018, 16:54 | 57 |
Элементы 32-битные, поэтому нулевой элемент находится по смещению 0x0000, а первый - 0x0004 (если в байтах считать).
0
|
16.10.2018, 16:54 | |
16.10.2018, 16:54 | |
Помогаю со студенческими работами здесь
57
USB on stm32f107 + mass storage Stm32 USB host Mass Storage Вопрос по USB Mass storage на stm32f103 USB Mass Storage Device на STM32F4 Вопрос по HAL USB MASS STORAGE. stm32f407 + SPI MMC + usb mass storage STM32F1 Проблемы с USB Mass Storage Device Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |