skyvmicro 0 14 января, 2013 Опубликовано 14 января, 2013 · Жалоба Доброго дня всем. Есть проект на PIC33 (MPLAB) и мне надо автоматически сохранять параметры проекта (время, дата, размер hex и т.п.) в некоторой переменной, которую я могу вычитывать при функционировании программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 15 января, 2013 Опубликовано 15 января, 2013 · Жалоба Так вопрос-то где? Что именно Вам непонятно? Чем конкретнее вопрос- тем конкретнее ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyvmicro 0 15 января, 2013 Опубликовано 15 января, 2013 · Жалоба Так вопрос-то где? Что именно Вам непонятно? Чем конкретнее вопрос- тем конкретнее ответ. Конкретно. В проекте создаю переменную (char, int, ...) какую конкретно пока не знаю. Смысл вопроса в том, как этой переменной автоматически (после каждой копмиляции) присвоить, к примеру, значение текущего размера hex файла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 16 января, 2013 Опубликовано 16 января, 2013 · Жалоба Конкретно. В проекте создаю переменную (char, int, ...) какую конкретно пока не знаю. Смысл вопроса в том, как этой переменной автоматически (после каждой копмиляции) присвоить, к примеру, значение текущего размера hex файла. Я вижу решение только одно, но, конечно могут быть и другие, мне неизвестные: После окончания компиляции вызовите Вашу программу, которая все и сделает Как вызвать: укажите эту программу на вкладке Custom Build в Build Options в строчке "Post-Build Setup" Как посчитать: сами думайте. Как записать результат в итоговый hex: вариантов вроде бы море, мне нравится HexMate. Нюанс: константа должна быть расположена по предопределенному адресу. Это делается стандартными средствами компилятора, не нужно никаких "посмотрел в листинге". И еще: у HexMate другой папа чем у MPLAB-C компилятора, так что порядок байтов при записи многобайтной величины обратный (если я правильно помню этот момент) Но если генерируете Вашей программой не число а hex-файл и дальше склеиваете с сырым хексом (с помощью того же HexMate), то порядок байтов Вас волновать не будет, как пропишете так и останется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyvmicro 0 17 января, 2013 Опубликовано 17 января, 2013 · Жалоба Спасибо за ответ. Направление понятно. Я спросил потому, что когда-то на форуме встречал топик о возможности IAR, на этапе компиляции, присвоить переменной время и дату создания проекта. Мне надо что-то подобное или некий идентификатор проекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 19 января, 2013 Опубликовано 19 января, 2013 · Жалоба Спасибо за ответ. Направление понятно. Я спросил потому, что когда-то на форуме встречал топик о возможности IAR, на этапе компиляции, присвоить переменной время и дату создания проекта. Мне надо что-то подобное или некий идентификатор проекта. Угу. А потом поменялась версия компилятора и метод вычисления или адрес куда пишут изменился. То-то радости при саппорте такого проекта будет. А Ваш батник как считал, так и будет продолжать считать, независимо от версии мплаба :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Cosmojam 0 19 января, 2013 Опубликовано 19 января, 2013 · Жалоба Дату/время сборки можно узнать из стандартных макросов ANSI C http://gcc.gnu.org/onlinedocs/cpp/Standard...ned-Macros.html А прочую инфу как размер бинарника как Ruslan1 говорит, только более надёжно писать это не в выходной хекс, а в константу в коде и запускать программку перед сборкой, а не после. Тогда при каждом билде будет подставляться размер бинарника от прошлого билда. Вам только следить за актуальностью этой информации перед выпуском релиза (собирать дважды). Вот пример Ruby-скрипта, генерирующий h-файл с номером крайнего коммита в git Dir.chdir(File.expand_path(File.dirname(__FILE__))) filename = "git_revision.h" git_exec = "git log --pretty=oneline -n1" file_included = filename.gsub(".h", "_H").upcase file = File.new(filename, "w") file.puts("#ifndef #{file_included}") file.puts("#define #{file_included}") file.print "static volatile const char *GIT_REVISION = " file.print %x[#{git_exec}].chomp.inspect file.puts ";" file.puts("#endif") file.close puts "************************************" puts "Git revision written to #{filename} " puts "************************************" Элементарно добавить сюда размер бинарника и любую другую инфу. Заодно дисциплинирует делать отдельные коммиты на финальные релизы чтобы после пересборки в коде фактически был именно тот коммит, из которого проект собран. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyvmicro 0 23 января, 2013 Опубликовано 23 января, 2013 · Жалоба ... Понятно, спасибо за ответ. Угу. А потом поменялась версия компилятора и метод вычисления или адрес куда пишут изменился. То-то радости при саппорте такого проекта будет. А Ваш батник как считал, так и будет продолжать считать, независимо от версии мплаба :) Меня абсолютно не волнует по какому адресу будет находиться моя переменноя ("My_Var") и пусть ее компилятор ложит каждый раз в другое место, что из того. Я считаю, что всегда смогу увитеть содержимое именно "My_Var" или я ошибаюсь? Не думаю, что форма представления даты и времени будет меняется в каждой новой версии компилятора. По поводу батника я уже писал, что это вполне реальный вариант. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться