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

EKirshin

Свой
  • Постов

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

  • Посещение

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


  1. Здравствуйте!

     

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

     

    Интересует поведение микроконтроллеров под воздействием серьёзных электромагнитных помех (близость к силовым системам, гроза и т.п.). Многое, конечно, можно вывести самому, но изобретать велосипед, как известно, не практично.

     

    Посоветуйте книги/статьи о том, как правильно оформить код, какие меры предпринять для повышения устойчивости системы с позиции программного обеспечения. Есть ли какие-то теоретические расчёты показателей стабильности с учетом вероятности возникновения тех или иных ситуаций?

     

    Есть ли какая-то специфика применительно к ядрам ARM?

  2. Суть такая: необходимо написать, желательно на СИ, генератор частоты в 1000Гц для процессора BF537.

    1) Подскажите чего почитать

    2) Есть ли исходные коды на СИ (посмотреть как реализованно)

     

    А в чём проблема? Есть метод прямого вычисления sin, есть табличный, есть совмещённый. Выбирайте любой. На таком процессоре сигнал такой частоты сгенерить очень просто.

  3. 2 EKrishin

    Скажите, в файлах, выложенных Вами, частота выходных отсчётов действительно 1 МГц? Или всё-таки менее?

    Да, действительно, 1 Мгц. А что не так?

     

    Значит скорее всего - это узкополосный сигнал, например сигнал аналогового генератора. Или DDS. Или шум пропущенный через узкополосный фильтр. Нужно, оценить уширение спектра с целью определить параметры стабильности. Что-то в этом духе

    Да, именно это и интересно. Вообще хотелось получать выборку в, скажем, 65536 точек, строить большой спектр и смореть с разрешением порядка 15-20 Гц. Но аппаратные средства не позволяют. Поэтому ищем путь сделать нечто из различных кусков сигнала.

     

     

    Простите, но в обоих представленных фрагментах SNR около 67дБ, SFDR чуть меньше 74дБ. Это действительно такие (явно не 100дб SNR) фрагменты?

    Да, действительно. Указанные 100db - это, пожалуй, максимум. А данные две реализации - лишь пример.

  4. Чем оцыфровывать будете 1 МГц ? Неужели шум квантования будет ниже этих 100db? Сколько для этого надо бит: 16, 17, 18 или больше?

    Используем более быстрые АЦП, затем производится фильтрация с децимацией, в результате чего получаем повышенное SNR.

    Да, скажу сразу: сигнал комплексный - получается после фильтрации.

     

     

    Если меняется, в каких пределах?

    Возможно изменение в пределах всего спектра.

     

    Известна ли она в каждом из экспериментов?

    Известна, но точность не гарантируется - может смещаться. Ну её значение ведь можно получить оценкой тем же fft? Или необходима большая точность, чем может предоставить какой-либо метод?

     

    Какова при этом интересующая полоса сигнала?

    Менее 5 кГц с каждой стороны основной гармоники.

     

     

    Ага, это уже хорошо. Похоже, должно получиться. :) Но прошу ответить и на остальные вопросы (в частности, привести временнЫе характеристики процесса: длительность записи, длительность паузы).

     

    ЗЫ.Генераторы, видимо, тестируете? ;)

    В том числе и генераторы. Вернее - это основное назначение.

    Длительность записи - 4096 точек на 1 Мгц. Длительность паузы неопределена. Порядок - около 100 мс.

     

    Под когерентностью подразумевается наличие информации об изменении фазы от конца одного "куска" до начала другого (сохранение фазовых соотношений выборки и сигнала от одного куска к другому).

    Если когерентность выборки не сохраняется, будем получать её искусственно. ;)

    Моя идея состоит в измерении фазы "главного" колебания (известной частоты) в каждом из кусков, с последующим их, кусков, "разворотом" на нужный угол. Дальше их можно склеивать вплотную, и анализировать, как Вам заблагорассудится - сигнал получится когерентным. :)

    Сейчас времени мало, но вечером попробую изобразить, как это я себе представляю (ещё додумать надо :) ). До этого прошу уточнить условия, и, если можно, выложить реализации "кусков" процесса.

     

    Прикрепляю две реализации процесса. Файлы с подчёркиванием - im, без - re.

    2_1M_0.txt

    2_1M_0_.txt

    2_1M_1.txt

    2_1M_1_.txt

  5. Понятно. Однако, это ещё не постановка задачи.

    Видимо, вопросы придётся повторить.

    1. Какова частота выборки сигнала?

    2. Какова частота гармонического тона?

    3. Каково отношение С/Ш? Каковы статистические свойства шума? Можно ли его в интересующей полосе считать белым?

    4. Обладает ли шум свойством эргодичности?

    5. Сохраняется ли когерентность выборки между кусками? Опишите харатктеристики кусков во временнОй области.

    Очень хорошо бы выложить несколько реализаций СП.

     

    Частота выборки сигнала переключается. К примеру, 1 МГц.

    Частота грамонического сигнала может также изменяться, но она фиксирована в пределах одного эксперимента (получения спектра).

    Соотношение сигнал/шум в районе 100db. Шум белый, эргодичностью обладает.

     

    Не совсем понимаю, что имеется ввиду под "когерентностью". Если это совпадение фазы гармонического сигнала, то когерентность не сохраняется.

  6. так ли уж страшны скачки фазы- их гармоники никак не будут больше основного пика вашей частоты, увеличивая Nfft вы получите подробную картину происходящего в полосе сигнала пусть и с "паразитами" Вам ведь важно только положение максимума и не интересна др. полоса ведь так?

    Нет, не так! Интересуют детали на частотах, близких к основной. Это нужно для исследования качества входной синусоиды.

  7. От какой части?

    Интересно было бы узнать, в чём я неправ...

     

    Бог знает, что имел в виду ув. EKirshin... Как это часто бывает, вопрос задан совершенно неграмотно. Я так понял (правда, не сразу :biggrin: ), что нужно из M кусков сигнала длиной N получить оценку спектральной функции куска длиной M*N. Сигнал стационарен, и решение должно быть.

    Подождём, что напишет по этому поводу Автор темы.

     

    ЗЫ. Пусть речь идёт о точности оценки. Как Вы предлагаете её увеличить? Вычислить оценку Маклауда по каждому из кусков, а потом осреднить?

     

    Если нет, какое отношение "увеличение разрешения по частоте путём накопления" имеет к "интерполяции" и Маклауду?

     

    Проясню, что требуется, т.к. задал вопрос действительно кошмарно... :01:

     

    Имеется устройство (АЦП, ...), которое способно периодически (период не фиксирован) получать сигнал со входа - N точек. Частота дискретизации более 1 МГц. Задача следующая. Хочется "видеть", что происходит в районе частоты, поданной на вход устройства с большим разрешением по частоте. Оставшаяся часть спектра нас не интересует (вернее, интересует, но уже в других целях). Устройство не может по архитектурным причинам получать за раз данных больше N отсчётов. Под стационарностью я понимаю неизменность параметров сигнала: частота сигнала (синусоиды) остаётся неизменной (не учитывая качество самого сигнала: дрожание частоты и т.п., изменяющие частоту сигнала), уровень шума и его другие характеристики также неизменны.

    Один из рассматриваемых нами способов - это "усреднение" различных реализаций сигнала. Однако, не ясно, как склеить M кусков, чтобы получить из этого какую-то дополнительную информацию. Фаза синусоиды, естественно различна в каждом из М кусков. Поэтому их простое "склеивание" ни к чему хорошему не приводит, даже с наложением окон для устранения эффекта резкого скачка фазы.

  8. Здравствуйте!

     

    Такая задачка.

     

    Есть стационарный сигнал: шум + синусоида.

     

    Из этого сигнала периодически набирается N отсчётов.

    Вопрос: можно ли, имея M кусков этого сигнала использовать их для получения спектра сигнала размерностью M*N?

     

    Какой будет эффект, если на каждый из этих кусков наложить окно, "склеить" эти куски (получится сигнал длиной M*N), затем сделать fft на M*N точек?

  9. Установили новый кристалл STR912FAW47.

     

    После попытки прошивать Flash Bank1 128K получаем ошибку - таймаут доступа к Flash.

    Это насчёт алгоритма ICP. Обычный тоже не работает, но ошибка другая (не работал и ранее).

     

    Если прошивать алгоритмом ICP для версии FAW44 (которым пользовались ранее), то прошивка проходит. Но здесь уже возникает проблема непосредственно с запуском самой программы.

     

    О запуске.

     

    Для старого чипа используем startup-файл, строки инициализации FMI:

    FMI_CR_Val      EQU     0x00000018  
    
    FMI_BBSR_Val    EQU     0x00000000
    
    FMI_BBADR_Val   EQU     0x00000000
    FMI_NBBSR_Val   EQU     0x00000006
    
    FMI_NBBADR_Val  EQU     0x00080000
    FLASH_CFG_Val   EQU     0x00001000
    
    ; Setup Flash Memory Interface (FMI)
                    LDR     R0, =FMI_BASE
                    LDR     R1, =FMI_BBSR_Val
                    STR     R1, [R0, #FMI_BBSR_OFS]
                    LDR     R1, =FMI_NBBSR_Val
                    STR     R1, [R0, #FMI_NBBSR_OFS]
                    LDR     R1, =(FMI_BBADR_Val:SHR:2)
                    STR     R1, [R0, #FMI_BBADR_OFS]
                    LDR     R1, =(FMI_NBBADR_Val:SHR:2)
                    STR     R1, [R0, #FMI_NBBADR_OFS]
                    LDR     R2, =FMI_CR_Val
                    STR     R2, [R0, #FMI_CR_OFS]
    
                   ; Write "Write flash configuration" command (60h)
                    LDR     R0, =FMI_BBADR_Val
                    MOV     R1, #0x60
                    STRH    R1, [R0, #0]
    
                   ; Write "Write flash configuration confirm" command (03h)
                    LDR     R2, =(FLASH_CFG_Val:SHL:2)
                    ADD     R0, R0, R2
                    MOV     R1, #0x03
                    STRH    R1, [R0, #0]

     

    Для нового изменяем следующие параметры:

    FMI_BBSR_Val на 0x02

    FMI_NBBSR_Val на 0x08

    FMI_NBBADR_Val на 0x200000

     

    Бит, который выбирает Flash для загрузки (CSX) установлен в "1" -> загрузка из bank1.

     

    В свойствах проекта на вкладке "Target" изменяем все 0x80000 на 0x20000 и 0x8000 на 0x20000.

     

    После запуска по debugger'у видно, что программа делает переход на вектор неверного адреса при попытке запустить следующую команду после команды "LDR R0, =FMI_BBADR_Val". При этом в окне дизассемблера текущие команды уже не опознаются (стоит "???"), т.е. - явно неверная инициализация адреса и т.п.

     

    Исполузуем MDK 3.22.

     

    Кто-нибудь уже работал с STR912FAW47 ?

  10. ну по порядку

    1 амплитуду шума рассчитывать не надо- когда исп-те ф-ю randn, то из ее хелпа, видно, что она формирует сигнал с нулевым МО и ед. дисперсией, для изменения дисперсии просто умножайте ее выход на необх вам дисперсию . а если так уж и надо измерить, то есть ф-ии вычисяющие дисперсию и проч. хар-ки сигнала

    std, cov и тп (см statisicы toolbox)

    Да, но вот как раз и интересно, на какую дисперсию нужно домножить, чтобы получить нужный SNR.

     

     

    2 окном одинаково ослабляется и сигнал и шум

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

     

    от числа точек в fft уровень шума поменяться не может, при увеличении числа точек в fft без увеличения числа отчетов что-либо практически полезное вряд ли удастся (см статью fft zoom на форуме), а так можно только попытаться уменьшить эффект "растекания" спектров, что достигается вдобавок окнами

    Я и имею ввиду не просто количество точек fft, а количество точек в выборке. К примеру, генерируем сигнал с уровнем A, добавляем шум. Но ведь при этом увидим разлчиный SNR на спектре, если сгенерируем раздичное число точек выборки (и, соответственно, fft сделаем на то же число точек)?

     

    5 если генерировать сигнал с размахом в 1, то это должен быть сигнал одной! частоты, тогда можно пытаться что-то увидеть, если это не синус, а суммас синусов или шум, то этого не сделать в принципе

    В Матлабе при генерации сигнала без шума получаю интересный эффект: во-первых, сигнал этот не достигает уровня 0 db и его уровень зависит от частоты. Есть предположение, что такой эффект получается из-за того, что полосы частот fft дискретны и чем ближе частот к границе "бинов", тем меньше должен быть уровень этой частоты. Верно ли это, либо причина в другом?

  11. Осваиваю DSP в Matlab.

     

    Для дальнейшего движения вперёд хочу создать/найти функцию, которая генерит сигнал - набор синусоид с заданным уровнем, а таже подмешивает шум. Всё показалось простым до того момента как дело дошло до проверки сгенерированного сигнала на спектре.

     

    Основной вопрос - как правильно рассчитать амплитуду генерируемого шума, чтобы потом на спектре увидеть ровно тот самый SNR, что задавался в качестве параметра.

    Пытаясь создать такую функцию, я столкнулся со следующими проблемами/нюансами:

     

    1. Расчёт амплитуды генерируемого шума.

    2. Точное построение спектра сигнала. Как учитывать следующие факторы:

    - уменьшение энергии сигнала при домножении на оконную функцию

    - нормализация спектра учитывая длину выборки (как сохранить и нужно ли энергию сигнала). Необходимо ли учитывать теорему Парсеваля?

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

    - каково влияние числа точек FFT на уровень шума в спектре: 10log10(N/2) либо 10log10(sqrt(N))?

     

    И уже совсем примитивный вопрос: никак не удаётся сгенерить сигнал размахом в 1 и увидеть его на спектре на уровне 0db.

     

    Разъясните, пожалуйста, эти вопросы.

  12. fmin и fmax, видимо, в относительных частотах от частоты дискретизации. Если судить по тексту темы.

     

    А что тут, вроде всё просто из формулы: разрешение по частоте dF = 1/T, т.е. зависит только от длительности сигнала T.

     

    Да, fmin и fmax в относительных частотах.

     

    А чем определяется разрешение по частоте? dF = 1/T - Это не для случая ли получения полного спектра, для частот 0-f/2?

  13. Так и должно быть, ведь никакой новой информации о сигнале вы не добавили. Нужно либо увеличить длительность сигнала, либо, если есть какая-то информация о сигнале, использовать авторегрессионную оценку.

     

    Информации не добавили, но в данном случае мы ведь жертвуем информацией о частотах вне интересующего нас диапазона. Хотя, если подходить иначе:

    разобьём весь диапазон частот [0; F/2] на, скажем, M участков. Для каждого сделаем такое "узкое" FFT, всё это соберём вместе и скажем "вот вам спектр с повышенной разрешающей способностью по частоте!" :biggrin:

     

    Рассуждая так, становится понятно, что это невозможно. Однако, хотелось бы увидеть математическое обоснование. Кто-нибудь может подкинуть?

  14. Здравствуйте!

     

    Необходимо, имея выборку длины N получить спектр только лишь выбранной частотной области (скажем, в нормализованном частотном диапазоне 0.2-0.3 вместо обычных 0-0.5). Попробовали сделать ДПФ последовательности, взяв в качестве базисных функций не cos(2*pi*k*n/N), sin(2*pi*k*n/N), a

    cos(2*pi*(fmin+k*[(fmax-fmin)/N])*n/N), sin(2*pi*(fmin+k*[(fmax-fmin)/N])*n/N), т.е. интересующий нас диапазон частот. Выполнили ДПФ. Результат разочаровывающий: никакой новой информации о промежуточных частотах не получили: видна лишь (видимо) интерполяция соседних частот.

     

    Вопрос: либо что-то криво сделали, либо это фундаментальный эффект? Пока не можем найти объяснения. Что мешает получить более высокое разрешение по частоте, жертвуя при этом диапазоном частот?

  15. Здравствуйте!

     

    Проблема следующая. Создали устройство на STR912FAW44. Взяли STшную USB-библиотеку и сделали собственное устройство с собственным драйвером. Отладили, заработало. Позже выяснилось, что при подключении к компьютеру с хост-контроллером USB типа UHCI устройство работает нестабильно (пропускная способность ниже, вообще подвисает). На первом компьютере был OHCI.

     

    Драйвер был сгенерирован Compuware Driver Studio. Используется обмен по двум каналам типа BULK (один - IN, другой - OUT), размер пакета 64 байта. Всё под Windows XP SP2.

     

    Пробовали различные компьютеры с UHCI и OHCI. Ситуация такая: на OHCI работает всегда ОК. На UHCI ведёт себя по-разному, но всегда что-то не так. При подключении через USB 2.0 HS хаб к UHCI ситуация улучшается в плане пропускной способности, но иногда даёт сбой.

     

    Ни у кого подобной ситуации не было? В чём наибольшая вероятность неработоспособности:

    1. драйвер, сгенерированный DriverStudio?

    2. Аппаратная реализация ST912 (тогда ситуация должна проявляться у всех)?

    3. Библиотека ST работы с USB?

     

    Есть ли у кого-нибудь нормальная стабильно работающая на всех хост-контроллерах библиотека для STR912?

     

    Кстати, в библиотеке ST при работе с USB не реализована поддержка DMA и двойной буферизации, что иногда кажется существенным. Кто-нибудь как-либо решил этот вопрос?

     

    Благодарю.

  16. На эту тему действительно есть куча литературы (несмотря на то, что подход действительно вроде бы классический).

    Может лучше задачку конретизировать?

    Диапазон частот, амплитуд?.. Реализация в цифре, аналоге?..

     

    Литературы-то куча, но не очень пока понятно, как подойти к задаче. Реализация, естественно, в цифре. Опорная частота (возбуждающая) до 500 КГц. Амплитуда +-5V (могут быть варианты).

     

    Пока не очень понятно, как генерировать частоту. Варианты:

    - генерить программно внутри DSP, выводить через ЦАП, затем получать сигнал с объекта через АЦП, вычислять амплитуду и фазу (учитывая задержку прохода через тракт).

    - поставить DDS, управлять им DSP. Тогда не особо понятно как быть со входным сигналом: 2 АЦП (опорный сигнал и выход)?

    - другие варианты?

  17. Есть входной сигнал в виде смеси синусоид + шум. Этот сигнал получается воздействием на какую-то систему синусоидальным сигналом известной частоты, потом с выхода снимается отклик системы - это и есть наш сигнал.

     

    1. Нужно в реальном времени определять амплитуду той самой частоты, что на входе системы в выходном сигнале системы (детектор амплитуды).

     

    2. Нужно в реальном времени определять разность фазы между входным и выходным сигналами системы (детектор фазы).

     

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

     

    Подскажите, где об этом можно узнать более подробно. Может есть примеры?

  18. Здравствуйте!

     

    Необходимо сделать цифровой ПИ- или ПИД-регулятор.

     

    По чистой теории управления книги есть, но хочется почитать что-то более практическое. Типа Application Note, где есть пример с расчётом и последующей реализацией.

     

    Ещё вопрос - отладка. Каку отлаживаются подобные вещи? Если с алгоритмами обработки всё понятно: подал выборку, получил результат, проанализировал, сравнил с эталоном. А там где обратная связь - ?

  19. После некоторого времени разборок с различными примерами по USB вырисовались фундаментальные вопросы в области.

    Программирую как для различных микроконтроллеров (firmware), так и для PC (драйвер и пользовательские ПО). Интересна реализация драйверов в более продвинутом варианте. Интересует, есть ли где-нибудь примеры реализации драйвера с поддержкой нескольких контрольных точек туда-обратно (в т.ч., с режимом isochronous), с несколькими конфигурациями и т.п. Также интересует пример ПО для работы с этим драйвером (открытие интерфейса работы с драйвером, использование символьных ссылок и т.п.). Возможно ли реализовать такой драйвер с использованием Numega DriverStudio? По умолчанию, многие возможности там не реализованы. Например, DriverWorks wizard генерит код только для поддержки двух каналов, чего иногда не хватает для эффективной работы. Также отсутствует возможность передачи блоков данных более чем 64 байта (в обработчике события write стоит проверка и урезание буфера до максимальных 64 байт вместо дробления на части и отправки буфера порциями).

     

    Можете подсказать, где можно порыть? Может есть где хорошие простые примеры с комментариями? Давно пытаюсь тщательно разобраться в вопросе, но всегда сталкиваюсь с тем, что примеры драйверов для NT DDK уж очень навернутые, а использование DriverStudio от Numega вводит ограничения.

    Есть ли хорошие книги по этому вопросу? Читал, к примеру, книги Солдатова и Агурова. Однако вышеуказанные вопросы там затронуты лишь частично и в общем.

     

    Вообще, ситуация такая, что во всех книгах, которые мне удалось найти, приведены примеры начального уровня типа "передать пару байт туда-обратно". С этим все понятно, но стоит копнуть глубже - тут же возникает куча вопросов.

  20. Есть и с флешью варианты - BF538F. Если не стоит задача сокрытия прошивки, то внешная мелкая флешка решает проблему - по любому бенефичи Blackfin'а покрывают это "неудобство".

     

    Решать, конечно, Вам.

    Кстати, на самом деле, имеющаяся Flash внутри BF-538F висит на шине (EBIU), которая выведена наружу! Поэтому, можно при загрузке (исполняться из Flash Blackfin не умеет...) слить всю прошивочку, подключившись к EBIU внешне.

    Флэш внутри BF-538F сделана исключительно для удобства, а не для защиты кода.

    А вот для защиты - имеется технология Security LockBox - в новых BF-54x и BF-52x. Она построена на двухуровневом шифровании (авторизация + последующая дешифрация). И в новых BF флэши нет, т.к. делается ставка на шифрование.

  21. Пробуем грузиться со второй Flash STR912 (которая 32k). В новой версии RVDK (3.04 вроде бы) появилась возможность переключить загрузку на вторую Flash записыванием конфигурационной области (добавлены новые алгоритмы программирования flash ICP).

    Переключить Flash вроде бы получается, прошить ее тоже, однако вот программа из нее стартовать никак не хочет.

    В стартапе устанавливаем регистры BBADR = 0x400000, size = 32k, NBADDR = 0x0, size=512k. Потом еще в настройках проекта указываем, куда грузить программу (либо на вкладке Target, либо в sct-файле - пробовали и так и эдак) - адрес 0x400000.

    Вообще, с этими адресами возникли непонятки: стандартный стартап устанавливает второй флэш адрес 0x400000. Как понимаем, это ее физический адрес - адрес, по которому нужно прошить программу (для алгоритма прошивки). Т.е., стартап устанавливает логический адрес, равный физическому. Как только регистры BB и NB инициализируются у второй flash логический адрес уже 0x0? Тогда непонятно, почему после линковки абсолютные адреса переходов устанавливаются со смещением 0x400000?

     

    Попробовали сделать так: скомпилировали программу для адресов 0x00, а зашили по адресам 0x400000. Пришлось для этого создавать второй проект, куда вставлялся откомпиленный образ первого и выставлялись адреса 0x400000.

     

    В общем, после всех этих манипуляций и переключения флэши для загрузки со второй (bank1, 32k) процессор теперь уже вообще не перепрошить и не переключить назад. Пишет COULD NOT STOP ARM DEVICE! Такое уже бывало после переключения на вторую флэш, но это обходилось переключением назад на первую (для этого приходилось удерживать ресет перед началом прощивки, потом быстренько отпускать... чтобы программа, видимо, не успела запуститься). А теперь и эти фокусы не помогают!

     

    Кто-нибудь пробовал грузиться из второй флэш?

  22. Получал. :biggrin: Но только после разгона до 130 Мгц

    http://aly.projektas.lt/Projects/STR91_Start/STR91.htm#2

     

    Интересно, ваши результаты совпадают с моими?

     

    Совпадают :)

    Только тест с одним переключением (только последовательное выполнение большого количества команд, линейно) в цикле не производился при выполнении из RAM. А для Flash результаты такие же.

     

    Вы имеете ввиду, получили на 130МГц 96 MIPS или 130 MIPS?

    Хочется получить количество MIPS равное частоте процессора (на выполнении простейших операций, конечно)

  23. Порт Micrium uC/OS-II со стеком TCP/IP на STR912 нашел. Есть примеры для IAR для платы от ST.

    По описанию внутри этого архива видно (на скриншотах), что у них TCP/IP на тесте передачи из контроллера в PC дает даже 2.9 Мбайт/с.

    Глянул исходники - они используют оптимизированную ассемблерную функцию вычисления контрольной суммы. + реализация всяких вещей TCP таких как окно на много сегментов.

     

    Сделано, конечно, профессионально. куча комментариев, которые пронумерованы, ..., документация...

    Но уж очень большой исходник у них.

     

    Хочется взять какой-нибудь стек без наворотов и "добавить" в уже существующий проект без операционки, чтоб не переписывать уже написанный код под эту операционку.

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