-
Постов
133 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные RusikOk
-
-
20 минут назад, tonyk_av сказал:
Видимо, вы не представляете себе что такое ПЛК
я и правда не представляю как на чтение GPIO можно тратить целый проц
-
4 минуты назад, jcxz сказал:
И не нужно ничего прибивать гвоздями к фиксированным адресам.
1) уже давно стало понятно, что вы не работали с регионами памяти
2) я буду следовать инструкциям от ST потому, что у них как минимум был в руках этот камень
3) вы отвечаете на не заданные вопросы. а на заданные не отвечаете. потому спасибо за ваши ответы. вопрос закрыт. для меня по крайней мере -
6 минут назад, jcxz сказал:
я так и не понял где вы его включаете
начинайте читать с пункта Cortex-M7 configuration
-
4 минуты назад, tonyk_av сказал:
что в нём что-то нельзя было сделать.
расположите переменную по определенному адресу оперативки без танцев с файлом линкера
5 минут назад, tonyk_av сказал:другая голова обслуживает коммуникационные интерфейсы
подрядите на работу с интерфейсами DMA и не понадобится второе ядро
-
использование кэширования актуально для всех М7 ядер. в моем конкретном случае stm32f756 после включения кэша скорость передачи данных по ethernet выросла с 2,5 до 4 МБ/с
зачем нужны 2 ядра я даже не представляю. может в качестве видеоадаптера))) -
7 часов назад, tonyk_av сказал:
По ссылке описывается выделение буферов по нужным адресам, потому что сетевой контроллер работает с ними.
дело не в том, что сетевой контроллер не умеет работать с произвольными адресами а в том, что при включении кэширования памяти контроллер DMA не сможет правильно работать с такой памятью и для этого нужно выделять участок с определенного адреса, чтобы этот же адрес подсунуть MPU через который нужно установить флаги MPU_ACCESS_NOT_BUFFERABLE MPU_ACCESS_NOT_CACHEABLE и главный MPU_ACCESS_SHAREABLE для участка памяти. и все это можно сделать без костылей с файлом линковщика, но только не в кубИДЕ.
и как я понял большинство людей которые хвалят куб сами им не пользуются. или максимум запустили блинк и на этом все
ну и по существу: есть ли возможность определить размер участка памяти определенного в *.ld из сишного кода при чем на этапе компиляции, чтоб я мог создать статический массив?17 часов назад, EdgeAligned сказал:Не сделайте выстрел себе в ногу.
массив в дальнейшем разбивается на меньшие части в зависимости от внешних факторов. но очень желательно, чтобы массив был как можно большим
-
https://community.st.com/t5/stm32-mcus/how-to-create-project-for-stm32h7-with-ethernet-and-lwip-stack/ta-p/49308
вот инструкция от индийских специалистов по костылям. я так и сделал, оно еле завелось. как я еще должен это делать? -
3 минуты назад, jcxz сказал:
У вас же всё сделано через одно небезъизвестное место.
ну так скажите спасибо кубу. я ж не виноват, что у них все через ж.. сделано
-
идея в том, чтобы при изменении размера кучи или стека размер массива тоже уменьшился но в то же время был максимально допустимым для этой секции
-
наверное нада было сразу написать, что я хочу получить.
в общем в *.ld я выделяю участок памяти для массива RAM_SPI_DMA
MEMORY { FLASH(rx) : ORIGIN = 0x08040000, LENGTH = 256K RAM(xrw) : ORIGIN = 0x20000000, LENGTH = 128K /* DTCM (64k) SRAM1 (240k) SRAM2 (16k) */ RAM_ETH_DMA_RX(xrw) : ORIGIN = 0x20018000, LENGTH = 0x100 /* Ethernet Rx DMA Descriptors */ RAM_ETH_DMA_TX(xrw) : ORIGIN = 0x20018100, LENGTH = 0x100 /* Ethernet Tx DMA Descriptors */ RAM_ETH_RX(xrw) : ORIGIN = 0x20018200, LENGTH = 1524 * 8 /* Ethernet Receive Buffers */ RAM_ETH_TX(xrw) : ORIGIN = 0x2001B1A0, LENGTH = 1524 * 8 /* Ethernet Transmit Buffers */ RAM_SPI_DMA(xrw) : ORIGIN = 0x20020000, LENGTH = 192K - _Min_Heap_Size - _Min_Stack_Size /* участок для данных от SPI */ }
в *.с хочу объявлять статический массив не парясь про его размер, хочу чтобы компилятор сам разобрался с размером. но если массив статический то его размер компилятору нада знать до компиляции и потому использование переменных _Min_Heap_Size и _Min_Stack_Size не проконало. следующий код тоже не работает(
trace_t masterBuf[LENGTH(RAM_SPI_DMA) / sizeof(trace_t)] __attribute__((section(".SPIbufSection"))); trace_t masterBuf[LENGTH(SPIbufSection) / sizeof(trace_t)] __attribute__((section(".SPIbufSection")));
-
добрый день! как получить значения этих переменных из *.ld файла но уже в сишном коде? или может есть какие макросы компилятора
_Min_Heap_Size = 0x200; /* required amount of heap */ _Min_Stack_Size = 0x460; /* required amount of stack */
-
верить роботу - себя не уважать!
так все таки что закладывать вместо 800с
-
В 23.11.2023 в 12:22, CADiLO сказал:
Если резко не пропадут чипсеты то пока так
так а все такие какой модуль официально предлагается на замену SIM800C
-
30 минут назад, _3m сказал:
Спасибо за попытку помочь однако *link V7 сделан на AT91SAM7S64.
перепутал с ОБ
-
В 08.04.2024 в 11:42, _3m сказал:
новый софт ругается что это клон.
попробуй по этой инструкции одним файлом. недавно пару китайских клонов прошивал все ок https://github.com/RusikOk/programmer-J-Link-OB-v7.0/tree/main/4_firmware
-
2 часа назад, Михась сказал:
TFTP в базе не умеет удалять файлы
можно перезаписать файл
2 часа назад, Михась сказал:помимо стека TCP/IP
обычно он там и так и так будет. раз решились делать загрузчик по TFTP
2 часа назад, Михась сказал:потянет за собой файловую систему.
не обязательно если нужно перешить только flash контроллера
-
В 01.04.2019 в 14:05, Михась сказал:
А зачем вообще TFTP?
любой самый плохой стандарт лучше его отсутствия
-
у меня кстати тоже проблема с этими вашими хексами((( куб пихает в хекс данные начиная с адреса 0x20020000 хотя это область ОЗУ. как можно это исправить?
MEMORY { FLASH_ISR (rx) : ORIGIN = 0x8000000, LENGTH = 32K FLASH_OPTIONS (rx) : ORIGIN = 0x08008000, LENGTH = 64K FLASH (rx) : ORIGIN = 0x08080000, LENGTH = 256K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K /* основное ОЗУ*/ Memory_B0(xrw) : ORIGIN = 0x20020000, LENGTH = 128K /* участок для данных от SPI */ Memory_B1(xrw) : ORIGIN = 0x20040000, LENGTH = 0x100 Memory_B2(xrw) : ORIGIN = 0x20040100, LENGTH = 0x100 Memory_B3(xrw) : ORIGIN = 0x20040200, LENGTH = 0x2FA0 Memory_B4(xrw) : ORIGIN = 0x200431A0, LENGTH = 0x2FA0 }
-
3 минуты назад, x893 сказал:
На калькуляторе 28 получается
точно. пойду я наверное спать)
-
-
5 минут назад, jcxz сказал:
"Образ от последней удачной компиляции", это не "образ с ошибкой компиляции".
я не знаю что конкретно он заливает. я знаю, что это как минимум не логично и не правильно. делать clean каждый раз не выход это костыль
-
так объясните мне как можно не скомпилированную прошивку загрузить в контроллер? и да оно ничего не спрашивает. я просто вижу в логе кучу красных строк, но прошивка залетает в контроллер. а вот при следующей компиляции уже выскакивает модльное окно которое просит исправить ошибки.
-
13 минут назад, x893 сказал:
Если нужно загрузить - значит нормальное.
1) Вы пытаетесь уйти от ответа (скорее всего сами понимаете, что это не нормальное поведение компилятора)
2) кому нужно? мне такое уж точно не нужно. да и сомневаюсь что кому то нужен мусор во флеше контроллера
-
27 минут назад, x893 сказал:
Скорее всего гуру программирования в своём репертуаре
Вы действительно считаете, что это нормальное поведение? загружать левую прошивку
STM32CubeIDE
в STM
Опубликовано · Пожаловаться
три интерфейса... ну и с какой скоростью идёт обмен?