Перейти к содержанию
    

Переход с FAT32 на EXT4. насколько оправдан?

20 minutes ago, mantech said:

Т.е. кольцевой буфер не хотите использовать принципиально, хотя он почти во всех плеерах используется? Ваше право))

В смысле "пока"? Какой у вас битрейт на входе декодера?  Учитывая степень сжатия и разрешение, должно быть порядка 200кбайт\сек. При скорости чтения с сд карты в 4-5Мбайт\сек должен быть огромный запас, ИМХО...

 

Запас большой.

Вопрос со скоростью считывания фреймов решён в этом посте:

 

 

Битрейт переменный - обеспечивается заданное фиксированное качество для каждого фрейма:

https://ru.wikipedia.org/wiki/Constant_Rate_Factor

  

Теперь новый вопрос:  почему чтение с карты UHS-1 (класс скорости 10) всего 4,8 МБайт/сек вместо обещанных 10 ?   Питание 3,3V, Линия 4 бита.

 

2 hours ago, aaarrr said:

Я как-то не учел, что многозадачность недоступна. Тогда остаются только костыли.

Если мы говорим в контексте микроконтроллеров, то де-факто по дефолту имеется в виду однозадачная "Standalone" среда с обработчиками прерываний и DMA. Плюс корки и сопроцессоры.

Если же мы явно упоминаем многозадачность, то об этом обязательно пишем.

Вопрос решён, см. предыдущий пост.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 minutes ago, repstosw said:

Теперь новый вопрос:  почему чтение с карты UHS-1 (класс скорости 10) всего 4,8 МБайт/сек

Измерьте мультиблочное чтение без ФС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, repstosw сказал:

Если мы говорим в контексте микроконтроллеров, то де-факто по дефолту имеется в виду однозадачная "Standalone" среда с обработчиками прерываний и DMA.

Если учесть, что в настоящее время микроконтроллеры - это чаще всего кто-то из ARM, то неиспользование РТОС на них (там где это реально полезно) - это глупость, а не "де-факто". А полезно это думаю в подавляющем большинстве задач.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, aaarrr said:

Измерьте мультиблочное чтение без ФС.

Измерил. Результаты ниже.  Всё те же 5 МБ/с.  При этом драйвер не переключает тактовую частоту SD-хоста с 25 на 50 МГц, как-будто карта не может этого.  Как я писал ранее, выставил принудительно частоту 50 МГц - выигрыша не дало.  Обязательно ли делать команду Switch to High Speed Mode?  А что если карта - подделка и несмотря на то что написано UHS-I и 10-й класс скорости, это ложь?

image.png.6cad83d84c75290f668d755f04864092.png

Quote

По 4 сектора: 2,2 МБ/с
0.710333 ms, 2048 bytes, start sector 2068
0.710333 ms, 2048 bytes, start sector 2072
0.710333 ms, 2048 bytes, start sector 2076
0.881333 ms, 2048 bytes, start sector 2080
0.881500 ms, 2048 bytes, start sector 2084
0.881333 ms, 2048 bytes, start sector 2088
0.881500 ms, 2048 bytes, start sector 2092
0.881167 ms, 2048 bytes, start sector 2096
0.881500 ms, 2048 bytes, start sector 2100
0.881500 ms, 2048 bytes, start sector 2104
0.881333 ms, 2048 bytes, start sector 2108
0.710500 ms, 2048 bytes, start sector 2112
0.710333 ms, 2048 bytes, start sector 2116
0.710333 ms, 2048 bytes, start sector 2120
0.710333 ms, 2048 bytes, start sector 2124

По 8 секторов: 3,2 МБ/c
1.220000 ms, 4096 bytes, start sector 7984
1.220167 ms, 4096 bytes, start sector 7992
1.049167 ms, 4096 bytes, start sector 8000
1.049167 ms, 4096 bytes, start sector 8008
1.049167 ms, 4096 bytes, start sector 8016
1.049333 ms, 4096 bytes, start sector 8024
1.219833 ms, 4096 bytes, start sector 8032
1.220000 ms, 4096 bytes, start sector 8040
1.220000 ms, 4096 bytes, start sector 8048
1.219833 ms, 4096 bytes, start sector 8056
1.049167 ms, 4096 bytes, start sector 8064
1.049000 ms, 4096 bytes, start sector 8072
1.049000 ms, 4096 bytes, start sector 8080
1.049167 ms, 4096 bytes, start sector 8088
1.212833 ms, 4096 bytes, start sector 8096

По 16 секторов: 4,1 МБ/с
1.890833 ms, 8192 bytes, start sector 18784
1.890833 ms, 8192 bytes, start sector 18800
1.720167 ms, 8192 bytes, start sector 18816
1.720167 ms, 8192 bytes, start sector 18832
1.891000 ms, 8192 bytes, start sector 18848
1.891000 ms, 8192 bytes, start sector 18864
1.720000 ms, 8192 bytes, start sector 18880
1.720000 ms, 8192 bytes, start sector 18896
1.890833 ms, 8192 bytes, start sector 18912
1.890833 ms, 8192 bytes, start sector 18928
1.720167 ms, 8192 bytes, start sector 18944
1.720167 ms, 8192 bytes, start sector 18960
1.891000 ms, 8192 bytes, start sector 18976
1.890833 ms, 8192 bytes, start sector 18992
1.720167 ms, 8192 bytes, start sector 19008

По 32 сектора: 4,8 MБ/c
3.247833 ms, 16384 bytes, start sector 26080
3.077000 ms, 16384 bytes, start sector 26112
3.247833 ms, 16384 bytes, start sector 26144
3.077000 ms, 16384 bytes, start sector 26176
3.247833 ms, 16384 bytes, start sector 26208
3.077167 ms, 16384 bytes, start sector 26240
3.247833 ms, 16384 bytes, start sector 26272
3.077167 ms, 16384 bytes, start sector 26304
3.247833 ms, 16384 bytes, start sector 26336
3.077000 ms, 16384 bytes, start sector 26368
3.247667 ms, 16384 bytes, start sector 26400
3.077000 ms, 16384 bytes, start sector 26432
3.247833 ms, 16384 bytes, start sector 26464
3.077167 ms, 16384 bytes, start sector 26496
3.247833 ms, 16384 bytes, start sector 26528
3.077167 ms, 16384 bytes, start sector 26560

По 64 сектора: 5,3 MБ/c
5.782000 ms, 32768 bytes, start sector 40896
5.806000 ms, 32768 bytes, start sector 40960
5.805833 ms, 32768 bytes, start sector 41024
5.805833 ms, 32768 bytes, start sector 41088
5.805833 ms, 32768 bytes, start sector 41152
5.805833 ms, 32768 bytes, start sector 41216
5.805833 ms, 32768 bytes, start sector 41280
5.805833 ms, 32768 bytes, start sector 41344
5.805833 ms, 32768 bytes, start sector 41408
5.805833 ms, 32768 bytes, start sector 41472
5.789000 ms, 32768 bytes, start sector 41536
5.805833 ms, 32768 bytes, start sector 41600
5.806000 ms, 32768 bytes, start sector 41664
5.806000 ms, 32768 bytes, start sector 41728
5.806000 ms, 32768 bytes, start sector 41792

По 128 секторов: 5,5 MБ/c
11.259000 ms, 65536 bytes, start sector 53888
11.272166 ms, 65536 bytes, start sector 54016
11.261000 ms, 65536 bytes, start sector 54144
11.255500 ms, 65536 bytes, start sector 54272
11.275333 ms, 65536 bytes, start sector 54400
11.394000 ms, 65536 bytes, start sector 54528
11.258667 ms, 65536 bytes, start sector 54656
11.272000 ms, 65536 bytes, start sector 54784
11.383667 ms, 65536 bytes, start sector 54912
11.259500 ms, 65536 bytes, start sector 55040
11.271500 ms, 65536 bytes, start sector 55168
11.391500 ms, 65536 bytes, start sector 55296
11.258667 ms, 65536 bytes, start sector 55424
11.272333 ms, 65536 bytes, start sector 55552
11.258833 ms, 65536 bytes, start sector 55680

 

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, repstosw said:

По 4 сектора

Сделайте хотя бы 32-64

 

2 minutes ago, repstosw said:

Обязательно ли делать команду Switch to High Speed Mode?

Да

 

2 minutes ago, repstosw said:

А что если карта - подделка и несмотря на то что написано UHS-I и 10-й класс скорости, это ложь?

Она одна у вас?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, aaarrr said:

Сделайте хотя бы 32-64

Разверните простыню форума:  там результаты по 4,8,16,32,64,128 сектора.

image.png.e4bd03545d7d79c1f522168eefe5516f.png

 

5 minutes ago, aaarrr said:

Она одна у вас?

Остальные карты ещё хуже:

1. на 2 ГБ без класса скорости

2. на 4 ГБ и 16 ГБ с классом скорости 4

Также работают на 25 МГц

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кроме того... эти бешеные скорости относятся к режиму записи видео. Это отдельный набор команд, только недавно появившийся в доступе как документ. Вроде там что-то с допустимым ошибками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, repstosw said:

Разверните простыню форума:  там результаты по 4,8,16,32,64,128 сектора.

Тогда придется ковырять драйвер - где-то явная лажа.

 

И лучше иметь хотя бы десяток разных карт, если уж заниматься.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, repstosw сказал:

Остальные карты ещё хуже:

На ПК через картридер какие скорости чтения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, aaarrr said:

Тогда придется ковырять драйвер - где-то явная лажа.

В общем для T113-s3 я нашёл причину тормозов работы в драйвере SD-карты: там лимитировался делитель частоты. Поэтому все мои изменения тактовой частоты не оказывали влияния на работу карты.

Сам делитель сидит в младших 8 битах нижеприведённого регистра, и он расписан очень мудрёно: допустимо значение 0, при этом деление на /(2*n).  Так что же будет когда n=0? Скорее всего будет деление на 1?

image.thumb.png.119024460f4f51e8af9de15e820a8f14.png

 

SD-карта мощно колбасится на чтение: проверил на чтении h264 потока - воспроизводится без ошибок, даже когда тактовая частота 100 МГц и выше. Но при этом увеличения скорости чтения на частотах выше 100 МГц  уже нет.

 

Результаты тестирования SD-карты (UHS-I, класс скорости 10) на блоке 64 КБ:

Quote

F=100 MHz n=0 Fsd=100 MHz ? 17 МБ/c
3.654333 ms, 65536 bytes, sector 133888
3.669667 ms, 65536 bytes, sector 134016
3.679333 ms, 65536 bytes, sector 134144
3.653333 ms, 65536 bytes, sector 134272
3.669000 ms, 65536 bytes, sector 134400

F=100 MHz n=1 Fsd=50 MHz 10,7 МБ/c
5.833333 ms, 65536 bytes, sector 54656
5.850000 ms, 65536 bytes, sector 54784
5.836667 ms, 65536 bytes, sector 54912
5.834667 ms, 65536 bytes, sector 55040
5.849500 ms, 65536 bytes, sector 55168

F=200 MHz n=1 Fsd=100 MHz 17 МБ/c
3.659500 ms, 65536 bytes, sector 126848
3.656667 ms, 65536 bytes, sector 126976
3.673500 ms, 65536 bytes, sector 127104
3.661167 ms, 65536 bytes, sector 127232
3.656333 ms, 65536 bytes, sector 127360

F=300 MHz n=1 Fsd=150 MHz 17 МБ/c
3.661333 ms, 65536 bytes, sector 129152
3.656333 ms, 65536 bytes, sector 129280
3.672333 ms, 65536 bytes, sector 129408
3.661167 ms, 65536 bytes, sector 129536
3.657167 ms, 65536 bytes, sector 129664

F=200 MHz n=0 Fsd=200 MHz ? 17 МБ/c
3.668333 ms, 65536 bytes, sector 84864
3.654667 ms, 65536 bytes, sector 84992
3.627500 ms, 65536 bytes, sector 85120
3.668000 ms, 65536 bytes, sector 85248
3.653667 ms, 65536 bytes, sector 85376

F=300 MHz n=0 Fsd=300 MHz ?
Fail

 

Я просто тупо уменьшил делитель, без всяких команд перевода карты  в High Speed режим.

 

Осталось понять, почему драйвер не видит, что карта может в High Speed?  Или это карта такая - признак не возвращает, но может.

 

Кто кривой - драйвер из x-boot или карта? :biggrin:

https://github.com/xboot/xboot/blob/master/src/driver/sd/sdcard.c

https://github.com/xboot/xboot/blob/master/src/arch/arm32/mach-t113s3/driver/sdhci-t113.c

 

25 minutes ago, mantech said:

На ПК через картридер какие скорости чтения?

Не измерял. Да и смысла нет - там USB прослойка и виртуализация. Неизвестно сколько она забирает.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 минут назад, repstosw сказал:

F=100 MHz n=0 Fsd=100 MHz ? 17 МБ/c

Сомневаюсь, что все карты будут это выдерживать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, GenaSPB said:

Кроме того... эти бешеные скорости относятся к режиму записи видео. Это отдельный набор команд, только недавно появившийся в доступе как документ. Вроде там что-то с допустимым ошибками.

Очевидно, Вы правы!

Проверил сейчас на других картах: скорость чтения слабо зависит от класса скорости.

Все карты оказались работоспособными на 100 МГц, но время чтения блока 64 кБ вышло разным - карты слева на право на фоте:

3,65 мс

3,76 мс

7,11 мс

9,34 мс

162908_1656756668_3.thumb.jpg.a48203eda53ac51d75fbda008547ac6d.jpg

 

4 minutes ago, mantech said:

Сомневаюсь, что все карты будут это выдерживать...

 

Оставил так: F=200 MHz n=1 Fsd=100 MHz

Все 4 карты работают и корректно считывают h264.

Но не факт, что они будут записывать на такой частоте

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 минут назад, repstosw сказал:

допустимо значение 0, при этом деление на /(2*n).  Так что же будет когда n=0? Скорее всего будет деление на 1?

Ну китайцы такие затейники, может у них 2*0 =1 или при 0 контроллер нагреется и взорвется)))))))  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, mantech said:

Ну китайцы такие затейники, может у них 2*0 =1 или при 0 контроллер нагреется и взорвется)))))))  

по времени чтения это соответствует случаю когда деление на 1

---

Сейчас глянул как считается делитель на тактовую частоту SD-карты в сорце х-бута, выходит нестыковка с даташитом:

 

static bool_t sdhci_t113_setclock(struct sdhci_t * sdhci, u32_t clock)
{
	struct sdhci_t113_pdata_t * pdat = (struct sdhci_t113_pdata_t *)sdhci->priv;
	u32_t ratio = udiv32(clk_get_rate(pdat->pclk) + 2 * clock - 1, (2 * clock));

 

Вот:

u32_t ratio = udiv32(clk_get_rate(pdat->pclk) + 2 * clock - 1, (2 * clock));

 

Исходя из этой логики, частота SD-карты у меня вдвое ниже, чем я указал в замерах выше.  Тоесть там где указал 100 МГц, на самом деле 50.

 

Какая-та конспирация.  Кому верить - даташиту или сорцам? :aggressive:

Надо бы тыкнуться осциллоглядом или частотометром...

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это Вы еще не добрались до записи. Там будут наблюдаться еще потрясающие эффекты. При записи по кругу сначала, пока карта новая или старательно стертая вся, она будет показывать приличную скорость, более-менее соответствующую той, которая на ней написана. По мере заполнения, а особенно, когда перейдете на второй круг, скорость начнет убывать и, что еще хуже, карта станет подвисать на длительное время (порядка 0.5 сек, независимо от указанной на ней скорости). Чтобы избежать этого, нужно помечать блоки, которые собираетесь переписывать, как неиспользуемые, или стирать их заранее. Это умеют делать свежие реализации ext4 в Linux.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...