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

RusikOk

Свой
  • Постов

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

  • Посещение

Сообщения, опубликованные RusikOk


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

    И не нужно ничего прибивать гвоздями к фиксированным адресам.

    1) уже давно стало понятно, что вы не работали с регионами памяти
    2) я буду следовать инструкциям от ST потому, что у них как минимум был в руках этот камень
    3) вы отвечаете на не заданные вопросы. а на заданные не отвечаете. потому спасибо за ваши ответы. вопрос закрыт. для меня по крайней мере

  2. 4 минуты назад, tonyk_av сказал:

    что в нём что-то нельзя было сделать.

    расположите переменную по определенному адресу оперативки без танцев с файлом линкера

    5 минут назад, tonyk_av сказал:

    другая голова обслуживает коммуникационные интерфейсы

    подрядите на работу с интерфейсами DMA и не понадобится второе ядро

  3. использование кэширования актуально для всех М7 ядер. в моем конкретном случае stm32f756 после включения кэша скорость передачи данных по ethernet выросла с 2,5 до 4 МБ/с
    зачем нужны 2 ядра я даже не представляю. может в качестве видеоадаптера)))

  4. 7 часов назад, tonyk_av сказал:

    По ссылке описывается выделение буферов по нужным адресам, потому что сетевой контроллер работает с ними.

    дело не в том, что сетевой контроллер не умеет работать с произвольными адресами а в том, что при включении кэширования памяти контроллер DMA не сможет правильно работать с такой памятью и для этого нужно выделять участок с определенного адреса, чтобы этот же адрес подсунуть MPU через который нужно установить флаги MPU_ACCESS_NOT_BUFFERABLE MPU_ACCESS_NOT_CACHEABLE и главный MPU_ACCESS_SHAREABLE для участка памяти. и все это можно сделать без костылей с файлом линковщика, но только не в кубИДЕ.

    и как я понял большинство людей которые хвалят куб сами им не пользуются. или максимум запустили блинк и на этом все

    ну и по существу: есть ли возможность определить размер участка памяти определенного в *.ld из сишного кода при чем на этапе компиляции, чтоб я мог создать статический массив?

    17 часов назад, EdgeAligned сказал:

    Не сделайте выстрел себе в ногу.

    массив в дальнейшем разбивается на меньшие части в зависимости от внешних факторов. но очень желательно, чтобы массив был как можно большим

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

    У вас же всё сделано через одно небезъизвестное место.

    ну так скажите спасибо кубу. я ж не виноват, что у них все через ж.. сделано

  6. наверное нада было сразу написать, что я хочу получить.

    в общем в *.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")));

     

  7. добрый день! как получить значения этих переменных из *.ld файла но уже в сишном коде? или может есть какие макросы компилятора

    _Min_Heap_Size = 0x200;  /* required amount of heap  */
    _Min_Stack_Size = 0x460; /* required amount of stack */

     

  8. В 08.04.2024 в 11:42, _3m сказал:

    новый софт ругается что это клон.

    попробуй по этой инструкции одним файлом. недавно пару китайских клонов прошивал все ок https://github.com/RusikOk/programmer-J-Link-OB-v7.0/tree/main/4_firmware

  9. 2 часа назад, Михась сказал:

    TFTP в базе не умеет удалять файлы

    можно перезаписать файл

     

    2 часа назад, Михась сказал:

    помимо стека TCP/IP

    обычно он там и так и так будет. раз решились делать загрузчик по TFTP

     

    2 часа назад, Михась сказал:

    потянет за собой файловую систему.

    не обязательно если нужно перешить только flash контроллера

  10. у меня кстати тоже проблема с этими вашими хексами((( куб пихает в хекс данные начиная с адреса 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
    }

     

    STM32F746NGHx_FLASH.ld

  11. 5 минут назад, jcxz сказал:

    "Образ от последней удачной компиляции", это не "образ с ошибкой компиляции".

    я не знаю что конкретно он заливает. я знаю, что это как минимум не логично и не правильно. делать clean каждый раз не выход это костыль

  12. так объясните мне как можно не скомпилированную прошивку загрузить в контроллер? и да оно ничего не спрашивает. я просто вижу в логе кучу красных строк, но прошивка залетает в контроллер. а вот при следующей компиляции уже выскакивает модльное окно которое просит исправить ошибки.

  13. 13 минут назад, x893 сказал:

    Если нужно загрузить - значит нормальное.

    1) Вы пытаетесь уйти от ответа (скорее всего сами понимаете, что это не нормальное поведение компилятора)

    2) кому нужно? мне такое уж точно не нужно. да и сомневаюсь что кому то нужен мусор во флеше контроллера

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