-
Постов
10 908 -
Зарегистрирован
-
Посещение
-
Победитель дней
31
Сообщения, опубликованные Сергей Борщ
-
-
22 минуты назад, jcxz сказал:
256КБ и не нужно, хватит в разы меньше. И называется оно "кеш" и давно уже имеется у многих МК. И часто включено по дефолту (после сброса).
Тут что-то другое. Даже глядя на вот на эту табличку:
Это из GD32F1 - AN002 Programming flash memory manual. И выход из спячки Standby в 59.4 мс для устройств с памятью до 128К, и 118.8 мс для устройств с памятью больше 128 К неспроста.
-
7 минут назад, natsu сказал:
Но структуры встречаются не маленькими. Придется высчитывать сколько интов надо чтоб покрыть размер.
Выравнивается начало структуры. Для этого достаточно union с одним-единственным uintX_t. Все остальные члены структуры автоматически подразумеваются выровненными. Для неупакованных структур это выполняется автоматически - компилятор сам добавляет в структуру пропуски для выравнивания каждого члена исходя из его размера. Для упакованных структур это надо делать вручную, сортируя члены при объявлении структуры. memcpy никак не сможет сделать это за вас.
-
31 минуту назад, natsu сказал:
Но возникает проблема - я не знаю как объявить область памяти так, чтобы в ней разместить эти же структуры, но выравненными
Это-то как раз просто - создайте union вашей структуры с uintX_t. Но это даст вам только выравнивание первого члена упакованной структуры. На выравнивание остальных членов это никак не повлияет. Если порядок данных в этих структурах не прибит вам гвоздями свыше - перетасуйте их таким образом, чтобы все остальные члены тоже оказывались выровненными при выравнивании начала структуры, Если это сделать невозможно - пользуйтесь упакованными структурами и думайте об алгоритмах своей программы - там поле для экономии ресурсов гораздо шире.
31 минуту назад, natsu сказал:что работа с такими данными медленная, а может и приводить к ошибкам,
Медленная - да, а все ошибки 99.999% ваши и находятся в вашем исходнике.
-
5 часов назад, destroit сказал:
Он-то, ясен пень, ставит бусину, потому-как в даташите прописано ...а вы почему не ставите ?
Трудно вспомнить. Скорее всего потому, что просто не обратил на нее внимания на этой картинке.
1 час назад, mitya1698 сказал:как полагаете, выравнивание имеет хоть какой-то смысл в парах?
Насколько я помню, там частота максимальная около 30 МГц, на такой частоте и такой длине (от физики до разъема) выравнивание не сильно влияет на работоспособность. Полагаю, что на максимально допустимых 100 м воткнутого в разъем кабеля разность длин проводников в паре будет гораздо больше просто за счет неидеальности скрутки витых пар.
-
1 час назад, destroit сказал:
у вас на плате не вижу . Как думаете, насколько критично сиё требование,
У меня работает. Сомневаетесь - ставьте.
-
Что-то у вас не работает. Может терминал, может ваше устройство (сколько информации о симптомах - столько же и в диагнозе).
-
Еще до кризиса пару раз покупал по 10 шт STM32F072, оба раза все рабочие. Из примерно 20 закупок по 5...15 шт. ATmega88 (выбирал самые дешевые предложения) процентов 5 контроллеров в мусорку.
-
У гипертерминала есть неприятная особенность - он не может открыть железный порт, на входе которого состояние break, т.е. постоянный логический ноль. Может это ваш случай, может нет. И могу ошибаться, но и в случае определенных уровней на DSR, CTS тоже. Если у вас самописная реализация CDC-ACM, которая не поддерживает запрос SET_CONTROL_LINE_STATE - это тоже может быть причиной.
-
-
12 часов назад, byRAM сказал:
Даже я такого не помню.
Это старое название 140УД1. Я еще помню, даже в руках держал.
-
-
Гляньте эту статью. Ссылку на нее нашел когда-то на этом же форуме.
-
Чудес не бывает. Или COE не ноль, или дергает кто-то другой. Вы отладчиком COE смотрите когда импульсы на выходе поймали, надеюсь?
-
11 часов назад, _pv сказал:
причём даже без отдельных чипселектов, в daisy chain
Но какой-то сигнал для синхронизации все же нужен. Или физический, или программный по паузам между передачами. Иначе любая иголка в тактовом сигнале и обмен порушится навсегда.
-
Ну если COE в нуле, а импульсы есть - где-то ваша программа ногой дергает. Ищите.
-
-
2 часа назад, adnega сказал:
Нужно проверить совместимость.
Таймеров существенно меньше, модуль тактирования отличается. Зато есть недокументированный USB, который китайцы успешно в своих клонах st-link использовали. Вроде как это F103 с сокращенным тестированием.
-
6 минут назад, iamnot сказал:
Надеюсь периферия одинаковая.
У этих да. Начиная с F100xC вдвое увеличивается размер страницы флеш.
-
4 часа назад, mantech сказал:
Разве не керамику там уже ставят?
Понятия не имею. Фото бы...
-
11 часов назад, firew0rker сказал:
По питанию 2 ионистора
Смею предположить, что там есть еще и импульсные преобразователи входного напряжения питания в напряжение 5, 3.3, 2.5 или сколько там нужно этому процессору. С большой долей вероятности высохли выходные электролиты этих преобразователей и на питании процессора сейчас большие пульсации, которые и сводят его с ума.
-
6 часов назад, Eddy_Em сказал:
И dmesg подтверждает, что ничего не появилось, кроме какого-то CDC, который вообще к делу отношения не имеет.
Вот dmesg моего устройства:
[516667.339860] usb 1-1.2: new full-speed USB device number 27 using ehci-pci [516667.450691] usb 1-1.2: New USB device found, idVendor=16c0, idProduct=05e1, bcdDevice= 1.00 [516667.450700] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [516667.450702] usb 1-1.2: Product: [затерто] [516667.450704] usb 1-1.2: Manufacturer: [и здесь затерто]. (www.[тоже затерто].com) [516667.450706] usb 1-1.2: SerialNumber: 1 [516667.451366] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device [516667.451707] cdc_acm 1-1.2:1.2: ttyACM1: USB ACM device
Тем не менее это устройство умеет DFU вот прямо так, без джамперов и перетыканий. С линуксовой dfu-util "из коробки", с виндовой после небольшой пляски с zadig. И все строго в соотвествии с "Universal Serial Bus Device Class Specification for Device Firmware Upgrade Version 1.1 Aug 5, 2004".
А вот его lsusb -d 16c0:05e1 -vv:
Скрытый текстBus 001 Device 031: ID 16c0:05e1 Van Ooijen Technische Informatica Free shared USB VID/PID pair for CDC devices Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x16c0 Van Ooijen Technische Informatica idProduct 0x05e1 Free shared USB VID/PID pair for CDC devices bcdDevice 1.00 iManufacturer 1 [затерто]. (www.[тоже затерто].com) iProduct 2 [и здесь затерто] iSerial 3 1 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x009f bNumInterfaces 5 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 500mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 0 iInterface 0 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 bDataInterface 1 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 0 bSlaveInterface 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 128 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 2 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 0 iInterface 0 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 bDataInterface 3 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 2 bSlaveInterface 3 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 128 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 254 Application Specific Interface bInterfaceSubClass 1 Device Firmware Update bInterfaceProtocol 1 iInterface 4 DFU interface Device Firmware Upgrade Interface Descriptor: bLength 9 bDescriptorType 33 bmAttributes 9 Will Detach Manifestation Intolerant Upload Unsupported Download Supported wDetachTimeout 0 milliseconds wTransferSize 53 bytes bcdDFUVersion 1.01 can't get device qualifier: Resource temporarily unavailable can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0000 (Bus Powered)
Да, там не F103, а L083, F072, F042, F107, F407, но в первых трех USB такой же, как у F103 не считая встроенной подтяжки.
DFU в Run-time mode не показывается в линухе. И в винде не должно (согласно спецификации DFU), но у винды свое представление о прекрасном.
Вы который раз уже "машете шашкой" в темах, в которых, мягко говоря, плаваете. Постарайтесь сдерживать себя.
-
1 час назад, std сказал:
для того чтобы получать строго определенное колчество импульсов STEP ШД и приводить вывод в известное состояние.
Ну "приводить вывод в известное состояние" довольно просто - надо использовать режим ШИМ(PWM). В конце периода он в строго определенном состоянии. Строго определенное количество импульсов - подсчетом в прерывании. Я не знаю что у вас за задача, когда я писал контроллер шагового двигателя, у меня в любой момент могла прилететь команда на разгон/торможение и ждать "строго определенного количества импульсов" было просто нельзя. Поэтому я считал импульсы в прерывании сответствующего канала таймера.
P.S. для реализации (почти) линейного разгона/торможения шагового двигателя вам может быть полезна эта статья: Generate stepper-motor speed profiles in real time.
-
7 минут назад, jcxz сказал:
Если так делать, то невозможно будет перейти из основного приложения в загрузчик.
Я только мысль подал - что есть уже готовые флаги и не нужно ничего мудрить с NOINIT. Там есть и другие флаги. Сам я делаю if(!(RCC->CSR & RCC_CSR_SFTRSTF)) {запускаем приложение;} {иначе запускаем загрузчик;}
Но изначально речь шла о заглушке вместо загрузчика.
-
11 минут назад, Arlleex сказал:
Некий признак в NOINIT-регионе ОЗУ
(RCC->CSR & RCC_CSR_SFTRSTF) ?
STM32F429ZI осуществить MSC и HID
в STM
Опубликовано · Пожаловаться
Что вы уже сделали, какие сложности возникли?