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

jcxz

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    38

Весь контент jcxz


  1. Ну так он это тоже про другие микросхемы рассказал ;) Я хотел сказать, что даже на "полных функциональных аналогах" возможны всякие варианты. Сталкивались с таким. Когда вроде мс заявлена как полный функциональный аналог и по даташиту вроде всё ок, а вдруг - впаиваем и не работает. А всё потому, что начинают проявляться баги (или просто недопонятые при разработке моменты в доках), которые раньше не проявлялись. А с памятью - может даже просто изменившееся время доступа уже привести к разности в работе. Только опыт покажет - заработает или нет. Как говорится: "Гладко было на бумаге, да забыли про овраги" ;)
  2. Cortex-M7

    Просто отлаживайте Ваше ПО в ОЗУ. Размещение кода Flash/ОЗУ контролируется одной строчкой конфиг-файла компоновщика (IAR: *.icf-файл). Я обычно всегда так делаю, пока позволяет размер программы.
  3. Умер фирменный J-Link

    "Высоковольтных применений" на столах разработчиков у нас не было. Поэтому наверное и пробоев не было. А с обычными 220-380V на разных фазах - изоляция не пробивалась. Для именно "высоковольтных" применений, имхо лучше использовать J-Link Pro воткнутый в Ethernet-хаб подключенный по WiFi. Ну или как-то пересмотреть стиль работы.... Вероятно Ваш Lite реально не выполняет никакую Verify (ну или выполняет её другим способом нежели обратное чтение). У меня, при снятии галки, скорость растёт примерно в 2 раза.
  4. Не факт. Если у процессора есть линии адреса выше 17-й и ТС запаяет скажем 19 линий на соответствующий SRAM-чип, то вполне возможно любое поведение программы, в зависимости от кривости её написания. Вполне возможно что в программе есть ошибки адресации. Например чтение по адресу выше адресного пространства SRAM. Которое сейчас возвращает всегда какое-то фиксированное значение и с ним ПО работает нормально (так сложились звёзды при отладке того ПО ;), а с реальной памятью по этим адресам будет другое поведение программы. Или наоборот: со старой SRAM при выходе за адресное пространство SRAM будет выполнена чтение/запись из начала SRAM, то с новой - переполнения не будет - совсем другие результаты будут. Это конечно если не заданы чётко границы региона SRAM через MPU (чё там за проц у автора?).
  5. Умер фирменный J-Link

    Не только ULTRA. Я уже писал, что на прошлой работе у нас было много разных J-Link-ов со staterkit-а. И по специфике разрабатываемого оборудования, все они подключались через изоляторы. И был всего один изолятор по стороне JTAG. Остальные - по USB. Проблем не было. По опыту на той работе, я бы скорее сказал, что "нет данных работают-ли J-Link-и без изоляторов" ;) Снимите галку "verify download" в опциях отладки. Я свои данные приводил при снятой этой галке (о чём указал).
  6. А кто его тут понял? Вы? А Вы уверены, что то, как Вы его поняли, совпадает с тем, что имел в виду вопрошающий? :laughing:
  7. началось очередное предсессионное обострение......
  8. А контекст задачи где FreeRTOS сохраняет? Разве не на стеке задачи? По-крайней мере часть контекста, сохраняемая при срабатывании ISR, будет на стеке задачи. Если конечно не всё исполнение идёт в Handler-режиме... :) Если конечно вопрос касается Cortex-M, о чём здесь можно только догадываться..... Не нужно даже переделки. Достаточно изменить ключи оптимизации или обновить компилятор. ;) Вообще-то при входе в ISR стэкинг делается в тот стек, который был активным на момент прерывания, а уже потом делается переключение стеков. Если конечно исполнение исходно шло в Thread режиме. Таким образом контекст прерванной задачи оказывается уже на её стеке и не нужно его копировать из Handler-стека куда-то в область данных задачи (как было на ARM7). А уже дальнейшая работа ISR (и всех вложенных более приоритетных) идёт на Handler-стеке.
  9. Приоритет чего? Приоритета чего??? Кстати - в uCOS нет, но в её портах - имеется. И в порту для Cortex-M: #if OS_CRITICAL_METHOD == 3u #define OS_CPU_SR_ALLOCATE() OS_CPU_SR cpu_sr //Allocate storage for CPU status register #define OS_ENTER_CRITICAL() {cpu_sr = __get_PRIMASK(); __disable_interrupt();} #define OS_EXIT_CRITICAL() {__set_PRIMASK(cpu_sr);} #endif А уже в самом ядре интенсивно пользуются эти функции.
  10. Всё то же самое, я думаю, можно сделать и на любой другой RTOS. Например под uCOS - без проблем: SysTick можно заменить на любой другой таймер или вообще его отключить. Это вообще дело порта и не входит в ядро uCOS.
  11. Умер фирменный J-Link

    Сейчас протестил реальную скорость работы J-Link ULTRA (starterkit.ru) через SWD с Infenion XMC4700 (Cortex-M4F). Результаты не впечатляющие :( Тестил под IAR (загрузка образа 245760 байт в два несмежных региона ОЗУ, Verify - отключено). И также тестил через J-Flash 6.10i от Segger (чтение области FLASH объёмом 2МБ). Загрузка образа 245760 байт в ОЗУ под IAR 7.80 на скорости 25МГц и на скорости 4МГц - по времени мало отличаются. Так же почти нет разницы и при работе через USB-изолятор (ADUM4160). IAR: SWD = 25МГц, через изолятор: 245760 bytes downloaded (133.56 Kbytes/sec) SWD = 25МГц, без изоляторя: 245760 bytes downloaded (135.90 Kbytes/sec) Выгрузка образа флешь 2МБ через J-Flash на SWD=25МГц: и через изолятор и без изолятора - около 1.6сек (сильно плавает). При понижении частоты до ~4МГц время практически не меняется. Проц тактируется от встроенного RC = 24МГц. Можно конечно попробовать скриптом загрузчика перед загрузкой образа включить PLL и разогнать до 144МГц, но думаю мало что даст. Так как похоже узкое место - USB. На других МК сейчас не имею возможности попробовать. Тестилось под виндой8. Хотя.... Сейчас вытащил из стола простенький J-Link Lite и попробовал на нём. Загрузка того же самого образа 245кил из IAR в ОЗУ XMC4700: Device "XMC4700-2048" selected. DLL version: V6.10d, compiled Oct 6 2016 22:10:47 Firmware: J-Link Lite-Cortex-M V8 compiled Sep 15 2016 12:05:01 Selecting SWD as current target interface. JTAG speed is fixed to: 25000 kHz Performing XMC4500 connection sequence. ... Performing XMC4500 reset Hardware reset with strategy 8 was performed Initial reset was performed 245760 bytes downloaded (79.58 Kbytes/sec) уже всего 80кБ/с. Соединяется он только на частоте SWD = макс. 2МГц (хоть в лог и пишет о 25МГц). Так что разница с ULTRA - существенная. А вот время чтения всего образа FLASH под J-Flash через J-Link Lite почему-то осталось примерно таким-же. Других J-Link-ов сейчас под рукой нет к сожалению.
  12. Извините - не могу. Под "другими" здесь имелся в виду OMAP-L137. Проект на нём коммерческий и, согласно подписанному договору, я не имею права выкладывать его исходники.
  13. Умер фирменный J-Link

    Используйте полный JTAG, а не SWD и развяжите по стороне JTAG.
  14. Умер фирменный J-Link

    Я вообще-то спрашивал: Раз Вы советуете за бОльшие деньги купить эмулятор с поддержкой ETM, то что это даёт? Какой полезный функционал? Ведь при использовании ETM есть существенный минус как я понимаю - большее количество проводов к отладчику. А нужно-ли? Обратная отладка, без наличия ETB в целевом МК, с ним возможна? Вот ETB - весьма полезная вещь и не требует дополнительных проводов - всё через обычный JTAG. А загружать код на 25МГц и J-Link ULTRA с того же стартеркита умеет.
  15. Эххх!!... Когда-то писал под TMS320VC55xx на асме :rolleyes:
  16. Бывают и I2C мегабитные. Не ногодрыгательные канеш. Расширяйте свой кругозор: Для SPI кроме схемы соединения "звезда" (когда каждому слэйву назначается свой CS), бывают ещё слэйвы, поддерживающие соединение "в цепочку" (каждый слэйв имеет MOSI-вход и MOSI-выход, с MISO - аналогично). А ещё бывают слэйвы, которым можно задать задержку (в тактах от начала CS) начала данных и просто подать все сигналы MOSI/MISO/SCLK/CS на все слэйвы параллельно - все сигналы общие для всех слэйвов. В последнем случае уже получается похоже на I2C - задержку эту можно считать адресом отдельного слэйва.
  17. Cortex-M4 от NXP

    Да, вот только что вспомнил ещё одну классную вещь, которая есть в LPC43xx, и которую не видел в других МК: встроенный ETB. С ним Ваш заурядный J-Link превращается в J-Link+J-Trace :santa2: А интересно, кто знает: в каких ещё Cortex-M есть встроенный ETB?
  18. Если у Вас задача на Stm32f446, не логичнее его RM и читать? :laughing:
  19. Я имел в виду именно "Linked List" - свЯзные списки. В LPC. В Tiva тоже подобный есть. С EFM32 не имею опыта. Я так тоже делаю. Но тут надо умнее рассчитывать размер очередной передачи. Чтобы не оказалось, что в очередной передаче нужно передать всего один байт. :) Если хочется, то можно и без запрета прерываний. Как тут уже предложил zltigo: иметь кольцевой буфер не в виде просто массива байт, а в виде массива указателей на блоки с массивами байт. Функция, которая хочет записать данные в такой буфер, из некоего пула свободных блоков получает блок, записывает свои данные туда, формирует заголовок блока и помещает этот блок в кольцевую очередь при помощи LDREX/STREX. Я обычно так строю очереди для межпоточных передач данных под виндой. Без семафоров и критических секций, на семействе функций InterlockedExchange...(). К гадалке не ходи - на каждое прерывание дёргает отправку сообщений какому-то объекту синхронизации ОС . Совершенно безграмотная организация работы! На пустом месте тратится огромная часть времени процессора. Какой смысл дёргать ОС так часто???
  20. Умер фирменный J-Link

    Сам лично пользовал (и пользую сейчас) различные J-Link-и заказанные оттуда. V8 и V9 и Ultra - всё сам пользовал много лет уже. И данный конкретный у меня был и пользовался, но предыдущей версии (который просто Pro с Ethernet-ом). Именно этот пользует коллега (на уже прошлой работе). Проблем не было. Правда именно по Ethernet-у я его использовал всего пару раз наверное. Да они все на одном ядре - все перешиваются и обновляются до последней версии Segger-ских дров включительно. Наверное Вы хотели сказать - ETB? ETB нету в тех, что на starterkit-е. Но это уже ведь совсем другие деньги..... Но если отлаживаемый МК достаточно крут, то он сам в себе имеет ETB. Например - LPC43xx. Насчёт M7 - не знаю, я работал максимум с M4. Но есть ведь отдельные JTAG-изоляторы именно по стороне JTAG. Можно глянуть на segger.com. Мы покупали такой изолятор как-то и в РФ, но уже не помню где. Он достаточно дорог. По тем ещё деньгам, до обвала стоил около 9тыр - дороже чем J-Link. Дешевле изолировать по стороне USB. Зайдите на алиэкспресс, наберите "USB изолятор" - выдаст кучу ссылок на дешёвые изоляторы на ADUM4160. Правда скорость J-Link-у они конечно обрежут. Ещё вариант (я уже писал вроде) - у Сауриса (sauris.de) есть эмуляторы со встроенным изолятором/ но они уже не J-Link, хотя тоже умеют Cortex-M.
  21. Cortex-M4 от NXP

    Вот если-б они (STM32F7xxx) и остальную периферию из LPC43xxx взяли! А ещё - хотя бы одно M0-ядрышко добавили как в 43-хх ;)
  22. Это есть почти во всех МК.... кроме STM32. А большинство народу тут сидят именно на ём. :laughing: Правда, например в LPC17, такой режим не поддерживает возможности синхронизации от разных источников. А в Kinetis это возможно?
  23. Лучше задать обработчик события невыделения памяти malloc-у, чем в каждом месте выделения пихать проверку.
  24. Ну как же не написано? Вот выдержка из RM: Bits 31:0 M0A[31:0]: Memory 0 address Base address of Memory area 0 from/to which the data will be read/written. These bits are write-protected. They can be written only if: – the stream is disabled (bit EN= '0' in the DMA_SxCR register) or – the stream is enabled (EN=’1’ in DMA_SxCR register) and bit CT = '1' in the DMA_SxCR register (in Double buffer mode). Так что в циклическом режиме или режиме double-buffer есть шанс сэмулировать работу подобно свЯзным спискам, переключая второй буфер, пока исполняется первый. Дерзайте! :)
×
×
  • Создать...