Vitemk

Stvd + Cosmic Размер Кода

7 сообщений в этой теме

Vitemk    12

Начал тестовый проект. Использую ST Visual Develop + Cosmic.

Интересует возможность узнать размер занятой памяти (код, озу и т.п.). Лазил в настройках, ничего похожего не нашел. Гугл тоже не помог. Может знает кто, как это сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

Начал тестовый проект. Использую ST Visual Develop + Cosmic.

Интересует возможность узнать размер занятой памяти (код, озу и т.п.). Лазил в настройках, ничего похожего не нашел. Гугл тоже не помог. Может знает кто, как это сделать?

Там в папке с проектом есть папка дебаг, ну или релайз, в зависимости от того, что выбрал. Там находит файл с расширением .map., в нём всё. Но есть же IAR, зачем STVD если сами стшники рекомендуют IAR?

Изменено пользователем i80186

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vitemk    12

.map во общем то сам уже нашел. Хотелось бы прямо в STVD выводить. Помню, что раньше как-то делал. А к IAR у меня какая-то внутренняя неприязнь, что ли. К тому же на IAR лицензия только на 8кБ. А Cosmic без ограничений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

Ну так кто мешает мап файл к проекту приатачить и постоянно открытым держать? IAR та умная, та сама так делает. Это попроще, руками надо))

146036da4b7at.jpg

Да и сам мап файл у IAR куда как человечнее. Ну с другой стороны чего хотеть от бесплатного непонятно чего?

И да, есть же тема про эти самые STM8.

http://forum.cxem.net/index.php?showtopic=162791&st=20#comment-2438084

Изменено пользователем i80186

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vitemk    12

Ну это он щас бесплатный. А несколько месяцев назад был очень даже платный. А держать map файл, это костыль. Очень не удобный костыль.

Вспомнил, что куда-то что-то прописывал и содержимое(не всё, только нужная часть) этого файла вываливалась в окно вывода.

Изменено пользователем Vitemk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

Да ну. Файл удобнее, ну как по мне. Там по человечески описано сколько например каждая функция занимает, сколько памяти, где константа. Какой смысл смотреть на размер? На сколько надо сложное приложение замутить, чтобы размер кода стал критичен? Это в старые добрые времена памяти вечно не хватало, сейчас проблем с этим нет. Хотя конечно если какой то там PIC10, то да, но опять же там только ассемблер, там всегда точно знаешь сколько чего использовал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Загрузка...
Vitemk    12

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

Но вы меня убедили. Буду использовать .map

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Евгений61
      Здравствуйте! Помогите пожалуйста разобраться с заголовочным файлом.
      По идее pragma vector должен быть прописан в IOSTM8s003f3.h
      но там почему то не прописаны аектора внешних прерываний. Помогите!
      И еще вопросик. Как посмотреть что описано в "#define" файле. Может его можно самому написать.


      А В ДАТАШИТЕ ВЕКТОРА ЕСТЬ
       

    • Автор: Евгений61
      Здравствуйте. Такой вопрос. Нужно реализовать на STM8S командное управление. 
      Поясню. При поступлении восьмибитного кода на пин МК нужно выполнять какое то действие. Кодировка кода происходит ШИМ модуляцией( Т,Е. по длительности импульса- длинный импульс =1 короткий =0.). При нарастании фронта на ножку МК нужно включить таймер. По спаду фронта нужно выключить таймер, и сравнить значение счетчика с числом. Если значение совпадает, то записать число (0 или 1) в соответствующий бит регистра. По принятии всех 8 битов нужно выполнять какое-то действие. Так вот вопрос заключается в том-как реализовать запуск таймера при поступлении на ножку фронта сигнала, и как его остановить по спаду и проверить значение счетчика. Желательно делать аппаратно на таймерах и прерываниях, что бы уменьшить время.

    • Автор: Wenter
      Суть программы нажали на кнопку ушли в прерывание, в прерывании от кнопки поменяли уровень на порту со светодиодом, порт с LED соединён с другим портом на котором тоже есть прерывание при переходе из 0 в 1, Соответственно при нажатии кнопки ушли в прерывание там выставили смену уровня на другой ноге и должно сработать другое прерывание. Проблема, прерывание от кнопки работает, прерывание от смены уровня нет. Хотя этаже программа работала, плата STM8L152C6T6 пере прошивалась затем залилась этаже прога и не заработала.
      Ещё вопрос при прерывании от кнопки устанавливается бит флага  EXTI_SR1_bit.P1F а чтоб его сбросить почему то работает EXTI_SR1_bit.P2F=0; а не EXTI_SR1_bit.P1F=0;
      Код программы полностью: В IAR
      /*
      *15.11.2016
      *STM8L152C6T6
      *
      *Измерять таймером задержку от нажатия кнопки до начала генерации
      */
      #include "iostm8l152c6.h"
      int perep;
      unsigned int tic;
      /**************Обработка вектора прерывания от кнопки**************/
           #pragma vector=EXTI1_vector
           __interrupt void Pin1_interrupt(void)
           {
             EXTI_SR1_bit.P2F=0;//Сброс флага прерывания
             TIM1_CR1_bit.CEN = 1; //Запускаем таймер
             PC_ODR_bit.ODR7^=1; //Инверсия порта С7
           }
      /**************Обработка вектора прерывания от начала генерации**************/
         
       #pragma vector=EXTI6_vector
           __interrupt void Pin6_interrupt(void)
           {
             EXTI_SR1_bit.P2F=0;//Сброс флага прерывания
              TIM1_CR1_bit.CEN = 0; //Останавливаем  таймер
              tic=TIM1_CNTRL;
             PE_ODR_bit.ODR7^=1; //Инверсия порта E7
             
           }
      /************************При переполнении таймера*******************************************************/
       /*#pragma vector=TIM1_OVR_UIF_vector
           __interrupt void TIM1_OVF(void)
           {
             //perep++;
             
           }*/
      int main( void )
      {
      /***************Выберем частоту SYSCLK************/
        //По умолчанию тактируемся от HSI/8
        CLK_CKDIVR=0;// Выбираем делитель на 1
       
      /********Инициализация пина который моргает Светодиодом ИИИИИИИИИИИИИИИНДИКАЦИЯ********/  
        PC_DDR_bit.DDR7 = 1; //Настраиваем 7й пин порта C на выход
        PC_CR1_bit.C17 = 1; //Переключаем его в режим push-pull (это когда он может выдавать
        //и низкий и высокий уровень), а то по-умолчанию он прикидывается пинов с открытым стоком
        //(это когда может выдавать только низкий уровень, а вместо высокого переключается на вход)
       
        /********Инициализация пина который моргает Светодиодом********/  
        PE_DDR_bit.DDR7 = 1; //Настраиваем 7й пин порта C на выход
        PE_CR1_bit.C17 = 1; //Переключаем его в режим push-pull (это когда он может выдавать
        //и низкий и высокий уровень), а то по-умолчанию он прикидывается пинов с открытым стоком
        //(это когда может выдавать только низкий уровень, а вместо высокого переключается на вход)
      /****************************************************************************************/  
       
       /*****************ПРЕРЫВАНИЕ ОТ КНОПКИ****************************************************************************/
        /*С начало настраиваем пины с кнопкой*/
        PC_DDR_bit.DDR1 =0; //Настраиваем 1й пин порта C на вход
        PC_CR1_bit.C11=1; //Настроили порт кнопки на вход pull-up
        PC_CR2_bit.C21=1; //Размещаем прерывание
       
        /***************Настройка прерываний**************/
        /*В регистре EXTI_CONF1 по умолчанию все 0
          тоесть каждый пин даёт нам отдельное прерывание*/
       
        //Настраиваем фронт срабатывания прерывания
        //Т.к. кнопка замыкается на землю то выбираем задний фронт
         EXTI_CR1_bit.P1IS=2; //Прерывание на ножке срабатывает по заднему фронту
         //ITC_SPR1_bit.VECT1SPR=0; //Высокий прерывание от нашей кнопки
      /**************************************************************************************************************/
         
      /*********************ПРЕРЫВАНИЕ ПРИ НАЧАЛЕ ГЕНЕРАЦИИ**********************************************************/
        PC_DDR_bit.DDR6 =0; //Настраиваем 6й пин порта C на вход
        PC_CR1_bit.C16=1; //Настроили порт  на вход pull-up
        PC_CR2_bit.C26=1; //Размещаем прерывание
       
        /***************Настройка прерываний**************/
        /*В регистре EXTI_CONF1 по умолчанию все 0
          то есть каждый пин даёт нам отдельное прерывание*/
       
        //Настраиваем фронт срабатывания прерывания
        //Фронт  прерывания передний
        EXTI_CR2_bit.P6IS=1; //Прерывание на ножке срабатывает по переднему фронту
        //ITC_SPR2_bit.VECT6SPR=3; //Средний приоритет  прерывание от нашей кнопки
         
      /*********Настройка таймера TIM1***************************/
        CLK_PCKENR2_bit.PCKEN21 = 1; //Включаем тактирование таймера TIM1
        //Делитель на 160
        //НО выставляем 15(так как всегда +1)
        TIM1_PSCRH = (15) >> 8;
        TIM1_PSCRL = (15)& 0xFF;
        TIM1_PSCRH = (0) >> 8;
        TIM1_PSCRL = (0)& 0xFF;
        //Счет по умолчанию вверх TIM1_CR1 DIR=0
        //Значение регистра сравнения(До чего тикает таймер)
        TIM1_ARRH = (10000) >> 8;
        TIM1_ARRL = (10000)& 0xFF;//Частота переполнений = 16М / 1600 / 10000 = 1 Гц
       /*Новый пред делитель в таймер записывается только после  события Update (Update Event — UEV)
         чтоб сразу инициализировать нужный пред делитель
         вызовем программно Update (Update Event — UEV), и чтоб в это время не уйти в какое нибудь
         прерывание разрещим прерывание только от переполнения таймера */
        TIM1_CR1_bit.URS = 1; //Прерывание только по переполнению счетчика
        TIM1_EGR_bit.UG = 1;  //Вызываем Update Event
        TIM1_IER_bit.UIE = 0; //Запрещаем прерывание при совпадении с ARR
        TIM1_CR1_bit.CEN = 0; //не Запускаем таймер
       
         asm("RIM");//Глобальное разрешение прерываний
         
        while(1)
        {
        }
      }
       
    • Автор: admin
      Запускаем новый видеокурс по микроконтроллерам семейства STM8. Курс планируем сделать интересным и интерактивным. Будут различные задания для проверки ваших знаний. От вас хотим услышать обратную связь и активное обсуждение, а также ждем любых вопросов!
      Ведет курс Василий (Профиль на сайте cxem.net для доната: i80186)
      Урок #1:


      Рассмотрены основные особенности микроконтроллеров серии STM8 серии STMicroelectronics. Проведено сравнение их с микроконтроллерами фирм Atmel и Microchip. Так же уделено внимание средствам разработки и отладки для данных микроконтроллеров, требующимся для начала работы с ними, а именно среде IAR EMBEDDED WORKBENCH для STM8 и отладочному набору на базе микроконтроллера STM8S105 - STM8S-DISCOVERY.
    • Автор: admin

      Рассмотрены основные особенности микроконтроллеров серии STM8 серии STMicroelectronics. Проведено сравнение их с микроконтроллерами фирм Atmel и Microchip. Так же уделено внимание средствам разработки и отладки для данных микроконтроллеров, требующимся для начала работы с ними, а именно среде IAR EMBEDDED WORKBENCH для STM8 и отладочному набору на базе микроконтроллера STM8S105 - STM8S-DISCOVERY.
  • Сообщения

    • Слово "климат" имеет своё значение. 1. Ядро Земли создаёт тепловую статическую картину. 2. А перемещение воздушных масс создают "климат" - динамическую картину, то есть зиму и лето (если кратко). Для начала надо знать как работает закон Фурье. Вы этого не знаете. Отсюда все Ваши проблемы.   Судя по речи - излагает типичный чайник. Или попросту - провокатор. Никого не надо банить. С троллями у меня есть опыт общения.
    • Меняя приведённое сопротивление Вы меняете наклон нагрузочной прямой.  Само собой будет меняться THD. Это даже без учёта искажений вносимых ТВЗ. Вот только одной и той де выходной мощности быть не может.   Вы либо не умеете её посчитать, либо вводите нас в заблуждение.  И потом получить с одной 2А3 4 ватта выходной мощности, это надо загнать её в достаточно тяжёлый режим. При её не очень демократичной цене это мягко говоря не самое мудрое решение. 
    • @LepekhinV А правильно ли проводилось сравнение? Лично я более менее правильное сравнение у себя проводил с ОМ2,5 и Холтоном - на слух разницы почти нет.  "Почему усилители звучат по-разному: сравнительное прослушивание усилителей" Я тут ОМ2,7 (2х80 вт, 4 ом) строю, в корпусе, двойное моно. Как доделаю - могу выслать грузовой компанией проверенному пользователю данного форума для адекватного и правильного сравнения  
    • Нагрелся до 40 градусов? До 80? до 150?
    • Откуда народ придумывает такую ахинею?  Все инструменты Микрочипа (PICkit2, PICkit3, PICkit4, ICD2, ICD3, ICD4, Real ICE) поддерживают отладку. Только модуль отладки должен быть В САМОМ МК. А в обсуждаемом МК его нет. Поэтому без специального хидера (платы со спецчипом PIC12F675-ICD под этот МК) отладки не будет с любым инструментом. Читайте оригинальную документацию, а не болтовню в помойках интернета. Применение программаторов не умеющих управлять питанием программируемого МК приводит при отключении вывода сброса от пина (внутренний сброс) к потере возможности входить в режим программирования. У программаторов управляющих питанием (все микрочиповские инструменты имеют такую возможность и она включена по умолчанию) такой проблемы нет. Для входа в программирование МК у которого ранее был отключен сброс сначала подают программирующее напряжение на вывод MCLR и лишь потом на питание. Тогда контроллер входит в этот режим. Иначе при подаче питания без возможности манипулировать сбросом МК начинает исполнять код и в программирование не входит.
    • Чудес не бывает (пока за Омегу не возьмётесь))))), шутка, если прибор всё время в режиме программирования и не выходит из него, но при этом нормально шьётся - значит есть соплч между цепями схемы отвечающими за вход в режим программирования. Если бы дисплей был неправильно подключен прибор бы пиликал, но ничего не отображал. Ищите "перепропай".
    • Допускается ли использовать в качестве регулятора баланса переменник на 10к,группа В буржуйская? Есть прикольный переменник, который в среднем положении слегка фиксируется.