мелкие дешевые МК

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 25404
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Transformer-V",url="/forum/viewtopic.php?p=4264807#p4264807"]нужно внешнее устройство отлаживать напрямую через x86/x64 машину с помощью моста, тем самым "вылизывать" управление им до блеска, правда необходимо уметь программировать под Win32. Ведь GUI винды гораздо удобнее, какого-то там UART, JTAG ... от слабенького MCU типа ARM[/uquote]
:facepalm:
Редкостная чушь. Трава была забористая, сразу видно. GUI винды сама по себе реализует управление внешними устройствами через драйверы винды.
А писать драйверы для винды ничем не отличается от писания драйверов для ARM-ов или Атмег. И УАРТ тут вообще не причем. Как и житаг.
Тут разговор шел не о скорости обмена, а о возможности управлять интерфейсом связи с целевым внешним устройством. И чем тогда легче бессмысленное усложнение этой процедуры через софт ПК против нативного для задачи прямого управления периферией МК? Задача - настроить периферию МК, а не заниматься с "резиновой женщиной" рукоблудом. :tea:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6507
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="Transformer-V",url="/forum/viewtopic.php?p=4264807#p4264807"][uquote="Asmodey",url="/forum/viewtopic.php?p=4263382#p4263382"]А когда нужно что-то записать и прочитать во внешнее устройство, разработчик которого ленивая скотина и документацию писал левой ногой (а они через одного такие), тут порой отладочная информация на несколько метров ниже уровня земли уходит, при том что я на втором этаже работаю.

Нормальный режим... Вот когда назначение каких-то странных битов в загадочных регистрах будете угадывать методом тыка, тогда нам про "нормальный режим" расскажете.[/uquote]

А что - бы не гадать, нужно внешнее устройство отлаживать напрямую через x86/x64 машину с помощью моста, тем самым "вылизывать" управление им до блеска, правда необходимо уметь программировать под Win32. Ведь GUI винды гораздо удобнее, какого-то там UART, JTAG ... от слабенького MCU типа ARM или Atmega :)[/uquote]
Чесслово, не понял прелестей отладки из под винды и с последующей отладкой в связке с МК...
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Это не хвост, это антенна
Сообщения: 1330
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

Asmodey писал(а):Чесслово, не понял прелестей отладки из под винды и с последующей отладкой в связке с МК...
Возможно, речь идёт о таких контроллерах:
https://icp-das.ru/collections/pac-upac

Если писать код так, чтобы он собирался и на этих контроллерах, и под Виндой, то почти всю отладку ПО получается выполнить под Виндой, а не через СОМ-порт этого контроллера. Теоретически, существует Turbo Debugger для удалённой отладки, но лично я его не нашёл. Плюс загрузка программы в такой контроллер отнимает заметное время, ибо идёт через СОМ-порт на скорости 115200, а сама программа будет не меньше 80-90К из-за библиотек, которые линкуются к ней.

Ещё случай отладки под Виндой это ПЛК, которые много общаются с IDE. Тоже очень удобно соединить ПЛК через пару виртуальных СОМ-портов с IDE, чтобы провести отладку и выполнить тестирование ПЛК и программ для ПЛК. Кстати, если кто не в курсе, то есть версия FreeRTOS для Винды, так что удаётся проверить довольно большие куски кода.

Отсюда и рождаются вот такие штуки:
Спойлер

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

////////////////////////////////////////////////////////////////////////////////
//
//      UARTbase.h
//
////////////////////////////////////////////////////////////////////////////////

#pragma once

#ifndef __UART_BASE_H__
#define __UART_BASE_H__

////////////////////////////////////////////////////////////////////////////////

#include "targetver.h"
#include "MyTypes.h"
#include "AbsTrans.h"
#include "VirtWr.h"


#ifdef _WIN32_

    #include "StdAfx.h"
    #include <windows.h>

    #pragma comment(lib, "kernel32.lib")

#endif

#ifdef _MINIOS7_
    #include "I-7188XA.h"
#endif

#ifdef __STM32__

    #ifdef __STM32F411__
        #include "system_stm32f4xx.h"
        #include "stm32f411xe.h"
    #endif

    #ifdef __STM32F446__
        #include "system_stm32f4xx.h"
        #include "stm32f446xx.h"
    #endif

    #ifdef __STM32F745__
        #include "system_stm32f7xx.h"
        #include "stm32f745xx.h"
    #endif

    #ifdef __STM32F767__
        #include "system_stm32f7xx.h"
        #include "stm32f767xx.h"
    #endif

    #include <stdlib.h>
    #include "OS.h"
    #include "kTask.h"      // Собирается только под FreeRTOS!

    #include "IRQ.h"

#endif

//------------------------------------------------------------------------------
#ifdef __MINIOS7__

    #define MAX_SERIAL_PORTS    4 // Количество последовательных портов.

    enum ComPort
    {
        COMPORT1    = 1,
        COMPORT2    = 2,
        COMPORT3    = 3,
        COMPORT4    = 4,
        UNKNOWNPORT = -1
    };

#endif
//------------------------------------------------------------------------------
#ifdef __WIN32__

    #define MAX_SERIAL_PORTS    32  // Количество последовательных портов.

    enum ComPort
    {
        COMPORT0    = 0,
        COMPORT1    = 1,
        COMPORT2    = 2,
        COMPORT3    = 3,
        COMPORT4    = 4,
        COMPORT5    = 5,
        COMPORT6    = 6,
        COMPORT7    = 7,
        COMPORT8    = 8,
        COMPORT9    = 9,
        COMPORT10   = 10,
        COMPORT11   = 11,
        COMPORT12   = 12,
        COMPORT13   = 13,
        COMPORT14   = 14,
        COMPORT15   = 15,
        COMPORT16   = 16,
        COMPORT17   = 17,
        COMPORT18   = 18,
        COMPORT19   = 19,
        COMPORT20   = 20,
        COMPORT21   = 21,
        COMPORT22   = 22,
        COMPORT23   = 23,
        COMPORT24   = 24,
        COMPORT25   = 25,
        COMPORT26   = 26,
        COMPORT27   = 27,
        COMPORT28   = 28,
        COMPORT29   = 29,
        COMPORT30   = 30,
        COMPORT31   = 31,
        UNKNOWNPORT = -1
    };

#endif
//------------------------------------------------------------------------------
#ifdef __STM32__ 

    typedef struct 
    {
        GPIO_TypeDef*   port;
        uint8           aBit;
    }
    AnPin;
    
    typedef struct
    {
        AnPin Tx, Rx, dirControl;
    }
    UARTpin;

#endif

#ifdef __STM32F411__

    // Количество аппаратных последовательных портов.
    #define MAX_SERIAL_PORTS    5
    #define MAX_VCP             1   // Количество виртуальнх портов

    enum ComPort
    {
        COMPORT1    = 1,
        COMPORT2    = 2,
        COMPORT6    = 6,
        COMPORT100  = 100,  // Virtual COM-port over USB
        COMPORT200  = 200,  // Virtual COM-port over Ethernet
        UNKNOWNPORT = -1
    };

#endif

#ifdef __STM32F446__

    #define MAX_SERIAL_PORTS    10  // Количество последовательных портов (UART)
    #define MAX_VCP             1   // Количество виртуальнх портов

    enum ComPort
    {
        COMPORT1    = 1,
        COMPORT2    = 2,
        COMPORT3    = 3,
        COMPORT4    = 4,
        COMPORT5    = 5,
        COMPORT6    = 6,
        COMPORT7    = 7,
        COMPORT8    = 8,
        COMPORT100  = 100,  // Virtual COM-port over USB
        COMPORT200  = 200,  // Virtual COM-port over Ethernet
        UNKNOWNPORT = -1
    };

#endif

#ifdef __STM32F745__

    #define MAX_SERIAL_PORTS    10  // Количество последовательных портов (UART)
    #define MAX_VCP             1   // Количество виртуальнх портов

    enum ComPort
    {
        COMPORT1    = 1,
        COMPORT2    = 2,
        COMPORT3    = 3,
        COMPORT4    = 4,
        COMPORT5    = 5,
        COMPORT6    = 6,
        COMPORT7    = 7,
        COMPORT8    = 8,
        COMPORT100  = 100,  // Virtual COM-port over USB
        COMPORT200  = 200,  // Virtual COM-port over Ethernet
        UNKNOWNPORT = -1
    };

#endif

#ifdef __STM32F767__

    #define MAX_SERIAL_PORTS    10  // Количество последовательных портов (UART)
    #define MAX_VCP             1   // Количество виртуальнх портов

    enum ComPort
    {
        COMPORT1    = 1,
        COMPORT2    = 2,
        COMPORT3    = 3,
        COMPORT4    = 4,
        COMPORT5    = 5,
        COMPORT6    = 6,
        COMPORT7    = 7,
        COMPORT8    = 8,
        COMPORT100  = 100,  // Virtual COM-port over USB
        COMPORT200  = 200,  // Virtual COM-port over Ethernet
        UNKNOWNPORT = -1
    };

#endif

//----------------------------------------------------------------------
enum StopBits
{
    ONE_STOP_BIT,
    ONE_AND_HALF_STOP_BIT,
    TWO_STOP_BITS
};
//------------------------------------------------------------------------------
enum Parity
{
    NO_PARITY = 0,
    ODD,            // Нечётность
    PARITY          // Чётность
};
//------------------------------------------------------------------------------

enum UART_USE_AS
{
    SIMPLE  = 0,
    MODBUS  = 1
};
////////////////////////////////////////////////////////////////////////////////

class UART_base : public AbstractTransport, protected IRQ
{
    public:

        enum UART_ERROR
        {
            OK                          = 0,
            INVALID_PORT                = 1,
            INVALID_BAUDRATE            = 2,
            UNSUPPORTED_DATA_BITS_VALUE = 3,
            UNSUPPORTED_STOP_BITS_VALUE = 4,
            MAPPING_NOT_SUPPORTED       = 5,
            ZERO_POINTER                = 6,
            INVALID_SIZE                = 7,
            IRQ_HANDLER_NOT_INSTALLED   = 8,
            DEVICE_IS_BUSY              = 9,

            // Ошибка операции ввода-вывода
            IO_FAULT                    = 10,

            // Превышено время ожидания окончания операции
            TIMEOUT                     = 11
        };

        //----------------------------------------------------------------------
        //      Связывает объект SerialPort с физическим портом port,
        // устанавливая для порта параметры приёма-передачи.
        //      Возвращает номер порта. Зачение UNKNOWNPORT указывает на ошибку.
        virtual ComPort
        open
        (
            ComPort     port,
            uint32      baudRate,
            uint8       dataBits,
            Parity      parity,
            StopBits    stopBits
        );

        //----------------------------------------------------------------------
        //      Отвязывает физический порт от объекта SerialPort.
        //      Возвращает номер отвязанного порта. Значение UNKNOWNPORT
        // указывает на ошибку.
        virtual ComPort close( void );

        //----------------------------------------------------------------------
        //      Возвращает номер физического порта, к которому выполнена
        // привязка. Если привязка не выполнена или завершилась неудачей,
        // то вернёт UNKNOWNPORT.
        ComPort getPort( void );

        //----------------------------------------------------------------------
        //      Возвращает код ошибки последнего вызова метода класса.
        //  0  - нет ошибки, любое другое значение указывает на ошибку, код
        // которой зависит от платформы.
        virtual int32  getLastError( void );

        //----------------------------------------------------------------------
        //      Принудительная очистка буферов. Количество байт для приёма-
        // передачи обнуляется! Оставшиеся в передатчике байты не передаются!

        virtual void purgeRxBuff( void ) = 0;
        virtual void purgeTxBuff( void ) = 0;

        //----------------------------------------------------------------------
        //      Читает в буфер buff размером buffSize байты из буфера приёмника.
        //      Работает в неблокирующем режиме!
        //      Возвращает количество прочитанных байт или ноль в случае
        // отсутствия доступных для чтения данных.
        virtual int16
        receive
        (
            void*   buff,
            int16   buffSize,
            MODE    mode        = NON_BLOCK
        ) 
        = 0;

        //----------------------------------------------------------------------
        //      Записывает buffSize байт из буфера buff в буфера передатчика.
        //      Работает в неблокирующем режиме!
        //      Возвращает количество записанных байт или ноль в случае
        // невозможности записи. lastError указывает на ошибку.
        //      Перед вызовом send(..) во избежании склеивания отправляемых
        // посылок, необходимо вызывать getAvailableTxBytes(..) для проверки
        // того, что буфер передатчика пуст.
        virtual int16
        send
        (
            void*   buff,
            int16   buffSize,
            MODE    mode     = NON_BLOCK
        )
        = 0;

        //----------------------------------------------------------------------
        //  Возвращает количество байт, находящихся в буфере передатчика.
        virtual int16 getAvailableTxBytes( void ) = 0;
        virtual int16 getAvailableRxBytes( void ) = 0;

        //----------------------------------------------------------------------
        //  Сервисные функции для мониторинга и диагностики.
        virtual ostream& print( ostream& os );
        
    protected:

        //----------------------------------------------------------------------
        //      Создаёт объект, через который будет осуществляться работа
        // с последовательным портом. Может создаваться различная
        // обвязка для удобства работы: очереди, семафоры и т.п.
        UART_base
        ( 
            const char* name 
        );

        //----------------------------------------------------------------------
        //      Уничтожает объект с высвобождением всех занятых ресурсов.
        virtual ~UART_base( void );

        //----------------------------------------------------------------------

        ComPort     port;                       // Привязаный порт.
        int         lastError;                  // Код ошибки последнего вызова.
        
        uint32      baudRate;
        uint8       dataBits;
        Parity      parity;
        StopBits    stopBits;

        #ifdef __STM32__
        
            uint32          APB_divider;
            uint8           APB_n;
            USART_TypeDef*  usart;
            IRQn_Type       usart_IRQn;
            
            //------------------------------------------------------------------
            // Устанавливает события, по которым будет формироваться прерывания.
            // Не забудь установить UE и определись с RE и TE!
            virtual void setEvents( void ) = 0;

        #endif

    private:

        // Закрываем конструктор копирования и оператор присваивания.
        UART_base( const UART_base& );
        UART_base& operator= ( UART_base& );

        #ifdef _WIN32_

            HANDLE  m_hFile;
            uint32  numOfBytesToWrite,  // Количество байт для отправки.
                    bytesWrittens;      // Количество отправленных байт.

        #endif
};

extern UART_base *serialPort[ MAX_SERIAL_PORTS ];

////////////////////////////////////////////////////////////////////////////////
#endif  // __UART_H__
////////////////////////////////////////////////////////////////////////////////
Друг Кота
Аватара пользователя
Сообщения: 6507
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="tonyk",url="/forum/viewtopic.php?p=4264883#p4264883"]Возможно, речь идёт о таких контроллерах:[/uquote]
Если так, то чела совсем не в ту степь понесло.

Впрочем, тема давно уже ушла от темы так далеко, что...
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 4331
Зарегистрирован: Пн окт 03, 2016 22:50:22

Сообщение Transformer-V »

[uquote="Asmodey",url="/forum/viewtopic.php?p=4264865#p4264865"]Чесслово, не понял прелестей отладки из под винды и с последующей отладкой в связке с МК...[/uquote]

А прелесть следующая, к примеру имеется чип, но с кривым даташитом, пишем софт, управляем чипом, смотрим и получаем результаты (запись/чтение) в живую, без ограничения объема памяти и задач. :)
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6507
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="Transformer-V",url="/forum/viewtopic.php?p=4265175#p4265175"]без ограничения объема памяти и задач[/uquote]
У тех кто пишет на регистрах, дефицита памяти и недостатка производительности как правило не возникает. Ресурсов МК хватает с избытком, в том числе и на отладочные вставки в код. Недостаток всего и вся, это проблема библиотекарей.
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4331
Зарегистрирован: Пн окт 03, 2016 22:50:22

Сообщение Transformer-V »

[uquote="Asmodey",url="/forum/viewtopic.php?p=4265178#p4265178"]У тех кто пишет на регистрах, дефицита памяти и недостатка производительности как правило не возникает. Ресурсов МК хватает с избытком, в том числе и на отладочные вставки в код. Недостаток всего и вся, это проблема библиотекарей.[/uquote]
Ресурсы МК это ничто по сравнению с ресурсами x86/x64 машины :) А выявить подводные камни без участия программиста / разработчика ( разраб может откинутся на спинку стула и отдыхать) гораздо быстрее на x86/x64, чем шариться в регистрах МК :sleep: В случае изучения конкретного раба - чипа с кривым даташитом с помощью x86/x64, никакие отладочные вставки ненужны, достаточно отслеживать программным путем результаты, необходимые результаты и протоколировать их в отладочный файл, потом отпарсировать нужное, ну или забагованное :)
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6507
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Transformer-V, вы сами часто так делаете? Как отлаженные таким образом устройства потом ведут себя с МК? Можно примеры посмотреть?
Астролябия-сама меряет, было бы что мерять!!!
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18679
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Мудрый кот
Сообщения: 1743
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Transformer-V",url="/forum/viewtopic.php?p=4265180#p4265180"]А выявить подводные камни без участия программиста / разработчика ( разраб может откинутся на спинку стула и отдыхать) гораздо быстрее на x86/x64, чем шариться в регистрах МК :sleep: В случае изучения конкретного раба - чипа с кривым даташитом с помощью x86/x64, никакие отладочные вставки ненужны, достаточно отслеживать программным путем результаты[/uquote]Бред. Рассуждения диванного теоретика, никогда не работавшего с живым МК.
Либо "работавшего" только посредством чужих "либ". Что, по большому счёту, то же самое.
Это не хвост, это антенна
Сообщения: 1330
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

jcxz писал(а):Бред. Рассуждения диванного теоретика
Не совсем. Если работа МК сводится к математическим расчётам и обмену данными по, например, EIA-485, то такая ситуация имеет право быть. В таком случае почти всё можно отладить на ПК, а потом перекомпилировать для МК. Но написать программу и драйверы так, чтобы они собирались и на ПК, и на МК- это надо уметь. И всё равно работа с регистрами периферии на МК никуда не денется, хотя есть ведь, например для STM32, небезызвестный HAL, который может скрыть и работу с регистрами. Хм, но всё равно, такой подход требует серьёзных знаний ПК с его ОС, и МК с его примочками.
Друг Кота
Аватара пользователя
Сообщения: 25404
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="tonyk",url="/forum/viewtopic.php?p=4265246#p4265246"]Если работа МК сводится к математическим расчётам и обмену данными по, например, EIA-485, то такая ситуация имеет право быть.[/uquote]
Никто с этим и не спорит. Вопрос совершенно в другом: В ЧЕМ ПРОФИТ от такого подхода? Мало того, что нужно писать свой софт на ПК, так еще потом нужно его "вклеить" с драйверами на МК. Кому нужна эта лишняя работа? Расчеты вообще не рассматривались в обсуждении этой темы. А если и рассматривались, то в их взаимодействии с режимом реального времени, которое не симулируется на ПК в предлагаемом варианте. Да и не может симулироваться из за совершенно другой платформы. ОСРВ на ПК - это иная история.
Я сразу сказал - это редкостная чушь.
Друг Кота
Аватара пользователя
Сообщения: 6507
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Чел, походу, свои хрустальные мечты озвучил. У мну подобные были в 3 классе: реактивный ранец, бесконечная батарейка, очки со встроенным телевизором, роликовые коньки с электромоторчиками, радиоуправляемая модель самолета с телевизионной камерой на борту и радиусом полета не менее 100 км. Одно хорошо - интернетов тогда не было, и надо мной хихикали только мои одноклассники. Нынешние третьеклассники брыжжут влажными мечтами как минимум в границах целой страны.
Астролябия-сама меряет, было бы что мерять!!!
Это не хвост, это антенна
Сообщения: 1330
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

КРАМ писал(а):В ЧЕМ ПРОФИТ от такого подхода?
В скорости разработки, хоть звучит неожиданно. Просто когда скорость загрузки программы для исполнения измеряется десятками секунд-минутами, плюс нет внутрисхемной отладки, а есть только printf(), то такой подход себя окупает. А если ещё и несколько проектов, то тем более.
КРАМ писал(а): Да и не может симулироваться из за совершенно другой платформы. ОСРВ на ПК - это иная история.
Не совсем так:
https://www.freertos.org/FreeRTOS-Windo ... MingW.html
Тут даже речь не о симуляции идёт. Если оборудование общается через 485-ый и Эзернет, то нет разницы, кто спрашивают и кому отвечают, МК или Винде. Лишь бы ответы укладывались в установленный предел.
Друг Кота
Аватара пользователя
Сообщения: 25404
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="tonyk",url="/forum/viewtopic.php?p=4265288#p4265288"]В скорости разработки...[/uquote]Разработки ЧЕГО?
Если разговор идет об алгоритме расчетов, то для этого есть MATLAB. А если речь идет об интерфейсах или драйверах внешних устройств, то все повязано на железе связи с этими устройствами конкретно в этом МК.
Причем тут вообще обсуждаемая тема?
Напомню, что разговор шел о ВНУТРИСХЕМНОЙ отладке и инструментах для ее осуществления. А методы макетирования алгоритмов на сторонних платформах - это совершенно другая история.
ЗЫ. Намекну. Трансформер пропагандирует свои методы управления некими чипами через интерфейсы и софт ПК. Например, он тут хвалился управлением RGB-лентами. Вот о чем он ведет разговор. А совсем не о вычислительных алгоритмах.

Добавлено after 5 minutes 44 seconds:
[uquote="tonyk",url="/forum/viewtopic.php?p=4265288#p4265288"]Если оборудование общается через 485-ый и Эзернет, то нет разницы, кто спрашивают и кому отвечают, МК или Винде.[/uquote]
Если протокол обмена (верхнего уровня, конечно) не имеет документации, то совершенно фиолетово на чем с ним трахаться. Дело вкуса и привычек. Время там не сэкономишь. Ну вывалит, например, сниффер MIPI CSI тонну листов загрузки видеосенсора. Без внятной документации там все равно ничего не восстановишь. А если и восстановишь, то фиолетово чем снифферили - МК или ПК. Времени уйдет одинаково.
Друг Кота
Аватара пользователя
Сообщения: 4331
Зарегистрирован: Пн окт 03, 2016 22:50:22

Сообщение Transformer-V »

[uquote="Asmodey",url="/forum/viewtopic.php?p=4265199#p4265199"]Transformer-V, вы сами часто так делаете?[/uquote]
Очень часто, мне гораздо интереснее отладить до "блеска" работу чипа на x86/x64, потом наработки перевести в MCU (Atmel и т.д.) ну или на платформу с Z80 или 6809 :)
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Transformer-V, а что, существуют полноценные эмуляторы, скажем, тех же STM32? Может, они еще и свободные и под линуксом работают?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25404
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4265448#p4265448"]полноценные эмуляторы, скажем, тех же...[/uquote]
Прикольный троллинг... :)))
Причем тут симулятор? Трансформер штота говорил о симуляторах?
Друг Кота
Аватара пользователя
Сообщения: 6507
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Это же классика - сначала наплодить себе трудностей, а потом героически преодолевать их противоестественным путем...
Астролябия-сама меряет, было бы что мерять!!!
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

КРАМ, он говорил, что "до блеска" отлаживает МКшный код на ПК. И вот интересно, как он это делает, если добрая половина кода для МК завязана на его регистрах?
Всякую вычислительную чушь, понятное дело, на ПК можно отладить. Но сколько ее?
Нет уж, коль пишешь под МК, так и отлаживаешь непосредственно на МК. Самым простым диагностическим выхлопом. У меня в режиме DEBUG прошивка вполне может килобайт на 10 пухлее быть. И выхлопа спокойно в сотню килобайт в секунду производить в терминал. А в release-сборке все эти DBG просто не раскрываются.
Совершенно аналогично отлаживаю софт под ПК, только там логи валятся в отдельный файл + stderr.

А насчет матлаба (только матлаба для людей — Octave) поддержу. Сам в октаве очень много чего намоделирую, а потом алгоритм переношу в сишный код и использую на ПК или МК. Особенно с обработкой изображений помогает, пока я не добил свою библиотечку для этих дел (использовать openCV — нужно совсем быть поехавшим головой, т.к. она жирная, тормозная и говно вообще).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»