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

alexey123_45

Участник
  • Постов

    77
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные alexey123_45


  1. Я поправил адреса, но меня это не спасло. Я запустил пример из состава SDK, c ним такая же картина.

    Выдается такое

    BUG: Bad page state in process file_write pfn:c3f02

    page:c04e4040 count:0 mapcount:0 mapping: (null) index:0x0

    page flags: 0x200(arch_)

    Backtrace:[<c0035730>] (dump_backtrace+0x0/0x114) from [<c0336dd0>] (dump_stack+0x18/0x1c)

    r7:00000007

    r6:c70ac000

    r5:c04e4040

    r4:c0458384

    [<c0336db8>] (dump_stack+0x0/0x1c) from [<c0084e68>] (bad_page+0xd0/0xfc)

    [<c0084d98>] (bad_page+0x0/0xfc) from [<c0086564>] (get_page_from_freelist+0x390/0x4c4)

    r5:c04e4040

    r4:c04e4040

    [<c00861d4>] (get_page_from_freelist+0x0/0x4c4) from [<c008678c>] (__alloc_pages_nodemask+0xf4/0x51c)

    [<c0086698>] (__alloc_pages_nodemask+0x0/0x51c) from [<c0080d00>] (find_or_create_page+0x40/0x88)

    [<c0080cc0>] (find_or_create_page+0x0/0x88) from [<c00d7f10>] (__getblk+0x150/0x2e4)

    [<c00d7dc0>] (__getblk+0x0/0x2e4) from [<c012a5bc>] (fat_mirror_bhs+0x70/0x118)

    [<c012a54c>] (fat_mirror_bhs+0x0/0x118) from [<c012aca4>] (fat_alloc_clusters+0x314/0x370)

    [<c012a990>] (fat_alloc_clusters+0x0/0x370) from [<c012db30>] (fat_get_block+0x138/0x278)

    [<c012d9f8>] (fat_get_block+0x0/0x278) from [<c00d9578>] (__block_write_begin+0x1c4/0x4d4)

    [<c00d93b4>] (__block_write_begin+0x0/0x4d4) from [<c00d9a28>] (block_write_begin+0x50/0x80)

    [<c00d99d8>] (block_write_begin+0x0/0x80) from [<c00d9da0>] (cont_write_begin+0x348/0x394)

    r6:02849000

    r5:c70ac000

    r4:00000000

    [<c00d9a58>] (cont_write_begin+0x0/0x394) from [<c012dde4>] (fat_write_begin+0x5c/0x84)

    [<c012dd88>] (fat_write_begin+0x0/0x84) from [<c007f5ac>] (generic_file_buffered_write+0xe8/0x230)

    r7:00000000

    r6:02849000

    r5:000008ca

    r4:000008ca

     

  2. Посмотрю, но все-таки по поводу расхода памяти. Просто мне надо писать несколько суток непрерывно, и крутится еще несколько программ, вот до какого момента будет кэшироваться?

  3. Конфигурацию памяти я взял из документации, собственно там сказано, что linux эти адреса не использует. И в примерах SDK конфигурируется именно это адресное пространство. А если как-то принудительно очищать кэш или ограничить его размер?

    Просто судя по статистике расхода памяти память в примере, описанном выше расходуется с 108 МБ до 21МБ.

  4. Просто мне кажется странным, что памяти расходуется примерно половина объема.

    Нет ли по этой причине наползания на память другой программы?

    А функция close не предполагает очистку буферов?

     

  5. Проверил, сделал простой тест

    rec_len =2800;

    char rec_buf[4096];

     

    resultFile = open(name, O_RDWR | O_CREAT | O_APPEND, 0640);

     

    while(dsp_message_count<30000)

    {

    test_a = write(resultFile, rec_buf, rec_len);

    printf("Write to file = %d,%d,%d\n",test_a, resultFile, dsp_message_count);

    //usleep(100000);

    dsp_message_count +=1;

    }

     

    close(resultFile);

     

     

    Посмотрел расход памяти, пока файл пишется свободная память уменьшается, но когда приложение перестает работать, т.е. отрабатывает close(resultFile); и приложение закрывается, объем свободной памяти не восстанавливается, это правильная работа?

     

    Расход памяти смотрел через вторую консоль free -b

  6. Здравствуйте

    Столкнулся с такой проблемой: В ARM ядре из-под Linux пишу текстовый файл CSV формата на внешнюю SDHC карту, отформатированной в FAT32. Как только размер файла на диске становится примерно 39МБайт программа аварийно завершается и в файле вместо последних нескольких записей мусор. Проверял, на утечки памяти, не обнаружил, не может ли это быть связано с каким-то кэшированием?

    Запись в файл идет на фоне обмена с DSP ядром через DSPLINK

     

    Файл открываю так

    resultFile = open(name, O_RDWR | O_CREAT | O_APPEND, 0640);

    Записываю

    test_a = write(resultFile, rec_buf, strlen(rec_buf));

     

     

    Не сталкивался кто-нибудь с такой ситуацией?

     

     

     

  7. Посмотрел, беру я правильно. Сбоев указателей не происходит. У меня такой вопрос - не могут ли драйвера в самом Linux для SDHC и USB давать какое-то прерывание или как-то подвешивать DSP?

  8. Не подскажите как это можно отследить?

     

    В ARM ядре я жду сообщение от DSP

    /* Receive the message */

    status = MSGQ_get (gppMsgq, WAIT_FOREVER, (MSGQ_Msg *)&msg) ;

    if (DSP_FAILED (status)) {

    printf ("MSGQ_get () failed. Status = [0x%x]\n",(Uint16)status) ;

    }

     

    Дожидаюсь посылаю обратно данные

    /*Send the same message received in earlier MSGQ_get () call */

    status = MSGQ_put (dspMsgq, (MSGQ_Msg)msg);

     

    Соответственно в DSP я посылаю сообщение

    msgqStatus = MSGQ_put(dstMsgQueue , (MSGQ_Msg)outputMsg);

    if (msgqStatus != SYS_OK) {

    SYS_abort("Failed to send a message to process function");

    }

     

  9. Здравствуйте.

    Не мог ли кто-то помочь в решении такой проблемы: Мне нужно каждую секунду передавать массив(результат расчета алгоритма) из DSP в ARM ядро. Я делаю это через DSP link. Объем массива 1200 байт.

    В ARM ядре я этот массив обрабатываю и пишу в файл, находящийся на USB флэш. Помимо этого я пишу в этот же файл еще один поток раз в три секунды объемом 2 килобайта. Пишу на лету, обработал и сразу записал.

    Переодически поступают неверные данные из DSP. Причем абсолютно в случайные моменты времени. Если убираю функцию записи в файл сбои исчезают. При этом данные я смотрю на консоли.

     

    Как запись в файл может влиять на работу DSP или dsplink?

  10. Узнать, что она может обеспечить на этой платформе. Я находил сравнительные характеристики с другими операционными системами для микроконтроллеров. Она не очень ресурсоемкая ,например, для нее необходимо 2КБ ОЗУ, но как утверждается, что она не в полной мере поддерживает работу в реальном времени,вопрос количественной и качественной оценки.

  11. Здравствуйте.

    Я использую процессор OMAP L-138 под управлением linux. Запустил свою программу. Она работала несколько дней непрерывно после чего в системной консоли было

    выведено сообщение:

    BUG: Bad page state in process subscribe pfn:c3f02

    page:c04e4040 count:0 mapcount:0 mapping: (null) index:0x0

    page flags: 0x200(arch_1)

     

    Кто-нибудь сталкивался с такой проблемой, каковы возможные причины ее возникновения?

    Может ли это быть следствием утечек памяти при работе программы?

  12. Здравствуйте.

    Я использую процессор OMAP L-138 под управлением linux. Запустил свою программу. Она работала несколько дней непрерывно после чего в системной консоли было

    выведено сообщение:

    BUG: Bad page state in process subscribe pfn:c3f02

    page:c04e4040 count:0 mapcount:0 mapping: (null) index:0x0

    page flags: 0x200(arch_1)

     

    Кто-нибудь сталкивался с такой проблемой, каковы возможные причины ее возникновения?

    Может ли это быть следствием утечек памяти при работе программы?

  13. Здравствуйте

    У меня возник такой вопрос:

    Я хочу перевести проект сделанный на Verilog под ПЛИС Xilinx на ПЛИС Altera

    В проекте используется такой примитив как RAM64X1S(однопортовое ОЗУ с организацией 64слова х 1 разряд).

    Я сделал через мегафункцию аналогичный блок памяти в Quartus.

    В проекте Xilinx идет инициализация этой памяти таким образом

    RAM64X1S #(.INIT(64'b0000000000110101100010001111010010010111100010001101011000000000)

     

    Могу я как-то сделать для проекта под Altera так же или у меня есть только возможность инициализации через mif-файл?

  14. У меня собственно вопрос остался такой. Мне WIZ 5300 подключили как модуль ОЗУ на CS4. Мне надо просто определить пины соответствующие шине данных и адреса или что-то еще сделать что бы этот драйвер работал?

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