STM32 Atollic TrueSTUDIO - Графическое представление памяти - PullRequest
0 голосов
/ 15 декабря 2018

Я использую Atollic TrueSTUDIO для STM32 в качестве интегрированной среды разработки на базе Eclipse для выполнения цифровой обработки сигналов аудиосигнала.Я ищу способ построения массива (16-битных аудиосэмплов) из оперативной памяти.На данный момент я использую:

  • Просмотр памяти
  • Временная шкала данных в реальном времени SWV

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

Есть ли Eclipse Plugin или какие-то другие способы сделать это?Я собираюсь экспортировать оперативную память и файл и выложить ее в Matlab, но она кажется неподходящей для такой простой вещи.

Спасибо за любые советы

Ответы [ 4 ]

0 голосов
/ 08 мая 2019

В Atollic вы можете легко прикрепить команды GDB к точкам останова.Это позволяет автоматически выгружать любые переменные.Кроме того, вы можете выполнить внешнюю программу один раз после этого, чтобы отобразить содержимое выгружаемой переменной.

Для этого перейдите в свойства точки останова и создайте новое действие.Выберите «Действие команды отладчика» и используйте dump binary value x.bin x для выгрузки переменной x в файл x.bin

. Вы также можете запустить скрипт python с точки останова для построения графика данных.Используйте дополнительное «External Tool Action» и выберите местоположение вашего питона.Убедитесь, что вы выбрали свой текущий рабочий Dictonary.Используйте аргументы, чтобы передать полный путь к файлу Python.Следующий файл импортирует массив с плавающей точкой и построит его.

import struct
import numpy as np
import matplotlib.pyplot as plt
import os

def readBinaryDump(filename):
    result = []
    N=8
    with open(filename,'rb') as f:
        while(True):
            b = f.read(4*N);
            if len(b) ==0:
                break
            fn = "f"*N
            result.append(struct.unpack(fn,b))

    result = np.array(result)  
    return result.ravel()  

plt.plot(readBinaryDump("x.bin"))

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

0 голосов
/ 16 декабря 2018

Напишите простое приложение на C #.Используйте полу хостинг для сброса памяти в текстовый файл.Откройте его и отобразите.

Недавно у меня были проблемы с MEMS, и это было написано менее чем за час.ИМО (по моему мнению) проще написать программу, которая будет визуализировать данные вместо того, чтобы тратить часы или дни на поиск готового:

enter image description here

0 голосов
/ 16 декабря 2018

Удивительно, что в Atollic / Eclipse ничего нельзя встроить, но я решил написать конкретное приложение.Вот шаги, которые я использовал:

Память дампа:

  • Отладка вашего программного обеспечения
  • Остановка на точке останова
  • Просмотр> Память> Кнопка экспорта> Формат: «Обычный текст»

Файл, представляющий синусоидальную волну, выглядит следующим образом:

00 00 3E 00 7D 00 BC 00 FB 00 39 01 78 01 
B7 01 F6 01 34 02 73 02 B2 02 F0 02 2F 03 

Вы должны прочитать эти примеры int16 следующим образом:

 1. 0x0000
 2. 0x003E
 3. 0x007D
 4. etc...

Напишите этот скрипт Matlab:

fileID = fopen('your_file','r');    
samples =  textscan(fileID,'%s')   
fclose(fileID);                   
samples = samples{1};              
words = strcat(samples(2:2:end,1), samples(1:2:end,1));  
values = typecast(uint16(hex2dec(words)),'int16');      
plot(values) ;                                             

Синусоидальная волна, построенная в Matlab

0 голосов
/ 15 декабря 2018

Хотя нет никаких плагинов Eclipse, которые бы выполняли то, о чем вы просите, о которых я лично знаю, есть STM Studio, основной целью которой является отображение переменных в режиме реального времени.Он анализирует ваш файл ELF, чтобы получить доступные переменные, поэтому попытка хотя бы попробовать его должна быть минимальной.

Он доступен здесь: https://www.st.com/en/development-tools/stm-studio-stm32.html

ST-Link требуется длязапустить его.

...