Разгона. во время выполнения ~ 90 МГц

Александрос
Чт 23 ноября 2017 г., 7:12
Привет ,
Есть ли способ разгонять скорость процессора во время выполнения, но не с полным скоростью 128 МГц, но где -то около 90 МГц.

Zoomx
Чт 23 ноября 2017 г. 15:32
Я брожу, если также можно спуститься, другими словами, это возможно изменить тактовую скорость во время выполнения, учитывая, что серийный Baudrate и другие вещи тоже изменится.

Rogerclark
Чт 23 ноября 2017 г. 20:13
Ядро Libmaple не предназначено для того, чтобы позволить изменениям в тактовой частоте во время выполнения

Если вы посмотрите на места, где используется определение F_CPU

https: // github.com/rogerclarkmelbourne/ ... _Процессор&Тип =

Это’S используется в нескольких местах

Все это нужно изменить, чтобы использовать переменную, а не определение, а некоторые макросы изменяются на функции и т. Д

Кроме того, части системы запуска системы E E.глин. Места, которые устанавливают аппаратные часы PLL


Это’S Интересный проект, если вы хотите взять его на себя, так как вы также можете интегрировать остановку и перезагрузку USB, чтобы процессор мог переключиться на перегод на короткий период, чтобы сделать интенсивную обработку, а затем переключиться на 72 МГц, чтобы запустить USB

Или может быть возможно работать на 128 МГц в течение нескольких миллисекунд, не влияя на USB вообще.

Пожалуйста, имейте в виду, что на 96 МГц USB не будет работать. Он работает только на 72 МГц и 48 МГц, так как это ограничение во внутреннем оборудовании MCU

Александрос
Пт 24 ноября 2017 г. 8:20 утра
[Rogerclark - Чт 23 ноября 2017 г., 20:13] -
Или может быть возможно работать на 128 МГц в течение нескольких миллисекунд, не влияя на USB вообще.
Спасибо, Роджер!!

Любой фрагмент кода для этого??

Эдогальдо
Пт 24 ноября 2017 г. 9:03
Глядя на использование F_CPU, похоже, что этого должно быть достаточно, чтобы определить F_CPU как кратный HSE (от 1*HSE до 16*HSE), чтобы получить ожидаемое поступление (хотя статическим образом).
Вместо этого я сомневаюсь с: int led = PC13; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { digitalWrite(led, HIGH); Serial.println("HIGH"); delay(1000); digitalWrite(led, LOW); Serial.println("LOW"); delay(1000); }

Rogerclark
Пт 24 ноября 2017 г. 10:32
[Александрос - Пт 24 ноября 2017 г. 8:20] -
[Rogerclark - Чт 23 ноября 2017 г., 20:13] -
Или может быть возможно работать на 128 МГц в течение нескольких миллисекунд, не влияя на USB вообще.
Спасибо, Роджер!!

Любой фрагмент кода для этого??
Нет. Я не знаю ни одного кода, чтобы изменить частоту тактовой частоты во время выполнения.

Пито
Пт 24 ноября 2017 г. 11:19
Вы можете изменить часы процессора во время выполнения с F103.
Я сделал это на F103 в прошлом (с Mecripp Out), и это работало отлично. Я менял на лету часы в петле в последовательности, такой как 72 МГц/8 МГц/128 МГц/48 МГц без сбоя. Помните, что настройка PLL Clock (фазовый цикл должен заблокировать себя в новой FREQ) занимает некоторое время, поэтому всегда будет небольшой «разрыв времени», в то время как блокировки PLL блокируют.
Вы должны взять рутину настройки часов из сердечника, и вы хотите добавить настройки клещей и настройки Baudrate, так что вы остаетесь в соответствии с MS/Micros и UART Speed. Я не тестировал с USB, так как он поддерживается только несколькими часами. http://stm32flash.googlecode.com/ Using Parser : Raw BINARY Interface serial_w32: 115200 8E1 Version : 0x22 Option 1 : 0x00 Option 2 : 0x00 Device ID : 0x0410 (Medium-density) - RAM : 20KiB (512b reserved by bootloader) - Flash : 128KiB (sector size: 4x1024) - Option RAM : 16b - System RAM : 2KiB Write to memory Erasing memory Wrote address 0x08000100 (3.32%) Wrote address 0x08000200 (6.65%) Wrote address 0x08000300 (9.97%) Wrote address 0x08000400 (13.30%) Wrote address 0x08000500 (16.62%) Wrote address 0x08000600 (19.95%) Wrote address 0x08000700 (23.27%) Wrote address 0x08000800 (26.60%) Wrote address 0x08000900 (29.92%) Wrote address 0x08000a00 (33.25%) Wrote address 0x08000b00 (36.57%) Wrote address 0x08000c00 (39.90%) Wrote address 0x08000d00 (43.22%) Wrote address 0x08000e00 (46.55%) Wrote address 0x08000f00 (49.87%) Wrote address 0x08001000 (53.19%) Wrote address 0x08001100 (56.52%) Wrote address 0x08001200 (59.84%) Wrote address 0x08001300 (63.17%) Wrote address 0x08001400 (66.49%) Wrote address 0x08001500 (69.82%) Wrote address 0x08001600 (73.14%) Wrote address 0x08001700 (76.47%) Wrote address 0x08001800 (79.79%) Wrote address 0x08001900 (83.12%) Wrote address 0x08001a00 (86.44%) Wrote address 0x08001b00 (89.77%) Wrote address 0x08001c00 (93.09%) Wrote address 0x08001d00 (96.42%) Wrote address 0x08001e00 (99.74%) Wrote address 0x08001e14 (100.00%) Done. Starting execution at address 0x08000000... done.

Александрос
Пт 24 ноября 2017 г. 11:51
Вау, пито!! : шок: : o : o

Пито
Пт 24 ноября 2017 г. 11:57 утра
Большой Q-зачем вам такой часовой переключатель на лете.

Энергия?? Вы можете легко запустить BluePill на 96 МГц и заснуть, когда это необходимо.
Общая потраченная энергия может быть намного ниже, чем при переключении между различными формами.. ;)

Или вы хотите, чтобы USB был доступен (т.е. на 48/72 МГц) и переключился только на 96/128 МГц, чтобы ускорить некоторые кальки??

Александрос
Пт 24 ноября 2017 г. 12:08
[Пито - Пт 24 ноября 2017 г. 11:57] - Большой Q-зачем вам такой часовой переключатель на лете.

Энергия?? Вы можете легко запустить BluePill на 96 МГц и заснуть, когда это необходимо.
Общая потраченная энергия может быть намного ниже, чем при переключении между различными формами.. ;)

Или вы хотите иметь доступный USB (т.е. на 48/72 МГц) и переключитесь на 96/128 МГц, чтобы ускорить некоторые кальки??
Я просто хочу проверить, получу ли я хорошие результаты в определенных частях кода с 96 МГц, а остальные с 72
Я замечаю, что думал, что повышение температуры в процессоре при разгрузке ОК, это нормально

Александрос
Пт 24 ноября 2017 г. 12:10
[Пито - Пт 24 ноября 2017 г. 11:19] - Вы можете изменить часы процессора во время выполнения с F103.
Я сделал это на F103 в прошлом (с Mecripp Out), и это работало отлично. Я менял на лету часы в петле в последовательности, такой как 72 МГц/8 МГц/128 МГц/48 МГц без сбоя. Помните, что настройка PLL Clock (фазовый цикл должен заблокировать себя в новой FREQ) занимает некоторое время, поэтому всегда будет небольшой «разрыв времени», в то время как блокировки PLL блокируют.
Вы должны взять рутину настройки часов из сердечника, и вы хотите добавить настройки клещей и настройки Baudrate, так что вы остаетесь в соответствии с MS/Micros и UART Speed. Я не тестировал с USB, так как он поддерживается только несколькими часами. #define BOARD_RCC_PLLMUL RCC_PLLMUL_9

Пито
Пт 24 ноября 2017 г. 12:17
Там нет такой библиотеки.
Вы должны открыть файлы Core Libmaple и найти функции (или связанные части функций, которые обрабатывают настройки). Я думаю, что все, что есть (должно быть, конечно :) ).
Затем поместите материал в функции выше. Легкое упражнение :)

Александрос
Пт 24 ноября 2017 г. 12:19
[Пито - Пт 24 ноября 2017 г. 12:17] - Там нет такой библиотеки.
Вы должны открыть файлы Core Libmaple и найти функции (или связанные части функций, которые обрабатывают настройки). Я думаю, что все есть (должно быть, конечно :) ).
Затем поместите их в функции выше. Легкое упражнение :)
да, я просто понимаю это! :ржу не могу: Спасибо! ;)

Пито
Пт 24 ноября 2017 г. 12:25
Ищите файлы, как #define BOARD_RCC_PLLMUL RCC_PLLMUL_9

victor_pv
Пт 24 ноября 2017 г. 15:27
Я также проверил, изменяя скорость ядра во время выполнения в прошлом, на 48 ADN 96 МГц.
Код может быть в каком -то старом посте. Я помню, что мне пришлось изменить источник часов на HSI, затем изменить настройки PLL и изменить в HSE. Работал нормально для обоих, но USB работал только на 48 МГц, а не 96, как и ожидалось. Я не заботился о Systick или о чем -то еще, но пока вы заботитесь об этих вещах, вы должны быть хорошими.
Я бы подумал, что лучшим подходом будет изменение f_cpu на переменную, а не на макрос, и изменить его соответственно при изменении скорости, и если вы используете какое-либо периферийное устройство с настройками скорости, повторно их инициализируйте их. Может быть немного работы, чтобы изменить все, что нужно, но должно быть вполне возможно.

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

Zoomx
Пт 24 ноября 2017 г. 15:43
[Пито - Пт 24 ноября 2017 г. 11:19] - Вы должны взять рутину настройки часов из сердечника,
Эээ, яер? Arduino_stm32 не имеет set_cpu_clk, set_ticks или set_baudrate. Я использовал поиск в GitHub

RCC.С в
Arduino_stm32/stm32f1/cores/maple/libmaple/rcc_f1.в
И я нашел это
static void setupNVIC() { #ifdef VECT_TAB_ADDR nvic_init(VECT_TAB_ADDR, 0);

Пито
Пт 24 ноября 2017 г., 17:28
Эээ, яер? Arduino_stm32 не имеет set_cpu_clk, set_ticks или set_baudrate. Все ядра, которые мы получили, включают в себя процедуры/функции/методы для настройки часов ЦП, значение перезагрузки Systick и настройки UART Baudrate..

Александрос
Пт 24 ноября 2017 г. 18:47
Я думаю, что это должно быть сделано библиотекой для этого «инструмента», очень интересно

Пито
Пт 24 ноября 2017 г., 19:39
Добавьте настройку часов процессора 38 кГц, и вы можете запустить полный чертеж на 38 кГц, принимая, возможно, 20UA текущего. За исключением USB и UART (или Do 300BAUD?) все будет работать как обычно.
D:\Documents\Arduino\f4_bootloader_test>dfu-util -a 0 -s 0x08004000 -D f4_bootloader_test.ino.generic_f407v.bin dfu-util 0.9 Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/ Invalid DFU suffix signature A valid DFU suffix will be required in a future dfu-util release!!! Opening DFU capable USB device... ID 0483:df11 Run-time device DFU version 011a Claiming USB DFU Interface... Setting Alternate Setting #0 ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing DFU mode device DFU version 011a Device returned transfer size 1024 DfuSe interface name: "Internal Flash " Downloading to address = 0x08004000, size = 21044 Last page at 0x08009233 is not writeable

Rogerclark
Пт 24 ноября 2017 г., 21:18
Пито

Вы заметили, что USB прекратит работать, если вы переключитесь на 96 МГц на короткое время ?

Обычно хост ПК занимает довольно много времени, чтобы заметить, что USB -устройство не работает,

Поэтому мне интересно, будет ли переход на 120 МГц на 100 мс убийства USB?

Ахулл
Сб 25 ноября 2017 г. 1:33
Просто мысль, но это USB Управление прерыванием, если это так, то, возможно, переход на подходящую тактовую скорость процессора может быть обработана обработчиком прерываний, предполагая, что это заняло только несколько циклов ЦП. Я предполагаю, что вещи не так просто, так как где -то на картинке есть периферийные часы USB, и, возможно, встать с этим, вероятно, будет достаточно, чтобы сломать вещи.

Rogerclark
Сб 25 ноября 2017 г. 2:04
Энди

Это интересное предложение. эн.глин. Изменить на 72 Мц в USB ISR

К сожалению, я не знаю достаточно об USB, чтобы знать, когда данные включаются и выходят и т.д

Ахулл
Сб 25 ноября 2017 г. 2:08
Я почти ничего не знаю о USB, однако немного Google Fu выявила это....

https: // www.Compuphase.com/electronics/usb_lowspeed.htm

Ахулл
Сб 25 ноября 2017 г., 2:32
Кажется, что USB поддерживает приостановку.. Таким образом, вы могли бы в теории, загружать, перечислять USB, приостановить, бежать с сумасшедшей скоростью, вернуться к нормальной скорости, не высказывать, сказать что-то взнос на USB, ополаскивать, повторить.

http: // wiki.Осдев.org/Universal_serial_ ... Способность

AG123
Сб 25 ноября 2017 г., 4:01
+1 :ржу не могу:

Rogerclark
Сб 25 ноября 2017 г. 5:05 утра
[Ахулл - Сб 25 ноября 2017 г. 2:32] - Кажется, что USB поддерживает приостановку.. Таким образом, вы могли бы в теории, загружать, перечислять USB, приостановить, бежать с сумасшедшей скоростью, вернуться к нормальной скорости, не высказывать, сказать что-то взнос на USB, ополаскивать, повторить.

http: // wiki.Осдев.org/Universal_serial_ ... Способность
Похоже, что в этом документе максимальное время при приостановке составляет 10 мс, и это просто потому, что хост наблюдает, что клиент не ответил
Приостановлено - Когда на шине не наблюдается трафик в течение 1 миллисекунды, USB -устройство входит в это состояние, характеризующееся его низким энергопотреблением. Настройки адреса и конфигурации устройства поддерживаются при приостановке. Устройство выходит из приостановленного состояния, как только он снова начнет видеть активность автобуса. Ожидается, что хост разрешит 10 миллисекунд, прежде чем ожидать, что устройство ответит на передачу данных после резюме.

ZMEMW16
Сб 25 ноября 2017 г., 17:47
Ожидается, что хост разрешит 10 миллисекунд, прежде чем ожидать, что устройство ответит на передачу данных после резюме. кто инициализирует «резюме» ?
Опрос хозяина каким -то образом опрашивает USB ?
Что делает хост через 10 мс ?
Цель, когда он переключается на «нормальную» скорость, а затем имеет 10 мс, чтобы иметь возможность реагировать на USB разумно ?
SRP

Пито
Сб 25 ноября 2017 г. 18:19
Вы заметили, что USB прекратит работать, если вы переключитесь на 96 МГц на короткое время ? Я не использовал USB, возившись с переключением Cpuclock под..

Mrburnette
Солнце 26 ноября 2017 г. 16:40
Все эти разговоры о «разгоне» в реальном времени - академическая IMO. Это интересная дождливая диверсия, но только потому, что что -то можно сделать нет означает, что это должно быть (сделано.)

Лучшая практика дизайна - установить свои часы, бежать и спать, если требуется... (Сохраните микроволты & Миниватты для лучшего мира)

Производительность (увеличение) часто является причиной, по которой программисты утверждают, что для разгона. В моих предыдущих бизнес -должностях я, как известно, начну за такие заявления программистов (метафорически, поскольку я не продвигаю использование насилия на рабочем месте для повышения производительности сотрудников) ...
Скорее всего, истинная проблема для повышения аппаратного обеспечения - это плохой выбор программирования со стороны программиста. Это представление Microsoft: ... работает медленно, потому что оборудование медленно. Я люблю Microsoft, потому что они заставляют предприятия выбросить миллиарды долларов в совершенно хорошем H/W на рынок перепродажи, чтобы мы, парни Linux, могли дать ему долгую вторую жизнь.

1. Понять намерение программы
2. Профилируйте свои функции и петли (понимайте свой код и где потребляются ресурсы)
3. Развернуть глупые вещи, которые приводят C ++ к Barf (компилятор может не сделать это для вас)
4. Научитесь писать солидный, эффективный код (не будьте глупы нарочно)


Луча

Александрос
Пн 27 ноября 2017 г. 7:15 утра
[Mrburnette - Солнце 26 ноября 2017 г. 16:40] - Все эти разговоры о «разгоне» в реальном времени - академическая IMO. Это интересная дождливая диверсия, но только потому, что что -то можно сделать нет означает, что это должно быть (сделано.)

Лучшая практика дизайна - установить свои часы, бежать и спать, если требуется... (Сохраните микроволты & Миниватты для лучшего мира)

Производительность (увеличение) часто является причиной, по которой программисты утверждают, что для разгона. В моих предыдущих бизнес -должностях я, как известно, начну за такие заявления программистов (метафорически, поскольку я не продвигаю использование насилия на рабочем месте для повышения производительности сотрудников) ...
Скорее всего, истинная проблема для повышения аппаратного обеспечения - это плохой выбор программирования со стороны программиста. Это представление Microsoft: ... работает медленно, потому что оборудование медленно. Я люблю Microsoft, потому что они заставляют предприятия выбросить миллиарды долларов в совершенно хорошем H/W на рынок перепродажи, чтобы мы, парни Linux, могли дать ему долгую вторую жизнь.

1. Понять намерение программы
2. Профилируйте свои функции и петли (понимайте свой код и где потребляются ресурсы)
3. Развернуть глупые вещи, которые приводят C ++ к Barf (компилятор может не сделать это для вас)
4. Научитесь писать солидный, эффективный код (не будьте глупы нарочно)


Луча
Как я могу не согласиться, очень хорошо сказал

Ахулл
Пн 27 ноября 2017 г. 9:01
[Mrburnette - Солнце 26 ноября 2017 г., 16:40] - «Не будь глупым нарочно»
Моя жена говорила мне, что годами, так что это должно быть правдой... :ржу не могу:

Rogerclark
Пн 27 ноября 2017 г. 10:01
Мне очень нравится академическая задача, но в этом случае у меня просто нет времени, чтобы выяснить, возможно ли переключить тактовые частоты в USB ISR.

Возможно, есть способы взломать производительность без изменения тактовой скорости, E.глин. Попробуйте изменить состояния ожидания вспышки (кто -то, возможно, уже попытался сделать это)

Mrburnette
Вт 28 ноября 2017 г. 14:16
[Rogerclark - Пн 27 ноября 2017 г. 10:01] - Мне очень нравится академический вызов, но в этом случае у меня просто нет времени <...>
Время: Это скорее точка, Роджер, не так ли?

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

Некоторые Young_gun тренируются в отрасли с доступом к хорошо оборудованной лаборатории, которые могут разобрать результаты в течение ее обеденного периода. Мне? Ну, я уже час работал над утренним кофе, и сегодня уже выделено лабораторное время (я купил пару точек Amazon в праздник Дня Благодарения), и я хочу немного понюхать сеть.

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


Луча