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

kosyak©

Свой
  • Постов

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

  • Посещение

Весь контент kosyak©


  1. Не, на указанном Juno SR2 как то не пошло... а вот на eclipse-cpp-luna-SR2 все заработало.
  2. Оптимизации чего? В предложенном мной варианте Eclipse использует компилятор IAR.
  3. Eclipse + Вот этот плагин и уже можно жить. И даже отлаживать, правда только на ограничееном числе отладчиков (J-Link работает, ST-Link, к сожалению, нет). Есть там такая возможность, как импорт проекта из среды IAR - т.е. создаем проект в IAR (добавляем в него необходимые файлы) и при импорте в Eclipse указываем что импортировать необходимо только ссылки на файлы. Имеем два проекта - один IAR, второй Eclipse, которые содержат одни и те же файлы. При необходимости добавить файл в проект - добавляем его в IAR, затем в Eclipse делаем "Update imported project" и добавленный файл появляется в проекте Eclipse. Т.о. пишем код в редакторе Eclipse, отлаживаем здесь же, но если не хватает возможностей отладчика переключаемся на IAR.
  4. Все разобрался. Эта проблема присуща версии 2.6 (про более ранние не знаю). По ссылке лежит как раз версия 2.6 (почему я решил что там 2.7 фик его знает). Ну а в 2.7 такое поведение event'ов было исправлено. Хотелось бы попросить автора чтобы он порт для CortexM4f тоже поправил на версию RTOS 2.7...
  5. А у кого выше приоритет? у "MAIN Run"? Поделись файлом tn_event.c из своей сборки пожалуйста.
  6. Хм... Я использую v2.7 порт для CortexM4. Во вложении файл с тестом. Вывод в TRACE такой [0] - before wait [1] - before wait [2] - before wait before evf set after evf set [0] - after wait Если не сложно не могли бы Вы запустить у себя этот тест. evftest.zip
  7. Попробуйте так. void task(void *p) { int err; for(;;) { unsigned int evflags; err = tn_event_wait(&evftest, 1, TN_EVENT_WCOND_AND, &evflags, TN_WAIT_INFINITE); TRACE("WAIT END %d, %d", (uint32_t)p, err); tn_task_sleep(TN_WAIT_INFINITE); } } void tn_test(void) { //где то в другой задаче tn_event_create(&evftest, TN_EVENT_ATTR_MULTI, 0); // запускаем 4 задачи create_task(task, 1); create_task(task, 2); create_task(task, 3); create_task(task, 4); my_sleep(100); tn_event_set(&evftest, (1<< 0) | (1<< 1) | (1<< 2) | (1<< 3) ); tn_task_sleep(TN_WAIT_INFINITE); }
  8. Это у меня псевдо код. В реале там есть задержка средствами RTOS. Все задачи точно успевают вызвать wait_event. А вот просыпается потом только первая и них. Интересно какое поведение у event в других RTOS?
  9. Не не не. У меня вопрос скорее к RTOS - насколько я понимаю запускаться должны все ожидающие задачи.
  10. void task(p) { for(;;) { unsigned int evflags; if( tn_event_wait(&evftest, 1,TN_EVENT_WCOND_AND, &evflags, TN_WAIT_INFINITE) == TERR_NO_ERR ) { TRACE("WAIT END %d\n", (uint32_t)p); } } } ... ///где то в другой задаче tn_event_create(&evftest, TN_EVENT_ATTR_MULTI, 0); // запускаем 4 задачи create_task(task(0)); create_task(task(1)); create_task(task(2)); create_task(task(3)); tn_event_set(&evftest, 1); for(;;); .... В рабочее состояние перейдет первая созданная задача. Как сделать чтобы все задачи перешли в рабочее состояние?
  11. Пробую запустить порт CortexM4F в своем проекте. При TN_SUPPORT_FPU = 0 и TN_SUPPORT_FPU = 1 работает без проблем. А при TN_SUPPORT_FPU = 2 падает в HardFault при первой же встреченной команде работы с FPU. Компилятор IAR 7202. В чем может бть проблема?
  12. ... FRESULT res; FILINFO fno; DIR dir; int i; char *fn; /* This function is assuming non-Unicode cfg. */ // здесь устанавливается указатель fno.lfname на пользовательский буфер. // fatfs буфер под длинные имена файлов не выделяет. #if _USE_LFN static char lfn[_MAX_LFN + 1]; /* Buffer to store the LFN */ fno.lfname = lfn; fno.lfsize = sizeof lfn; #endif ... res = f_readdir(&dir, &fno); ... #if _USE_LFN fn = *fno.lfname ? fno.lfname : fno.fname; #else fn = fno.fname; #endif ... fno.lfname устанавливает в пользовательском коде.
  13. Там же в примерах все написано.
  14. Как поведет себя разъем при вибрациях и возможной конденсации влаги - пока вопрос.
  15. Я пробовал всю партию microSD еще не напаянных (штук 15) - ни одной калешной карты не было. Скажу больше - карты паяем уже давно (года эдак 3, сделано не меньше 2 тыс устройств) и только ~ полгода назад стройными рядами пошли косяки. Сейчас жду партию с разъемами чтобы проверить.
  16. Вот здесь я описывал как у нас паяли карты, и какие мы поимели с этим проблемы
  17. Расскажу свою историю. Используются у нас microSD карты, ну и как-то так повелось что их паяют (обычным припоем). Паяют по хитрому - сперва припаивают к контактам microSD тонкие проводки (медные жилки какого-то кабеля), потом проводки к контактам на плате и затем это все аккуратно загибается. До недавнего времени проблем с такими устройствами не было. Но вот последние партии стали вести себя неадекватно - из 15 штук устройств 3-4 сбоили во время работы - они могли работать час, два, три а потом оп, и переставать. Причем некоторые после снятия/подачи питания работать продолжали, а некоторые уходили в "глухую оборону" и категорически отрицали наличие у себя файловой системы ( :) ). Вот этих "отказников" я попробовал прогреть феном (ну а что делать то? :) ) при 100 - 150 градусах (это установка температуры на фене - сам корпус карты думаю не нагревался больше 100 градусов) и все они чудесным образом "вспоминали" про свои файловые системы и данные которые там "схоронены". Не удовлетворившись такими странными результатами я бросил подопытных в морозилку обычного холодильника (сколько уж там градусов не проверял) вместе с рабочими картами из той же партии. После часа времени "на остыв" и 20 минут на прогрев при комнатной температуре - калешные карты вновь перестали работать, а изначально рабочие "молотили" без изменений... Так как опыт "практической магии с феном" у меня уже был, я не стесняясь прогрел калешных - и вновь они "опомнились". Какие изменения проходили в картах при нагреве/заморозке я не знаю, но повторяемость этого дела на 4 экземплярах была 100% - После морозилки не работают (инициализируются но на попытку чтения могут заявить, что у меня там везде 0... или [0,0,0,0,...0xFE] в периоде), а после нагрева работоспособность восстанавливалась вплоть до данных, какие были записаны на карту во время предыдущего сеанса работоспособности. Сейчас решили не испытывать судьбу и ставить разъемы, есть только некоторые опасения к вибрациям. Карты были kingston 4gb, куплены одной партией у одного поставщика. Работа - в однобитном SDIO режиме.
  18. Немного не в тему, но все же вопрос - как паяли карту?
  19. VslavX, а почему в Вашем порте пропала необходимость в функции tn_int_exit() (заменена пустым макросом)? Как оно теперь работает?
  20. тогда уж task_start( mb_task, ..., (void const*)&mb_cfg ); :)
  21. Вот зачем оно конст...?
  22. Вот здесь редактор шрифтов SG Bitmap Font Editor. ver 1.7 Во вложении шрифто, правда, 6х8... Если нужно могу поделиться шрифтами 8х16, 12х24, 16х32 тоже в этом формате. uc1608_font_6x8.zip
  23. Я поправил так ... #if TN_CHECK_PARAM if(dque == NULL) return TERR_WRONG_PARAM; // такую проверку нужно делать внезависимости от макроса TN_CHECK_PARAM // if(dque->num_entries <= 0) // return TERR_OUT_OF_MEM; #endif flag = ( dque->data_fifo == NULL || dque->num_entries <= 0 || (dque->tail_cnt == 0 && dque->header_cnt == dque->num_entries - 1) || dque->header_cnt == dque->tail_cnt-1); if(flag) return TERR_OVERFLOW; //-- full ...
×
×
  • Создать...