Страница 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 файл..