johnshadow
Участник-
Постов
41 -
Зарегистрирован
-
Посещение
Весь контент johnshadow
-
Segger J-Link ARM
johnshadow ответил srg_co тема в Cредства разработки для МК
"V7/V8/V9" это не версии ПО, а версии "железа" -
-
Выравнивание данных в структуре
johnshadow ответил TOG тема в Программирование
Это как и зачем? -
С помощью pety3bi удалось решить свою проблему. В найденном на просторах инета полном дампе прошивки v9 подсмотрел, что лицензии хранятся со смещения 0xBF20. Дорастил бутлоадер KS_Diy_Link до нужного размера в hex-редакторе и записал в него лицензии. Исключил только лицензию RDDI - вроде пробегала информация что с нею возникают проблемы. Возможно знающие поправят меня если я ошибаюсь на счет нее. Залил бутлоадер, обновился штатно, настроил серийник. Буду наблюдать. Всех благодарю за помощь и pety3bi персонально. jlink_v9_bootloader_w_licenses.bin
-
На питание не похоже - серийник зашивает без проблем, а затем в тех же условиях всегда ошибка при установке лицензии. Все же склоняюсь к версии, что проц поддельный - я такого "stm32f207rgt6" на сайте ST вообще не нашел Про лицензии на ПК не знал, спасибо.
-
Не помогает 😞 Ошибка та же самая: Error: Communication timed out: Requested 4 bytes, received 0 bytes ! upd: Пробовал на чистую - очистить проц, залить бут, залить прошивку jlink.exe 5.12f, ею же настроить серийник и ею же пробовать добавить лицензию.
-
Добрый день. Подскажите по восстановлению китайца jlink v9, с маркировкой hlink v9.93 на плате. Устройство досталось с чистым процом на котором маркировка stm32f207rgt6, но st-link его определяет как: Device ID:0x413 Device family :STM32F405xx/F407xx/F415xx/F417xx Залил в него bootloader от KS_Diy_Link, после чего jlink.exe сам залил в него прошивку. Серийный номер программируется успешно, а вот установить лиценции (Exec AddFeature JFlash и тп) не удается - выводит ошибку: SEGGER J-Link Commander V6.14e (Compiled Apr 27 2017 18:27:20) DLL version V6.14e, compiled Apr 27 2017 18:26:50 Connecting to J-Link via USB...O.K. Firmware: J-Link V9 compiled Apr 21 2017 11:08:06 Hardware version: V9.00 S/N: 2040011 VTref = 3.296V Type "connect" to establish a target connection, '?' for help J-Link>Exec AddFeature JFlash ****** Error: Communication timed out: Requested 4 bytes, received 0 bytes ! ERR J-Link> Пробовал версии 6.14, 6.30 - без разницы. Версия jlink.exe 7.88 в тоже время успешно обновляет прошивку до последней. К целевому устройству коннектится (проверял на kinetis), отладка запускается. А вот jflash ругается на отсутствие лиценции. Это можно как-нибудь исправить без замены проца на "правильный" stm32f205rb?
-
Не совсем iar. Я для cortex в gcc дампил elf через objdump. Попробуйте ему ваши объектники скормить. arm-none-eabi-objdump -d -S prog.elf prog.lst
-
Защита прошивки.
johnshadow ответил jenya7 тема в ARM
вы же при заливке прошивки выбираете в jlink вариант проца у которого (allow security) после названия? -
Согласен. Я когда-то на gps трекерах автомобильных так и делал - в рабочем приложении скачивалась прошивка на внешнюю spi-flash, а затем перезагрузка. Дальше бутлоадер проверяет наличие прошивки и ее корректность на внешней флешке. Если все в порядке - расшифровывает и заливает в основную флеш. И еще - реализация скачивания\докачки по http оказалась проще (реализовывал и ftp, и http).
-
Согласен. Нужно что-то с функционалом ala ArtMoney, но не ясно как отслеживать если в одном CAN сообщении приходят разные SPN.
-
Да, в свободном доступе их нет. Т.к. там не FMS, а проприетарщина. :( Можно попробовать такую методику поиска - тыц (сам не проверял).
-
Если нет стойкой ненависти к паскалю - ниже прилагаю честно подсмотренный где-то модуль, которым пользуюсь в одном проекте. Им определяю подключение\отключение последовательных портов U_Usb.rar
-
Вопрос по лицензированию
johnshadow ответил kostya-m тема в FreeRTOS
Вот где у нас идеологическая разница - у меня в master попадает только проверенный код, который прошел тестирование в том числе и на группе реальных устройств у клиентов (которые согласились стать бета-тестерами). Таким образом в любой момент из master всегда можно собрать "стабильный" релиз. И как у релизов, так и у бета-сборок однотипный вывод версии - типа "XX.YY дата коммита и короткий hash". Где XX.YY это мажорные и минорные значения версии, которые правятся руками (может быть и тэгом и git). В вашем же случае, если возникает необходимость проверить бету на оборудовании клиента, но клиент столкнется с двумя разными стилями указания версии: 1) Релизная, вида: "XX.YY.buil_num" 2) Бета, вида: "commit_hash" или что-то подобное Т.е. имеем две сущности (два вида), хотя фактически можно обойтись одной: только второй, так как первая не может быть универсальной, ведь она поддерживается только в master ветке. Стоит ли плодить сущности без их необходимости? Предлагаю закончить обсуждение, т.к. оба подхода имеют право на жизнь (и реально применяются) и с обеих сторон было приведено достаточно аргументов, для принятия решения, какой из них более подходящий в конкретном случае. -
Вопрос по лицензированию
johnshadow ответил kostya-m тема в FreeRTOS
Так ведь в распределенных СКВ нет возможности проводить сквозную нумерацию билдов\коммитов. Допустим я создал ветку от вашего проекта и работаю с ней, параллельно с вами. У меня свои номера билдов теперь, у вас свои. И как их дальше сравнивать? На mercurial пытались прикрутить сквозную нумерацию, но по моему это отход от идеологии распределенных СКВ. А так как есть дата коммита, то полный hash для однозначного определения конкретного коммита и не нужен. -
Вопрос по лицензированию
johnshadow ответил kostya-m тема в FreeRTOS
Вы с этим проектом один работаете? Как без систем контроля версии выполняете модификацию кода? Т.е. каким образом разделяете релизную копию и копию в которой сейчас вносите изменения? По поводу билдов. Зайдите в FireFox в about:buildconfig и обнаружите: Built from https://hg.mozilla.org/releases/mozilla-beta/rev/d171c36d484800b1bb00db1612460a7120dd2fdf Аналогично для Хрома в about:version: Версия 0e9a9a6f3676ae439b78cd9b3f62b4193c3ac7d5-refs/branch-heads/2924@{#895} -
Вопрос по лицензированию
johnshadow ответил kostya-m тема в FreeRTOS
А как вы в оффлайне определяете такое написание? Например на сроке годности продуктов? в readme проекта можно указать формат интерпретации даты yyyy-dd-mm или yyyy-mm-dd - для новых участников проекта. Там же можно указать и стили оформления кода и т.п. Уверяю вас - это возможно. Вы же не думаете, что короткий hash создатели git придумали just for fun? И еще момент - "db74878" это первые символы полного hash. Два варианта: 1) выводить в переменную и время. для избегания разночтений - в UTC. 2) в логе git посмотреть полную дату-время коммитов. Контроль версий, как и баэкапы можно не любить, но жизнь вынуждает их применять... рано или поздно. :rolleyes: -
Вопрос по лицензированию
johnshadow ответил kostya-m тема в FreeRTOS
У меня из git обычно забирается такой командной, которая выполняется автоматом перед компиляцией: git log --pretty=format:"(%ad %h)" --abbrev-commit --date=short -1 результат потом попадает в h-файл. Получается в итоге: #define GITHASH "(2017-02-03 db74878)" в итоге и дату видно и не нужен длинючий hash. По дате можно определить "новизну" билда, а по hash найти конкретный коммит -
Вполне. Есть пару предложений: malloc возвращает void* - т.е. приведение к типу "указатель на Element" не нужно тип переменной на которую указывает tmpElement может в дальнейшем поменяться, я в таких случаях предпочитаю в sizeof использовать сам указатель: Element *tmpElement = malloc(sizeof(*tmpElement)); memset (tmpElement, 0, sizeof(*tmpElement)); проверку на выделение памяти из кучи добавляю так (хотя возможно это и не совсем правильный метод): Element *tmpElement; if ((tmpElement = malloc(sizeof(*tmpElement)))) { memset (tmpElement, 0, sizeof(*tmpElement)); ... free(tmpElement); //если этот кусок памяти больше не нужен }
-
STM32F0xxx USB без HAL
johnshadow ответил alexf тема в STM
Возможно. Мне тяжело сейчас предоставить "живой" пример - дело было два-три года назад. Помню, что ошибка проявлялась при совместном использовании оптимизации по размеру и LinkTimeOptimization (Os и flto). Проект был по CooCox и они только добавили опцию LTO у себя в настройках компиляции. Обошел ее используя не библиотечную реализацию: __attribute__((used)) void * memcpy(void * d1, const void * s1, size_t n) { char * d; const char * s; volatile size_t n1 = n; s = s1; d = d1; while (n1--) *d++ = *s++; return d1; } "помогало" именно создание volatile'ной переменной и дальнейшая работа с ней. в противном случае (при использовании аргументной переменной n) бесконечно висел в while - уменьшение переменной не происходило. причем висело не в моем коде, а внутри функций freertos (тогда то ли 6, то ли 7 версии). понимаю, что это все выглядит как рассказ про йети, но... :laughing: -
STM32F0xxx USB без HAL
johnshadow ответил alexf тема в STM
Я просто думал, что для cortex-m0 компилятор генерирует безопасный код в тех случаях когда адрес переменной на момент компиляции не известен. Тогда мне не ясно назначение опции -mno-unaligned-access. Ладно бы hardfault возникал при оптимизациях Os или O3, где побайтовый доступ потенциально приводил бы к раздутию кода или снижению производительности. 2Allregia: Нет, на IAR\KEil не проверял. memcpy при оптимизациях Os\O3 меня уже пару раз подводила. решение со структурой действительно потенциально быстрее, но не будет ли генерироваться ассемблерный код, который будет вылетать при невыровненном доступе? -
STM32F0xxx USB без HAL
johnshadow ответил alexf тема в STM
Пример CDC для F072 можно подсмотреть в форке kuldeepdhaka/libopencm3-examples в ветке example/pwm/stm32f07. под stm32f0xx пришлось в паре мест слегка поправить, т.к. получал hardfault по доступу к невыравненным данным. типа такого: diff --git a/libopencm3/usb/usb_standard.c b/libopencm3/usb/usb_standard.c index d94ceed..da47391 100644 --- a/libopencm3/usb/usb_standard.c +++ b/libopencm3/usb/usb_standard.c @@ -130,7 +130,9 @@ static uint16_t build_config_descriptor(usbd_device *usbd_dev, } /* Fill in wTotalLength. */ - *(uint16_t *)(tmpbuf + 2) = totallen; + //*(uint16_t *)(tmpbuf + 2) = totallen; + *(tmpbuf + 2) = totallen & 0xFF; + *(tmpbuf + 3) = totallen >> 8; return total; } я так и не понял почему компилятор не обрабатывает такие ситуации сам (gcc-arm-embedded 5.4 2016q2). может кто из местных объяснит. -
STM32F0xxx USB без HAL
johnshadow ответил alexf тема в STM
использую libopencm3 на stm32f072 - CDC (для основной проги) и MassStorage (для бутлоадера). -
stm32 usb_msc и SCSI_START_STOP_UNIT
johnshadow ответил johnshadow тема в ARM, 32bit
про то, что "SOF продолжают поступать и после "безопасного извлечения" я соврал. После "безопасного извлечения" операционка перестает общаться с устройством. Т.ч. переполз на работу с USB через прерывания и если в течении 1 секунды нет прерываний - считаю, что ОС прекратила работу с устройством. Но есть мысль, что это костыль - все же хотелось бы добиться получения требуемых SCSI команд.