Human890209
Пт 17 августа 2018 г. 15:22
Привет,
Я сделал тест Freeram с Bluepill и ядро Роджера. Результаты не меняются непрерывно! Почему это произошло?
Результат не меняется примерно в течение сотен случаев, а затем внезапно уменьшится на 4 КБ.
И я попробовал ядро STM322EREN, результат непрерывно уменьшался на увеличение числа экземпляров.
Могу ли я получить постоянный результат от ядра Роджера?
И результат arm's getFreeram не восстановится с помощью delete () или free (). Я помню, как использовал arduino, что это произошло. И STM32Duino кажется таким же.
Есть ли способ сделать результат getFreeram восстановленным с помощью delete () или free ()?
Я сделал тест Freeram с Bluepill и ядро Роджера. Результаты не меняются непрерывно! Почему это произошло?
Результат не меняется примерно в течение сотен случаев, а затем внезапно уменьшится на 4 КБ.
И я попробовал ядро STM322EREN, результат непрерывно уменьшался на увеличение числа экземпляров.
Могу ли я получить постоянный результат от ядра Роджера?
И результат arm's getFreeram не восстановится с помощью delete () или free (). Я помню, как использовал arduino, что это произошло. И STM32Duino кажется таким же.
Есть ли способ сделать результат getFreeram восстановленным с помощью delete () или free ()?
GPIOA->regs->ODR
Хейсан
Пт 17 августа 2018 г. 16:07
Ядро Роджера использует libc malloc/free. free () просто возвращает память в пул распределения LIBC. Он фактически выпущен только в ОС, когда LIBC делает хвост.
Я предполагаю, но похоже, что STM32Generic использует GCC Builtin_malloc (), который должен более агрессивно освободить.
Я предполагаю, но похоже, что STM32Generic использует GCC Builtin_malloc (), который должен более агрессивно освободить.
Хейсан
Пт 17 августа 2018 г., 17:16
Вы можете добавить это, чтобы получить количество бесплатной оперативной памяти, которая удерживается LIBC (сначала из этого пула будет выделена новая память, прежде чем получить больше кучи с Brk ()).
/*
* GPIO devices
*/
gpio_dev gpioa = {
.regs = GPIOA_BASE,
.clk_id = RCC_GPIOA,
.exti_port = AFIO_EXTI_PA,
};
/** GPIO port A device. */
gpio_dev* const GPIOA = &gpioa;
gpio_dev gpiob = {
.regs = GPIOB_BASE,
.clk_id = RCC_GPIOB,
.exti_port = AFIO_EXTI_PB,
};
/** GPIO port B device. */
gpio_dev* const GPIOB = &gpiob;
gpio_dev gpioc = {
.regs = GPIOC_BASE,
.clk_id = RCC_GPIOC,
.exti_port = AFIO_EXTI_PC,
};
fpistm
Пт 17 августа 2018 г., 18:10
К вашему сведению, вы можете использовать этот пример для отображения некоторых Info:
https: // github.com/stm32duino/stm32exam ... Истики.Ино
https: // github.com/stm32duino/stm32exam ... Истики.Ино
Хейсан
Пт 17 августа 2018 г., 18:44
Я царапал в STM32Generic, чтобы попытаться выяснить, как они выключают Libc Malloc, но не могут понять это... Кто -нибудь еще знает?
Рик Кимбалл
Пт 17 августа 2018 г., 20:56
STM32Generic, кажется, использует Nano.Спецификации, которые дадут вам Newlib с оптимизированными размерами функциями.
Хейсан
Пт 17 августа 2018 г., 21:18
[Рик Кимбалл - Пт 17 августа 2018 г. 20:56] - STM32Generic, кажется, использует Nano.Спецификации, которые дадут вам Newlib с оптимизированными размерами функциями.Спасибо - эта маленькая настройка уходит 7 кб от вспышки, и 2.5 КБ от использования барана. Ничего не сломано (пока), и нет очевидной потери производительности.
РЕДАКТИРОВАТЬ: Это также «исправляет» оригинальную проблему RAM Human890209. Весь оперативная память бесплатна () сразу же с этой опцией.
Рик Кимбалл
Пт 17 августа 2018 г., 21:33
[Хейсан - Пт 17 августа 2018 г., 21:18] - Спасибо - эта маленькая настройка уходит 7 кб от вспышки, и 2.5 КБ от использования барана. Ничего не сломано (пока), и нет очевидной потери производительности.Попробуйте напечатать некоторые плавучие материалы (dtoStrf () printf (), sprintf () и т. Д.)
ViewTopic.PHP?t = 1241&начало = 20#p38392
Хейсан
Пт 17 августа 2018 г., 21:43
[Рик Кимбалл - Пт 17 августа 2018 г., 21:33] -Интересно - эта дополнительная опция (-u _printf_float) сделала полученную бинарную двоичную на 2 кб больше, чем стандартные варианты сборки...[Хейсан - Пт 17 августа 2018 г., 21:18] - Спасибо - эта маленькая настройка уходит 7 кб от вспышки, и 2.5 КБ от использования барана. Ничего не сломано (пока), и нет очевидной потери производительности.Попробуйте напечатать некоторые плавучие материалы (dtoStrf () printf (), sprintf () и т. Д.)
ViewTopic.PHP?t = 1241&начало = 20#p38392
Human890209
Сб 18 августа 2018 г., 3:04
Привет,
Спасибо за совет.
Я исправляю только платформу.TXT [## объединить GC-сечения, архивы и объекты].
Я ищу 'spects = nano.Слова спецификаций в пластине STM32GENERIERIERERERENERENERIER.TXT и доски.текст. Это только добавляет это к платформе.текст
Итак, я добавляю '-specs = nosys.спецификации -Specs = nano.Spects -u _printf_float 'там.
Серийный отпечаток эскиза теперь постоянно меняется!
Но Freeram после delete () и free () по -прежнему так же, как и созданный. Переработанная оперативная память помещена в LIBC.
Я этого не понимаю. Весь оперативная память бесплатна () сразу же с этой опцией.
Спасибо за совет.
Я исправляю только платформу.TXT [## объединить GC-сечения, архивы и объекты].
Я ищу 'spects = nano.Слова спецификаций в пластине STM32GENERIERIERERERENERENERIER.TXT и доски.текст. Это только добавляет это к платформе.текст
Итак, я добавляю '-specs = nosys.спецификации -Specs = nano.Spects -u _printf_float 'там.
Серийный отпечаток эскиза теперь постоянно меняется!
Но Freeram после delete () и free () по -прежнему так же, как и созданный. Переработанная оперативная память помещена в LIBC.
Я этого не понимаю. Весь оперативная память бесплатна () сразу же с этой опцией.
void setup() {
// put your setup code here, to run once:
GPIOA->regs->CRL = 0b01000100010001000100010001000011;
}
void loop() {
// put your main code here, to run repeatedly:
GPIOA->regs->ODR = 0b00000000000000000000000000000001;
GPIOA->regs->ODR = 0b00000000000000000000000000000000;
}
Human890209
Сб 18 августа 2018 г., 5:11 утра
Чтобы получить реальную общую сумму бесплатной оперативной памяти
Мне нужно суммировать {(int) (&Верх - Reinterpret_Cast<char*>(sbrk (0)));} и {mi.fordblks}.
Я отменил '-specs = nano.спецификации '
Мне нужно суммировать {(int) (&Верх - Reinterpret_Cast<char*>(sbrk (0)));} и {mi.fordblks}.
Я отменил '-specs = nano.спецификации '
GPIOA_Control_low = (uint32_t *)0x40010800; //assign start address to point to
Хейсан
Сб 18 августа 2018 г. 8:39 утра
1) Вам не нужно использовать '-u _printf_float' ', если вы не используете printf и хотите, чтобы он правильно отображал поплавки.
2) Может быть что -то не так со спецификациями.Нано внедрение Mallinfo (), так как он не должен показывать растущее число блоков, когда бесплатная оперативная память также увеличивается...
2) Может быть что -то не так со спецификациями.Нано внедрение Mallinfo (), так как он не должен показывать растущее число блоков, когда бесплатная оперативная память также увеличивается...