Здравствуйте всем, У меня вопрос такой имеется плата stm32f407zgt6 и дисплей ili9488 без тача. Не могу подружить. Использую софт 1. Стм32кубеМХ 2. Touchgfx 3. Stm32cubeIDE
Никто не подскажет попроще путь? Я только начинаю разбираться с этим со всем)
Помогите люди добрые Работают в Keil, отладка/прошивка через ST-LINK V2. В какой-то момент, прошивать стало всю флешь, от начала и до конца, а не только то, что использовано в программе. После чего так стало не помню, точно менял .sct чтобы распихать стек и мелкие переменные в CCRAM, а большой массив в остальную RAM. Каждый раз при прошивке перетирать всю память тоскливо, сама программа пока чуть больше 4кБ из 500. Не пойму куда копать, то ли в sct, то ли в настройках самого ST-LINK, то ли в компилятор (чтобы он в конце HEX-файла нули не писал)...
_________________ Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Массив 120к, я заметил что вроде после его добавления такое стало, сейчас попробовал убрать +ZI из scatter файла, но это не повлияло, да и пишет во флешку явно больше 120к, там прямо до конца идет. И в Target поставил галки Noinit, не влияет.
_________________ Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Легло вроде все верно, но смущает что регионы RW_IRAM в скаттере как бы включены в LR_IROM1 судя по скобкам, и в map файле такая строчка получилась: " Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0001f05c, Max: 0x00080000, ABSOLUTE)", т.е. там и код и все переменные и массив 120к. И в конце в итоге: Total RO Size (Code + RO Data) 4720 ( 4.61kB) Total RW Size (RW Data + ZI Data) 122348 ( 119.48kB) Total ROM Size (Code + RO Data + RW Data) 127068 ( 124.09kB) т.е. получается весь образ 127к, углядел адрес в момент конца загрузки, похоже на правду +-
_________________ Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
... Каждый раз при прошивке перетирать всю память тосклив ...
Keil, STM32G. Tо же самое произошло, когда ввел одну константу в эмулированной флэш как EEPROM (в данном случае: double).
Код:
#define EEPROM_BASE_ADDR 0x0801F800 // start address of the last FLASH page (page 63) #define EEPROM_FREQ_CALIB_COEFF_ADDR 0x00 const double EEPROM_FREQ_CALIBR_COEFF_DOUBLE __attribute__((section(".ARM.__at_0x0801F800"))) = 0.0;
и
Код:
Program Size: Code=6090 RO-data=522 RW-data=416 ZI-data=1648
Из-за медленной записи МК по всей памяти (и невозможности найти быстрого решения) зaменил метод: (проверка пуста ли ячейка, если да, то запись по умолчанию, если нет: прочитать содержимое). Но сама причина интересная.
Последний раз редактировалось veso74 Ср дек 03, 2025 15:28:05, всего редактировалось 1 раз.
#define EEPROM_BASE_ADDR 0x0801F800 // start address of the last FLASH page (page 63)
Тут я бы понял, даже если программа мелкая и кончается адресом 0x08000100, то программатор наверно прошьет все от 0х80000000 до 0x0801F800, хоть там и нули с 100го адреса, но в 0x0801F800 - ячейка EEPROM, т.е. та же флешь. Но у меня-то кода 4к а дальше только чистый RAM, я даже в скаттере его вынул из LR_IROM1, теперь в map файле строчка поменялась на: Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001270, Max: 0x00080000, ABSOLUTE), но все равно есть вторая: Load Region ER_IRAM (Base: 0x20000000, Size: 0x0001ddec, Max: 0x00020000, ABSOLUTE) и в итоге весь образ опять 127к, надо как-то указать что этот кусок в образ ROM не входит, но я никак не могу найти где и как это делается.
Пока ехал домой, подумал, может косяк в том что я память под переменные резервирую через space?
_________________ Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Что может быть не так? АЦП-ДМА после завершения передачи зависает в прерывании, это я так понял. По переводу-"получено неожиданное прерывание", но так и не понял что это значит. В описаниях режимов у F407 и F103 для моего случая не нашел. Но 407-й работает, а 103-й виснет.
надо как-то указать что этот кусок в образ ROM не входит, но я никак не могу найти где и как это делается.
Блин, нашел, просто в директиву AREA надо было NOINIT вписать Вопросов не возникало пока я большой массив не задействовал, раньше переменные не сильно объема добавляли и я не замечал что прошивка долго идет...
_________________ Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения