Страница 2 из 2

Re: Добавление нового MCU

Добавлено: Чт апр 23, 2026 8:15 pm
VitGo
сейчас размещу рабочую версию редактора, конфу которой будем править... чтобы итерационно идти и не делать дважды одну и ту же работу

https://aae21.ru/wp-content/uploads/202 ... Edit-1.zip

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

Re: Добавление нового MCU

Добавлено: Чт апр 23, 2026 8:52 pm
Релейщик
;*******************************************************************
;*** BEGIN STM32H723 ***
;*******************************************************************
[STM32H7]
STM32H723x

[STM32H723x]
STM32H723VETx
STM32H723VEHx
STM32H723VGTx
STM32H723VGHx
STM32H723ZETx
STM32H723ZGTx
STM32H723ZGIx

[STM32H723VETx]
type=config
file=inf\stm32\mcu\stm32h7\stm32h723\stm32h723VETx.ini
openocd=openocd\scripts\target\stm32h7x.cfg
deviceinfo=inf\STM32\MCU\STM32H7\STM32H723\stm32h723.xml
docs=inf\STM32\MCU\STM32H7\STM32H723\doc_stm32h723.ini
targetadr=0x08000000
syntax=unified
cpu=cortex-m7
thumb=.thumb
fpu=fpv5-d16

[STM32H723VEHx]
type=config
file=inf\stm32\mcu\stm32h7\stm32h723\stm32h723VEHx.ini
openocd=openocd\scripts\target\stm32h7x.cfg
deviceinfo=inf\STM32\MCU\STM32H7\STM32H723\stm32h723.xml
docs=inf\STM32\MCU\STM32H7\STM32H723\doc_stm32h723.ini
targetadr=0x08000000
syntax=unified
cpu=cortex-m7
thumb=.thumb
fpu=fpv5-d16

[STM32H723VGTx]
type=config
file=inf\stm32\mcu\stm32h7\stm32h723\stm32h723VGTx.ini
openocd=openocd\scripts\target\stm32h7x.cfg
deviceinfo=inf\STM32\MCU\STM32H7\STM32H723\stm32h723.xml
docs=inf\STM32\MCU\STM32H7\STM32H723\doc_stm32h723.ini
targetadr=0x08000000
syntax=unified
cpu=cortex-m7
thumb=.thumb
fpu=fpv5-d16

[STM32H723VGHx]
type=config
file=inf\stm32\mcu\stm32h7\stm32h723\stm32h723VGHx.ini
openocd=openocd\scripts\target\stm32h7x.cfg
deviceinfo=inf\STM32\MCU\STM32H7\STM32H723\stm32h723.xml
docs=inf\STM32\MCU\STM32H7\STM32H723\doc_stm32h723.ini
targetadr=0x08000000
syntax=unified
cpu=cortex-m7
thumb=.thumb
fpu=fpv5-d16

[STM32H723ZETx]
type=config
file=inf\stm32\mcu\stm32h7\stm32h723\stm32h723ZETx.ini
openocd=openocd\scripts\target\stm32h7x.cfg
deviceinfo=inf\STM32\MCU\STM32H7\STM32H723\stm32h723.xml
docs=inf\STM32\MCU\STM32H7\STM32H723\doc_stm32h723.ini
targetadr=0x08000000
syntax=unified
cpu=cortex-m7
thumb=.thumb
fpu=fpv5-d16

[STM32H723ZGTx]
type=config
file=inf\stm32\mcu\stm32h7\stm32h723\stm32h723ZGTx.ini
openocd=openocd\scripts\target\stm32h7x.cfg
deviceinfo=inf\STM32\MCU\STM32H7\STM32H723\stm32h723.xml
docs=inf\STM32\MCU\STM32H7\STM32H723\doc_stm32h723.ini
targetadr=0x08000000
syntax=unified
cpu=cortex-m7
thumb=.thumb
fpu=fpv5-d16

[STM32H723ZGIx]
type=config
file=inf\stm32\mcu\stm32h7\stm32h723\stm32h723ZGIx.ini
openocd=openocd\scripts\target\stm32h7x.cfg
deviceinfo=inf\STM32\MCU\STM32H7\STM32H723\stm32h723.xml
docs=inf\STM32\MCU\STM32H7\STM32H723\doc_stm32h723.ini
targetadr=0x08000000
syntax=unified
cpu=cortex-m7
thumb=.thumb
fpu=fpv5-d16

;*******************************************************************
;*** V: 100 пинов, Z: 144 пина ***
;*** E: 512 КБ Flash, G: 1 МБ Flash ***
;*** T: LQFP, H: TFBGA, I: UFBGA (для Z) ***
;*** x=6: Temperature range / Industrial (-40 to 85°C) ***
;*** x=7: Temperature range / Industrial (-40 to 105°C) ***
;*** x=3: Temperature range / Industrial (-40 to 125°C) ***
;*******************************************************************

;*******************************************************************
;*** END STM32H723 ***
;*******************************************************************
Все модификации и указаны в mculist.

Re: Добавление нового MCU

Добавлено: Чт апр 23, 2026 9:31 pm
VitGo
Релейщик писал(а): Чт апр 23, 2026 8:52 pm ;*******************************************************************
;*** BEGIN STM32H723 ***
;*******************************************************************
Все модификации и указаны в mculist.
Это я понял, а теперь бы вот с куба или еще откуда - их конфигурации - сколько у кого памяти и какой (чтобы на этой основе создавать ld файлы с корректными значениями памяти)

а потом и какая у кого есть периферия..
там получается что описываешь самый жирный мку, а для остальных просто выкидываешь лишние... так что не сильно количество работы увеличивается (потому что вся периферия внутри одной серии - стандартна... даже между сериями зачастую не сильно отличается... но для H7 думаю это не сработает - и придется описывать все заново...)

Re: Добавление нового MCU

Добавлено: Чт апр 23, 2026 9:38 pm
VitGo
ваш ld файл глянул...
к сожалению у меня нет H7 для опытов, но имхо структура памяти как для СИ вам будет только мешать...
как показывает практика для программ на ассемблере важно размещение таблицы векторов (ist_vectors) в нужном месте, все остальное по типу размера стека, размера кучи - без программ-операторов - смысла не имеет... если вы не контролируете эти области - то и нет смысла в этих параметрах... если только после компиляции логический контроль некий проводить.. и то надо подумать как (и может быть это автоматизировать тогда)
дальше идут области исполнения (кода) и области констант во флеше...
озу это озу - разные только области которые размещены в разных адресах (как например SRAM (0х20000000) и CCM (0х10000000) - они в разных адресах, первая не идет подряд за первой.. поэтому и сегменты разные)

всякие KEEP нафиг не нужны -у нас не си... (по крайней мере не понимаю как это применять, и даже не описывал в разборе ld файлы этот оператор) как и многие другие

Re: Добавление нового MCU

Добавлено: Пт апр 24, 2026 1:45 am
Релейщик
Такой пойдет?

Код: Выделить всё

ENTRY(Reset_Handler)

_estack = ORIGIN(DTCMRAM) + LENGTH(DTCMRAM);

MEMORY
{
  FLASH       (rx)  : ORIGIN = 0x08000000, LENGTH = 1024K
  ITCMRAM     (xrw) : ORIGIN = 0x00000000, LENGTH = 64K
  DTCMRAM     (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
  AXI_SRAM    (xrw) : ORIGIN = 0x24000000, LENGTH = 320K
  SRAM1       (xrw) : ORIGIN = 0x30000000, LENGTH = 16K
  SRAM2       (xrw) : ORIGIN = 0x30004000, LENGTH = 16K
  SRAM4       (xrw) : ORIGIN = 0x38000000, LENGTH = 16K
  BKPSRAM     (xrw) : ORIGIN = 0x38800000, LENGTH = 4K
}

SECTIONS
{
  .isr_vector :
  {
    . = ALIGN(4);
    *(.isr_vector)
    . = ALIGN(4);
  } >FLASH

  .text :
  {
    . = ALIGN(4);
    *(.text*)
    *(.rodata*)
    . = ALIGN(4);
  } >FLASH

  .data :
  {
    . = ALIGN(4);
    *(.data*)
    . = ALIGN(4);
  } >DTCMRAM AT> FLASH

  .bss :
  {
    . = ALIGN(4);
    *(.bss*)
    *(COMMON)
    . = ALIGN(4);
  } >DTCMRAM
}
Объем ОЗУ у всех одинаковый 564кБ, отличается размер FLASH для STM32H723VETx, STM32H723VEHx, STM32H723ZETx 512кБ, а для STM32H723VGTx, STM32H723VGHx, STM32H723ZGTx, STM32H723ZGIx 1МБ

Re: Добавление нового MCU

Добавлено: Пт апр 24, 2026 2:02 am
Релейщик
А еще можно добавить такое по необходимости:

Код: Выделить всё

/*
   * .itcm_text — критический код для ITCM.
   * VMA (исполняемый адрес): ITCMRAM (0x00000000).
   * LMA (адрес загрузки): FLASH (хвост бинарника).
   */
  .itcm_text :
  {
    . = ALIGN(4);
    __itcm_start = .;           /* Начало в ITCM */
    *(.itcm_text*)              /* Все секции с кодом для ITCM */
    . = ALIGN(4);
    __itcm_end = .;             /* Конец в ITCM */
  } >ITCMRAM AT> FLASH
  __itcm_load_start = LOADADDR(.itcm_text);  /* Начало копии во Flash */
Секция:

Код: Выделить всё

.section .itcm_text, "ax"  @ a = allocatable, x = executable
.thumb_func
.globl critical_function
critical_function:
    @ Ваш быстрый код здесь
    BX LR
Копирование исполняемого кода в ITCM

Код: Выделить всё

/*
     * Копирование .itcm_text из Flash в ITCM.
     * идём от __itcm_start до __itcm_end,
     * читаем из __itcm_load_start, наращивая оба указателя.
     */
    LDR R0, =__itcm_start     @ Куда: начало ITCM
    LDR R1, =__itcm_end       @ Куда: конец ITCM
    LDR R2, =__itcm_load_start @ Откуда: копия во Flash
1:  CMP R0, R1
    BEQ 2f
    LDR R3, [R2], #4          @ Загрузить слово из Flash, сдвинуть указатель
    STR R3, [R0], #4          @ Сохранить в ITCM, сдвинуть указатель
    B 1b
2:

Re: Добавление нового MCU

Добавлено: Пт апр 24, 2026 2:05 am
VitGo
Релейщик писал(а): Пт апр 24, 2026 1:45 am ENTRY(Reset_Handler)
А что вы от этой директивы ждете ? вы Reset_Handler потом как определять будете ?
в редакторе адрес прошивки задается извне...
или у H7 другие адреса ?

Re: Добавление нового MCU

Добавлено: Пт апр 24, 2026 2:13 am
Релейщик
VitGo писал(а): Пт апр 24, 2026 2:05 am
Релейщик писал(а): Пт апр 24, 2026 1:45 am ENTRY(Reset_Handler)
А что вы от этой директивы ждете ? вы Reset_Handler потом как определять будете ?
в редакторе адрес прошивки задается извне...
или у H7 другие адреса ?
Я понимаю работу директивы так, что линкер положит адрес Reset_Handler в таблицу во второе слово. Reset_Handler же по сути метка начала исполнения программы.

Re: Добавление нового MCU

Добавлено: Пт апр 24, 2026 6:36 am
VitGo
Нет, это ENTRY это начало, старт...
и началом будет считаться Reset_Handler

ну для программ загружаемых в ОЗУ это еще нужно..
но у нас первой идет таблица прерываний, и первый там не reset_handler, а указатель вершины стека...

ладно, проверите потом что компилировать и собирать будет ваш ld файл..