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

Сергей Борщ

Модератор
  • Постов

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

  • Посещение

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

    31

Сообщения, опубликованные Сергей Борщ


  1. 22 минуты назад, jcxz сказал:

    256КБ и не нужно, хватит в разы меньше. И называется оно "кеш" и давно уже имеется у многих МК. И часто включено по дефолту (после сброса).

    Тут что-то другое. Даже глядя на вот на эту табличку:

    image.thumb.png.c4d5867cde56ce262d53f836773b13cf.png

    Это из GD32F1 - AN002 Programming flash memory manual. И выход из спячки Standby в 59.4 мс для устройств с памятью до 128К, и 118.8 мс для устройств с памятью больше 128 К неспроста.

  2. 7 минут назад, natsu сказал:

    Но структуры встречаются не маленькими. Придется высчитывать сколько интов надо чтоб покрыть размер.

    Выравнивается начало структуры. Для этого достаточно union с одним-единственным uintX_t. Все остальные члены структуры автоматически подразумеваются выровненными. Для неупакованных структур это выполняется автоматически - компилятор сам добавляет в структуру пропуски для выравнивания каждого члена исходя из его размера. Для упакованных структур это надо делать вручную, сортируя члены при объявлении структуры. memcpy никак не сможет сделать это за вас.

  3. 31 минуту назад, natsu сказал:

    Но возникает проблема - я не знаю как объявить область памяти так, чтобы в ней разместить эти же структуры, но выравненными

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

    31 минуту назад, natsu сказал:

    что работа с такими данными медленная, а может и приводить к ошибкам,

    Медленная - да, а все ошибки 99.999% ваши и находятся в вашем исходнике.

  4. 5 часов назад, destroit сказал:

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

    Трудно вспомнить. Скорее всего потому, что просто не обратил на нее внимания на этой картинке.

    1 час назад, mitya1698 сказал:

    как полагаете, выравнивание имеет хоть какой-то смысл в парах?

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

  5. У гипертерминала есть неприятная особенность - он не может открыть железный порт, на входе которого состояние break, т.е. постоянный логический ноль. Может это ваш случай, может нет. И могу ошибаться, но и в случае определенных уровней на DSR, CTS тоже. Если у вас самописная реализация CDC-ACM, которая не поддерживает запрос SET_CONTROL_LINE_STATE - это тоже может быть причиной.

  6. 11 часов назад, _pv сказал:

    причём даже без отдельных чипселектов, в daisy chain

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

  7. 12 часов назад, Spider сказал:

    Была мыcль, что с этим как-то связан Tamper1 AF1, но он выключен, нога проинициализирована в GPIO_Output.

    RTC имеет приоритет над режимом порта.

    12 часов назад, Spider сказал:

    Что ещё можно глянуть?

    Документацию :biggrin:

    image.thumb.png.2d9c16a76bce282820e9ccc40e39f075.png

    image.png

  8. 2 часа назад, adnega сказал:

    Нужно проверить совместимость.

    Таймеров существенно меньше, модуль тактирования отличается. Зато есть недокументированный USB, который китайцы успешно в своих клонах st-link использовали. Вроде как это F103 с сокращенным тестированием.

  9. 11 часов назад, firew0rker сказал:

    По питанию 2 ионистора

    Смею предположить, что там есть еще и импульсные преобразователи входного напряжения питания в напряжение 5, 3.3, 2.5 или сколько там нужно этому процессору. С большой долей вероятности высохли выходные электролиты этих преобразователей и на питании процессора сейчас большие пульсации, которые и сводят его с ума.

  10. 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), но у винды свое представление о прекрасном.

    Вы который раз уже "машете шашкой" в темах, в которых, мягко говоря, плаваете. Постарайтесь сдерживать себя.

  11. 1 час назад, std сказал:

    для того чтобы получать строго определенное колчество импульсов STEP ШД и приводить вывод в известное состояние.

    Ну "приводить вывод в известное состояние" довольно просто - надо использовать режим ШИМ(PWM). В конце периода он в строго определенном состоянии. Строго определенное количество импульсов - подсчетом в прерывании. Я не знаю что у вас за задача, когда я писал контроллер шагового двигателя, у меня в любой момент могла прилететь команда на разгон/торможение и ждать "строго определенного количества импульсов" было просто нельзя. Поэтому я считал импульсы в прерывании сответствующего канала таймера. 

    P.S. для реализации (почти) линейного разгона/торможения шагового двигателя вам может быть полезна эта статья: Generate stepper-motor speed profiles in real time.

  12. 7 минут назад, jcxz сказал:

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

    Я только мысль подал - что есть уже готовые флаги и не нужно ничего мудрить с NOINIT. Там есть и другие флаги. Сам я делаю if(!(RCC->CSR & RCC_CSR_SFTRSTF)) {запускаем приложение;} {иначе запускаем загрузчик;}

    Но изначально речь шла о заглушке вместо загрузчика.

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