Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
вызов функции на С
Автор Сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #1
вызов функции на С
Код:
#include "ds.h"

int main(int argc, char *argv[]) {
    uint32 fd;
    char *toc;
    fd=cdrom_locate_data_track (*toc);
    ds_printf("log=%d ", fd);
    return CMD_OK;
}
это одна из сотни попыток вызвать функцию cdrom_locate_data_track (CDROM_TOC *toc), подскажите как правильно

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
25.12.2013 08:30
Найти все сообщения Цитировать это сообщение
Wind Не на форуме
Пользователь
**

Сообщений: 30
Зарегистрирован: 29.08.2013
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 1 раз(а) в 1 сообщ.
Сообщение: #2
RE: вызов функции на С
Наверное так:

Код:
int main(int argc, char *argv[]) {
    uint32 fd;
    char toc[102*4];
    fd=cdrom_locate_data_track (toc);
    ds_printf("log=%d ", fd);
    return CMD_OK;
}
25.12.2013 09:55
Найти все сообщения Цитировать это сообщение
 Сказали спасибо: megavolt85
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #3
RE: вызов функции на С
Оба варианта кода не имеют смысла Smile
Для функции cdrom_locate_data_track нужно передать аргументом сам TOC, а ты ему пустоту даешь (точнее даже не пустоту, а мусор из стека). Она по сути просто перебирает буфер с TOC в поиске нужного трека.
Тебе нужно сначала считать этот TOC, а потом уже в нем искать трек с данными:
PHP код:
#include "ds.h"

int main(int argcchar *argv[]) {
    
CDROM_TOC toc;
    
uint32 lba;

    if(
cdrom_read_toc(&toc0) != 0)
       return 
CMD_ERROR;

    if(!(
lba cdrom_locate_data_track(&toc)))
       return 
CMD_ERROR;

    
ds_printf("LBA: %ld\n"lba);
    return 
CMD_OK;


[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 25.12.2013 в 10:36, отредактировал пользователь SWAT.)
25.12.2013 10:32
Вебсайт Найти все сообщения Цитировать это сообщение
 Сказали спасибо: megavolt85
Wind Не на форуме
Пользователь
**

Сообщений: 30
Зарегистрирован: 29.08.2013
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 1 раз(а) в 1 сообщ.
Сообщение: #4
RE: вызов функции на С
Ну смысла то может и не имеют Wink, вопрос-то было как вызвать ф-ию Wink
26.12.2013 06:10
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #5
RE: вызов функции на С
(26.12.2013 06:10)Wind писал(а):  Ну смысла то может и не имеют Wink, вопрос-то было как вызвать ф-ию Wink

Ну это да, твой вариант валидный, извиняюсь за некорректность Wink

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 26.12.2013 в 11:22, отредактировал пользователь SWAT.)
26.12.2013 11:22
Вебсайт Найти все сообщения Цитировать это сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #6
RE: вызов функции на С
потихоньку изучаю си и в процессе пытаюсь написать программку для рипа GD-ROM и штамповки, в связи с этим возникли вопросы:
1) сколько сессий на диске? (GD-ROM 2? штамповка 1?)
2) что из себя представляет gdi образ? (точная копия, сектор в сектор включая область видимую обычным CD-ROM?)
3) что нужно для рипа GD-ROM в sd-iso? (TOC+последняя дорожка+hack lba?)
4) что из себя представляет cdi рип? и нужен ли он вообще? (точная копия штамповки, сектор в сектор?)
5) что нужно для рипа штамповки в sd-iso? (TOC+дорожка с данными+hack lba?)

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
(Последний раз сообщение было отредактировано 02.02.2014 в 10:54, отредактировал пользователь megavolt85.)
02.02.2014 10:36
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #7
RE: вызов функции на С
1) Да
2) Да, но без обычной области
3) Да, TOC не нужен
4) Это спец. формат, в нем не все так просто, лучше забей
5) Да, TOC не нужен

[Изображение: barbers.png]
04.02.2014 06:45
Вебсайт Найти все сообщения Цитировать это сообщение
 Сказали спасибо: megavolt85
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #8
RE: вызов функции на С
SWAT подскажи что я упустил
PHP код:
//* IP.BIN dumper *//


#include "ds.h"

int main(int argcchar *argv[]) {
    
FILE *dst_file;
    
CDROM_TOC toc;
   
char *secbuf[2048];
   
char *dirp "ip.bin";
   
int start,s_size,istep;
    
    if(
cdrom_read_toc(&toc0) != 0)
       return 
CMD_ERROR;

    
start TOC_LBA(toc.entry[1]);
    
start start 150 ;
    
s_size 16;
    if ((
dst_file fopen(dirp"wb"))== NULL)
    {
        
ds_printf("DS_ERROR: Cannot open %s for writing!\n",dirp);
        return 
CMD_ERROR;
    }
    
    
cdrom_set_sector_size (2048);
   for (
istep=0;istep<s_size;istep++){
       if (
cdrom_read_sectors(&secbuf,start+istep,1) != 0){
           
ds_printf("DS_ERROR: GD-ROM read error\n");
           return 
CMD_ERROR;
           }

        if (
fwrite(secbuf,sizeof(secbuf),1,dst_file) !=1){
            
ds_printf("DS_ERROR: Error write to file\n");
            return 
CMD_ERROR;
            }   
       }
       
fclose(dst_file);
    return 
CMD_OK;


запускаю на эмуляторе: cd /ram -> ipbin -> cat ip.bin вижу мусор из стека. Проверил fwrite, скормил набор символов, прочитал тот же набор, получается не правильно срабатывает cdrom_read_sectors или я буфер не правильный задал. И для чего эта функция: int cdrom_set_datatype(int p1, int cdxa, int sector_size); что за параметры p1 и cdxa

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
04.02.2014 08:56
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #9
RE: вызов функции на С
Да, у тебя проблема в буфере для сектора, ты его сделал ссылкой, при этом указав его размер. У тебя получился массив ссылок на char.
В общем я для наглядности сделал пару реализаций, на живую не проверял, так что извиняй если ошибка где затаилась Smile

PHP код:
//* IP.BIN dumper *//

#include "ds.h"

int main(int argcchar *argv[]) {
    
    
file_t fd;
    
uint8 secbuf[2048];
    
CDROM_TOC *toc = (CDROM_TOC *)secbuf/* Т.к. TOC используешь один раз, стоит разгрузить стек */
    
char dirp[] = "/ram/ip.bin"/* Можно взять из аргумента к команде - argv[1] */
    
uint32 startcur;
    
int rc;

    
rc cdrom_read_toc(toc0);

    if(
rc != ERR_OK) {
        
ds_printf("DS_ERROR: Cannot read TOC: %d\n"rc);
        return 
CMD_ERROR;
    }

    
start cdrom_locate_data_track(toc);
    
    if(!
start) {
        
ds_printf("DS_ERROR: Cannot find data track!\n");
        return 
CMD_ERROR;
    }
    
    
fd fs_open(dirpO_WRONLY);
    
    if (
fd == FILEHND_INVALID) {
        
ds_printf("DS_ERROR: Cannot open %s for writing!\n"dirp);
        return 
CMD_ERROR;
    }
    
    for(
cur 0cur 16cur++) {
        
        
rc cdrom_read_sectors(secbufstart cur1);
        
        if (
rc != ERR_OK) {
            
ds_printf("DS_ERROR: GD-ROM read error: %d\n"rc);
            
fs_close(fd);
            return 
CMD_ERROR;
        }
        
        
rc fs_write(fdsecbufsizeof(secbuf));

        if (
rc != sizeof(secbuf)) {
            
ds_printf("DS_ERROR: Error write to file: %d vs %d\n"rcsizeof(secbuf));
            
fs_close(fd);
            return 
CMD_ERROR;
        }
    }
    
    
fs_close(fd);
    return 
CMD_OK;


PHP код:
//* IP.BIN dumper *//


#include "ds.h"

#define IPBIN_SIZE 32768

int main(int argcchar *argv[]) {
    
    
file_t fd;
    
uint8 *secbuf;
    
CDROM_TOC toc;
    
char dirp[] = "/ram/ip.bin";
    
uint32 startcur;
    
int rc;
    
    
secbuf calloc(1IPBIN_SIZE);
    
    if(
secbuf == NULL) {
        
ds_printf("DS_ERROR: No memory\n");
        return 
CMD_ERROR;
    }

    
rc cdrom_read_toc(&toc0);

    if(
rc != ERR_OK) {
        
ds_printf("DS_ERROR: Cannot read TOC: %d\n"rc);
        
free(secbuf);
        return 
CMD_ERROR;
    }

    
start cdrom_locate_data_track(&toc);
    
    if(!
start) {
        
ds_printf("DS_ERROR: Cannot find data track!\n");
        
free(secbuf);
        return 
CMD_ERROR;
    }
    
    
fd fs_open(dirpO_WRONLY);
    
    if (
fd == FILEHND_INVALID) {
        
ds_printf("DS_ERROR: Cannot open %s for writing!\n"dirp);
        
free(secbuf);
        return 
CMD_ERROR;
    }
    
    
rc cdrom_read_sectors(secbufstartIPBIN_SIZE 2048);
    
    if (
rc != ERR_OK) {
        
ds_printf("DS_ERROR: GD-ROM read error: %d\n"rc);
        
fs_close(fd);
        
free(secbuf);
        return 
CMD_ERROR;
    }
    
    
rc fs_write(fdsecbufIPBIN_SIZE);

    if (
rc != IPBIN_SIZE) {
        
ds_printf("DS_ERROR: Error write to file: %d vs %d\n"rcIPBIN_SIZE);
        
fs_close(fd);
        
free(secbuf);
        return 
CMD_ERROR;
    }
    
    
fs_close(fd);
    
free(secbuf);
    return 
CMD_OK;


А по поводу int cdrom_set_datatype(int p1, int cdxa, int sector_size); то в В KOS этой функции нет.
И кстати я что вспомнил, для RC1 в SDK есть директория patch, в которой хранятся хэдэры, их нужно тебе заменить в KOS, ибо там были правки и дополнения.
Допустим у функции чтения секторов, первым аргументом идет тип команды для сискола:

PHP код:
int cdrom_read_sectors(int cmdvoid *bufferint sectorint cnt); 

Поэтому в коде выше нужно сделать правки:

PHP код:
rc cdrom_read_sectors(CMD_PIOREADsecbufstart cur1);
rc cdrom_read_sectors(CMD_PIOREADsecbufstartIPBIN_SIZE 2048); 

Я пожалел что это сделал, ибо нарушил совместимость. В новой версии я вернул все обратно, поэтому нужно будет тебе учесть в своей программе в будущем, под какую версию DS она собирается. Это касается только функций cdrom.h

Update Убрал вычитание хардварного LBA 150, здесь это не нужно. Это когда работаешь с ISO9660, то там приходится его прибавлять и убавлять, так как все оффсеты прописаны без него.

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 04.02.2014 в 13:33, отредактировал пользователь SWAT.)
04.02.2014 11:30
Вебсайт Найти все сообщения Цитировать это сообщение
 Сказали спасибо: SILENT_Pavel , megavolt85
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #10
RE: вызов функции на С
SWAT писал(а):И кстати я что вспомнил, для RC1 в SDK есть директория patch, в которой хранятся хэдэры, их нужно тебе заменить в KOS, ибо там были правки и дополнения.
Я int cdrom_set_datatype(int p1, int cdxa, int sector_size) как раз в том хэдэре и нашел

UPD: Если я правильно понял, то для RC2 нужно будет вернуть назад KOS'овский cdrom.h и вызывать int cdrom_read_sectors(void *buffer, int sector, int cnt);

UPD: штамповку уже начал рипить, но ужасно долго, за ~40 минут 85 мегабайт

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
(Последний раз сообщение было отредактировано 05.02.2014 в 05:09, отредактировал пользователь megavolt85.)
04.02.2014 16:34
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #11
RE: вызов функции на С
(04.02.2014 16:34)megavolt85 писал(а):  Я int cdrom_set_datatype(int p1, int cdxa, int sector_size) как раз в том хэдэре и нашел

Ну вот лучше и не трогай ее. Но для того чтобы привод заставить читать GD диск, нужно его по другому инициализировать. Придется тебе перенести некоторые функции из KOS себе и изменить их.

(04.02.2014 16:34)megavolt85 писал(а):  UPD: Если я правильно понял, то для RC2 нужно будет вернуть назад KOS'овский cdrom.h и вызывать int cdrom_read_sectors(void *buffer, int sector, int cnt);

Да.

(04.02.2014 16:34)megavolt85 писал(а):  UPD: штамповку уже начал рипить, но ужасно долго, за ~40 минут 85 мегабайт

Это наверное потому что ты посекторно рипаешь, это действительно не быстро, да еще и в PIO режиме. По хорошему нужно через DMA данные гонять и не по одному сектору, а пачками.

[Изображение: barbers.png]
05.02.2014 06:41
Вебсайт Найти все сообщения Цитировать это сообщение
MetalliC Не на форуме
Продвинутый
***

Сообщений: 185
Зарегистрирован: 31.07.2013
Рейтинг: 2
Сказал спасибо: 15
Поблагодарили 33 раз(а) в 15 сообщ.
Сообщение: #12
RE: вызов функции на С
немножко поправочек:
(02.02.2014 10:36)megavolt85 писал(а):  1) сколько сессий на диске? (GD-ROM 2? штамповка 1?)
по две сессии, и у GD и у MIL-CD, в обоих случаях первый трек должен быть с данными, второй аудио, ну и третий уже во второй сесии откуда всё грузится.
(02.02.2014 10:36)megavolt85 писал(а):  2) что из себя представляет gdi образ? (точная копия, сектор в сектор включая область видимую обычным CD-ROM?)
в общем говоря да, включая область обычной плотности
(02.02.2014 10:36)megavolt85 писал(а):  4) что из себя представляет cdi рип? и нужен ли он вообще? (точная копия штамповки, сектор в сектор?)
cdi - закрытый проприетарный формат, поддерживающий мультисессионные диски, в отличие от например iso.
я так понимаю когда-то давно именно DiscJuggler с его CDI подвернулся под руку кому-то из дримовской тусовки, и потом типа прижился.
как для дримкаста этот формат не хуже/лучше .mdf/mds или там .nrg.
(Последний раз сообщение было отредактировано 05.02.2014 в 13:31, отредактировал пользователь MetalliC.)
05.02.2014 13:30
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #13
RE: вызов функции на С
(05.02.2014 13:30)MetalliC писал(а):  немножко поправочек:
(02.02.2014 10:36)megavolt85 писал(а):  1) сколько сессий на диске? (GD-ROM 2? штамповка 1?)
по две сессии, и у GD и у MIL-CD, в обоих случаях первый трек должен быть с данными, второй аудио, ну и третий уже во второй сесии откуда всё грузится.

Странность в том, что при запросе TOC у mil-cd указывается первая сессия, а не вторая. А вот у GD указывается вторая.

(05.02.2014 13:30)MetalliC писал(а):  
(02.02.2014 10:36)megavolt85 писал(а):  2) что из себя представляет gdi образ? (точная копия, сектор в сектор включая область видимую обычным CD-ROM?)
в общем говоря да, включая область обычной плотности

Да зачем она нужна, эта обычная область, лишний мусор и время на рип.

[Изображение: barbers.png]
05.02.2014 13:56
Вебсайт Найти все сообщения Цитировать это сообщение
cybdyn Не на форуме
Ветеран
*****

Сообщений: 1368
Зарегистрирован: 20.12.2011
Рейтинг: 8
Сказал спасибо: 4
Поблагодарили 98 раз(а) в 75 сообщ.
Сообщение: #14
RE: вызов функции на С
а смысл копировать штамповки - это пиратка CD ? проще же на компе скопировать? или это для теста обращения к приводу?

у GD дисков игра по идее всегда начинается с 45000 lba. и далее до конца сессии, но вот есть диски с промежуточными аудио треками. аудио треки не нужны как бы но неучитывая их не собрать образ
05.02.2014 15:10
Найти все сообщения Цитировать это сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #15
RE: вызов функции на С
SWAT писал(а):Это наверное потому что ты посекторно рипаешь, это действительно не быстро, да еще и в PIO режиме.
Да тут куча факторов: посекторно в PIO, ds_printf тормозит (я ей количество записанных мегабайт выводил), флешка у меня от дядюшки Ляо, да ещё и четвертого класса Smile . Стал выводить отладочную инфу через printf, скорость значительно выросла ( 431 мегабайт за 62 минуты). Эх жаль printf не знает ключа \r (перевод курсора в начало строки)

P.S SWAT функция ds_printf переводит курсор на новую строку даже без \n , если возможно подправь это и добавь \r в RC2
нравятся мне прогресс бары в консоли типа такого printf("100%%[:====================:]\n") Smile

cybdyn писал(а):а смысл копировать штамповки
Рип в SD-ISO , чтоб с перепаковкой не париться

SWAT писал(а):По хорошему нужно через DMA данные гонять и не по одному сектору, а пачками.

А вот с этим грабли, попробовал IP.BIN рипнуть все 32 кб за раз, в /ram нормально , а в /sd , ошибка записи

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
(Последний раз сообщение было отредактировано 06.02.2014 в 03:16, отредактировал пользователь megavolt85.)
05.02.2014 21:40
Найти все сообщения Цитировать это сообщение
SI{AY Не на форуме
Пользователь
**

Сообщений: 74
Зарегистрирован: 07.02.2012
Рейтинг: 0
Сказал спасибо: 8
Поблагодарили 1 раз(а) в 1 сообщ.
Сообщение: #16
RE: вызов функции на С
>>Рип в SD-ISO , чтоб с перепаковкой не париться
вот тут не плохо ппо структуру диска GD http://www.dcfan.net.ru/forum/f69/%E8%E7...E%E2-2726/
06.02.2014 08:13
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #17
RE: вызов функции на С
Ну во первых не стоит делать частые вызовы printf ни в одной из ОС, она везде тормозит процесс (с учетом вывода на экран, а не в файл или еще куда), если сильно часто ее дергать. Дергай ее не на каждом проходе в цикле, а допустим каждый мегабайт.
Про переводы строк и возврат каретки я в курсе, если будет время - доработаю. Просто консолью я сейчас не занимаюсь в принципе, так как стараюсь развивать GUI интерфейс и рано или поздно ты к нему тоже придешь, ибо пользователи не особо жалуют консольные приложения Smile
Ну и вообще нужно без фанатизма стараться визуализировать всякие процессы с большой точностью, ты отнимаешь и без того малое процессорное время. Так как все графические манипуляции в DS софтварные, а не хардварные (расплата за SDL, тут ничего не поделаешь).
А пока, раз уж так хочется, можешь поиграться с функцией ds_uprintf, она всегда действует как возврат каретки, т.е. пишет всегда в одну строку (с заменой). В RC2 к слову я эту функцию уже убрал, она редко использовалась и я решил убрать ее чтобы не плодить лишнего, дабы потом их все не поддерживать, если переделаю вывод, а его я рано или поздно переделаю, это вопрос времени.

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 06.02.2014 в 09:57, отредактировал пользователь SWAT.)
06.02.2014 09:56
Вебсайт Найти все сообщения Цитировать это сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #18
RE: вызов функции на С
Вообщем пока нет ничего быстрее флешки, разницы между PIO и DMA я не заметил, читал по 10 секторов через DMA и по одному в PIO, скорость рипа при этом равна 1 мегабит в секунду, похоже что SD карта быстрей не может. Надеюсь HDD на G1 будет шустрее

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
12.02.2014 23:38
Найти все сообщения Цитировать это сообщение
cybdyn Не на форуме
Ветеран
*****

Сообщений: 1368
Зарегистрирован: 20.12.2011
Рейтинг: 8
Сказал спасибо: 4
Поблагодарили 98 раз(а) в 75 сообщ.
Сообщение: #19
RE: вызов функции на С
привод то сам является относительно медленый - считаем:
по теории CD - 75 кадров в секунду . в кадре полезных 2048 кбайт ( копируетм только данные без хедеров и коррекц. кода)
макс скорость - 12(макс скорость)

итого : 75 * 2048 * 12 примерно~ 1,843 мегабайта в секунду. это предел!
так что примерно на диск GD 1.2 гига это 10..11 минут.
CD ~ 5..6 мин.

это при условии что скорость чтения из привода и запись в HDD быстрее чем скорость потока даннных с диска. иначе добавляем задержку, в нашем случае запись в карту - как я помню с картой проц работает в PIO - дергая ножками сериал порта выполняя команды программы..

хотя ДМА как раз както бы разгружало проц, если делать параллельно - типа двойного буфера.
вообщемто в итоге упрёмся в скорость самого медленного из пунктов. в данном случае обмен с флэхой.
(Последний раз сообщение было отредактировано 13.02.2014 в 11:43, отредактировал пользователь cybdyn.)
13.02.2014 11:17
Найти все сообщения Цитировать это сообщение
SI{AY Не на форуме
Пользователь
**

Сообщений: 74
Зарегистрирован: 07.02.2012
Рейтинг: 0
Сказал спасибо: 8
Поблагодарили 1 раз(а) в 1 сообщ.
Сообщение: #20
RE: вызов функции на С
megavolt85, что то медленно у вас. утилитка японца примерно за 35минут копирует gd диск. так что ищите у себя узкие места. есть к чему стремиться)
13.02.2014 19:18
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 4 Гость(ей)