Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 21.10.2016, 11:05  
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,015
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Хочу пошаговую отладку в ОЗУ

Сообщение от MikhailSh Посмотреть сообщение
Нужна отладка в RAM. Программу нужно загрузить в RAM, посмотреть регистры и результат работы, а затем загрузить во FLASH для дальнейшей проверки и работы.
Жалко FLASH по несколько десятков раз в день перезаливаю прогу - учусь
Чтобы программа загрузилась в РАМ и начала там исполнятся надо несколько вещей
1. она должна быть скомпилирована адресного пространства РАМ
2. она должна быть загружена в РАМ
3. VECT_TAB должен быть настроен на стартовый адрес РАМ (где будут располагаться векторы прерываний)
4. после ресета управление должно быть передано на нулевой вектор, который теперь в РАМ

У вас программа уже неправильно компилируется.
Реклама:
dgrishin вне форума  
Непрочитано 21.10.2016, 12:06  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Хочу пошаговую отладку в ОЗУ

MikhailSh, В менагере проекта создаем профиль для отладки в RAM.
Переключаемся на этот профиль.
Добавляем *.ini как выше писал nml.
Снимаем галки Load Application at Startup на вкладке дебуг и Update target before Debugging на вкладке Utilities

На вкладке Target распределяем RAM , следя чтобы влезло.

Компилим, пользуем





__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
MikhailSh (21.10.2016)
Непрочитано 21.10.2016, 15:55  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Re: Хочу пошаговую отладку в ОЗУ

Всем спасибо!
Заработало после настроек
Миниатюры:
Нажмите на изображение для увеличения
Название: RAM_4.jpg
Просмотров: 0
Размер:	22.1 Кб
ID:	103390  
MikhailSh вне форума  
Непрочитано 25.06.2017, 17:08  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
Восклицание Re: Хочу пошаговую отладку в ОЗУ

Уже пару дней пытаюсь повторить опыт на 5 м кейле, и как то (( Никак
В чем секрет?
Кейловский программатор не может залить по адресам оперативы(
Использую ST-Link, пишет... но даже диодом не могу моргнуть(
Вроди бы все по инструкции
Подскажите!
Спасибо
papa_n вне форума  
Непрочитано 25.06.2017, 18:35  
-Alan-
Прописка
 
Аватар для -Alan-
 
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
-Alan- на пути к лучшему
По умолчанию Re: Хочу пошаговую отладку в ОЗУ

Лично у меня получилось, но собирается это мягко говоря, руками (точнее, Makefile'ом) в среде Linux (Eclipse как-то не удалось нормально собрать вместе - ему то одно не нравится, то компилятор не видит, то файлы теряет, то проект собирает куда попало).
Собирается arm-none-eabi-gcc, линкуется почти родным скриптом с минимальными модификациями (в качестве целей секций устанавливаю RAM), отлаживается через st-util в среде arm-none-eabi-gdb.
Пошагово работает и брейк-поинты в норме.
При сборке добавляю флаг VECT_TAB_SRAM - так проект собирается с перемещением таблицы прерываний в область RAM. Иначе - первое же прерывание выносит выполнение в HardFault.
-Alan- вне форума  
Сказали "Спасибо" -Alan-
papa_n (25.06.2017)
Непрочитано 25.06.2017, 22:15  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: Хочу пошаговую отладку в ОЗУ

Сообщение от -Alan- Посмотреть сообщение
Лично у меня получилось
а можно настроечные файлы под ГЦЦ?
Буду признателен
Вообще пишу в Qt, с gcc. Просто надо куски проверять.. только ради этого поставил кейл попробовать, будет ли что с этого
papa_n вне форума  
Непрочитано 30.06.2017, 19:45  
-Alan-
Прописка
 
Аватар для -Alan-
 
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
-Alan- на пути к лучшему
По умолчанию Re: Хочу пошаговую отладку в ОЗУ

Выхватил наиболее существенные части MakeFile'а.
MakeFile:
Нажмите, чтобы открыть спойлер

Код:
BUILDDIR = ./debug
PROJECT=Tester
TARGET=$(BUILDDIR)/$(PROJECT).bin
EXECUTABLE=$(BUILDDIR)/$(PROJECT).elf 

DEVICE = ./

INCLUDES = -I$(DEVICE)

DEFS = -DUSE_STDPERIPH_DRIVER -DSTM32F745xx -DHSE_VALUE=25000000 
MCU = cortex-m7 
MCFLAGS = -mcpu=$(MCU) -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16 --specs=nosys.specs 
OPTIMIZE = -Os
SRC = main.c microrl.c lcd.c system_stm32f7xx.c lan.c 

RAMFLAGS = $(MCFLAGS) $(OPTIMIZE) $(DEFS) -DVECT_TAB_SRAM $(INCLUDES) -g -gdwarf-2 -Wall -Wl,-T,STM32F745VET6_RAM.ld 

$(TARGET): $(EXECUTABLE)
	@$(SIZE) $(EXECUTABLE)
	@$(CP) -O binary $‹ $@

$(EXECUTABLE): $(SRC) $(STARTUP)
	@echo "Compiling: $(EXECUTABLE)"
	@$(CC) $(CFLAGS) $^ -o $@
	@echo "[DONE]"


STM32F745VET6_RAM.ld:
Нажмите, чтобы открыть спойлер

Код:
/*
**************************************************  ***************************
**

**  File        : LinkerScript.ld
**
**  Abstract    : Linker script for STM32F746ZGTx Device with
**                1024KByte FLASH, 320KByte RAM
**
**                Set heap size, stack size and stack location according
**                to application requirements.
**
**                Set memory bank area and size if external memory is used.
**
**  Target      : STMicroelectronics STM32
**
**
**  Distribution: The file is distributed as is, without any warranty
**                of any kind.
**
**  (c)Copyright Ac6.
**  You may use this file as-is or modify it according to the needs of your
**  project. Distribution of this file (unmodified or modified) is not
**  permitted. Ac6 permit registered System Workbench for MCU users the
**  rights to distribute the assembled, compiled & linked contents of this
**  file as part of an application binary file, provided that it is built
**  using the System Workbench for MCU toolchain.
**
**************************************************  ***************************
*/

/* Entry Point */
ENTRY(Reset_Handler)

/* Highest address of the user mode stack */
_estack = 0x20050000;    /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0x000;      /* required amount of heap  */
_Min_Stack_Size = 0x400; /* required amount of stack */

/* Specify the memory areas */
MEMORY
{
	FLASH (rx)      : ORIGIN = 0x08000000, LENGTH = 512K
	RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 320K
}

/* Define output sections */
SECTIONS
{
  /* The startup code goes first into FLASH */
  .isr_vector :
  {
    . = ALIGN(4);
    KEEP(*(.isr_vector)) /* Startup code */
    . = ALIGN(4);
  } ›RAM

  /* The program code and other data goes into FLASH */
  .text :
  {
    . = ALIGN(4);
    *(.text)           /* .text sections (code) */
    *(.text*)          /* .text* sections (code) */
    *(.glue_7)         /* glue arm to thumb code */
    *(.glue_7t)        /* glue thumb to arm code */
    *(.eh_frame)

    KEEP (*(.init))
    KEEP (*(.fini))

    . = ALIGN(4);
    _etext = .;        /* define a global symbols at end of code */
  } ›RAM

  /* Constant data goes into FLASH */
  .rodata :
  {
    . = ALIGN(4);
    *(.rodata)         /* .rodata sections (constants, strings, etc.) */
    *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */
    . = ALIGN(4);
  } ›RAM

  .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) } ›FLASH
  .ARM : {
    __exidx_start = .;
    *(.ARM.exidx*)
    __exidx_end = .;
  } ›RAM

  .preinit_array     :
  {
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array*))
    PROVIDE_HIDDEN (__preinit_array_end = .);
  } ›RAM
  .init_array :
  {
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(SORT(.init_array.*)))
    KEEP (*(.init_array*))
    PROVIDE_HIDDEN (__init_array_end = .);
  } ›RAM
  .fini_array :
  {
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(SORT(.fini_array.*)))
    KEEP (*(.fini_array*))
    PROVIDE_HIDDEN (__fini_array_end = .);
  } ›RAM

  /* used by the startup to initialize data */
  _sidata = LOADADDR(.data);

  /* Initialized data sections goes into RAM, load LMA copy after code */
  .data : 
  {
    . = ALIGN(4);
    _sdata = .;        /* create a global symbol at data start */
    *(.data)           /* .data sections */
    *(.data*)          /* .data* sections */

    . = ALIGN(4);
    _edata = .;        /* define a global symbol at data end */
  } ›RAM

  
  /* Uninitialized data section */
  . = ALIGN(4);
  .bss :
  {
    /* This is used by the startup in order to initialize the .bss secion */
    _sbss = .;         /* define a global symbol at bss start */
    __bss_start__ = _sbss;
    *(.bss)
    *(.bss*)
    *(COMMON)

    . = ALIGN(4);
    _ebss = .;         /* define a global symbol at bss end */
    __bss_end__ = _ebss;
  } ›RAM

  /* User_heap_stack section, used to check that there is enough RAM left */
  ._user_heap_stack :
  {
    . = ALIGN(8);
    PROVIDE ( end = . );
    PROVIDE ( _end = . );
    . = . + _Min_Heap_Size;
    . = . + _Min_Stack_Size;
    . = ALIGN(8);
  } ›RAM

  

  /* Remove information from the standard libraries */
  /DISCARD/ :
  {
    libc.a ( * )
    libm.a ( * )
    libgcc.a ( * )
  }

  .ARM.attributes 0 : { *(.ARM.attributes) }
}


Загрузка:
st-flash write $(TARGET) 0x20000000
Отладка:
st-util -p 4242
arm-none-eabi-gdb /path/to/file.elf
В консоли gdb:
tar ext :4242 ‹-- Подключение к отладке
load ‹-- Загрузка файла в RAM
continue ‹-- Запуск программы
-Alan- вне форума  
Непрочитано 01.04.2019, 04:43  
science
Прохожий
 
Регистрация: 01.04.2019
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
science на пути к лучшему
По умолчанию Re: Хочу пошаговую отладку в ОЗУ

Добрый день. Сделал все как описано. Декомпилил: все ок вектора с 0x20000000 потом код. VECT_TAB_SRAM define прописал.

А вот Download(F в память не хочет.
"No algorithm found for 0x20000000-....."
Те не знает он как грузить прогу по этим адресам.
Keil 5.27.
Подскажите что там еще

Последний раз редактировалось science; 01.04.2019 в 04:48.
science вне форума  
Непрочитано 02.04.2019, 12:01  
-Alan-
Прописка
 
Аватар для -Alan-
 
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
-Alan- на пути к лучшему
По умолчанию Re: Хочу пошаговую отладку в ОЗУ

https://kazus.ru/forums/showpost.php...3&postcount=32
Ещё раз внимательно посмотрите настройки проекта. dosikus показал правильный вариант загрузки.
Алгоритм не находит в проекте секции, куда мог бы загрузить данные, согласно тому, что собрал линкер. Хотя да, сообщение выглядит несколько коряво.

Дома посмотрю, что у меня было настроено в проекте.
Можете дополнительно заглянуть под кнопку отдалки (настройки отладки и подключения к целевому контроллеру). Хотя там в основном физическое подключение.
-Alan- вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой Микроконтроллёр имеет память программ в виде ОЗУ? trampampusha Микроконтроллеры, АЦП, память и т.д 7 14.05.2016 17:06
Объясните как работает область памяти ОЗУ 8051 Fraktal Песочница (вопросы новичков) 2 14.07.2013 00:18
[Решено] Как раскачать мост из IRF840? Синусоиду хочу... 220в ;) vadd Источники питания и свет 236 01.03.2011 18:10
использование FSR для обмена в ОЗУ и запись в EEPROM ESWANT Микроконтроллеры, АЦП, память и т.д 0 22.11.2010 09:59
PIC16F877A pawelk Микроконтроллеры, АЦП, память и т.д 17 28.05.2005 23:54


Часовой пояс GMT +4, время: 06:32.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot