Например TDA7294

Форум РадиоКот • Просмотр темы - Не работает прошивка после сборки с помощью qbs
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 08:45:06

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Не работает прошивка после сборки с помощью qbs
СообщениеДобавлено: Пт фев 17, 2017 14:09:22 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Чт дек 29, 2011 16:25:56
Сообщений: 83
Рейтинг сообщения: 0
Вложение:
stm32.zip [101.69 KiB]
Скачиваний: 155
Добрый день, форумчане.
Пытаюсь писать для stm32 в Qt Creator. Написал qbs-скрипт и на выходе получаю .elf. А дальше уже с помощью командной строки конвертирую в .hex через arm-none-eabi-objcpy. Сделал тестовый проект в Embitz (включение сегмента на семисегментнике), то все работает.

В Embitz получил размеры:
.elf = 397kb
.hex = 4kb

В Qt creator:
.elf = 148kb
.hex = 9kb

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

Подскажите, где я делаю не так. Спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не работает прошивка после сборки с помощью qbs
СообщениеДобавлено: Сб фев 18, 2017 07:57:28 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Чт дек 29, 2011 16:25:56
Сообщений: 83
Рейтинг сообщения: 0
Скачал проект для микроконтроллеров Миландра, то все собралось без проблем...не было ошибок и предупреждений...
По тому же скрипту (там как раз cortex-m3) собираю для stm32 и получаю кучу ошибок (вчера самостоятельно писал по мануалам qbs без использования модуля срр и получал те же ошибки) ???.
Уже не знаю куда копать...перечитал уже все статьи по этой теме (у всех получается) и использую их скрипты переделанные под свою структуру проекта и постоянно, то прошивка не работает в камне, либо ошибки...

Вот qbs-скрипт (без использования модуля срр):
Код:
import qbs
Project {
    name: "simple"
    Product {
        name: "micro"
        type: "hex"
        Group {
            name: "sources"
            files: ["*.c", "*.h", "*.S"]
            fileTags: ['c']
        }
        Rule {
            inputs: ["c"]
            Artifact {
                fileTags: ['obj']
                filePath: input.fileName + '.o'
            }
            prepare: {
                var args = [];
                args.push("-mcpu=cortex-m3")
                args.push("-mthumb")
                args.push("-g")
                args.push("-ffunction-sections")
                args.push("-O0")
                args.push("-Wall")
                args.push("-Wunused")
                args.push("-DM3")
                args.push('-c');
                args.push(input.filePath);
                args.push('-o');
                args.push(output.filePath);
                var compilerPath = "c:/development/gcc-arm/bin/arm-none-eabi-gcc.exe"
                var cmd = new Command(compilerPath, args);
                cmd.description = 'compiling ' + input.fileName;
                cmd.highlight = 'compiler';
                cmd.silent = false;
                return cmd;
            }
        }
        Rule{
            multiplex: true
            inputs: ['obj']
            Artifact{
                fileTags:['elf']
                filePath: project.name + '.elf'
            }
            prepare:{
                var args = []
                args.push("-mcpu=cortex-m3")
                args.push("-mthumb")
                args.push("-g")
                args.push("-nostartfiles")
                args.push("-O0")
                args.push("-Wl,--gc-sections")
                for(i in inputs['obj'])
                    args.push(inputs["obj"][i].filePath);
                args.push("-Td:/work/workspace/uc/qbs_c/stm32f10x_flash.ld")
                args.push('-o');
                args.push(output.filePath);
                var compilerPath = "c:/development/gcc-arm/bin/arm-none-eabi-gcc.exe"
                var cmd = new Command(compilerPath,args);
                cmd.description = "linking"+project.name
                return cmd;
            }
        }
        Rule{
            inputs: ['elf']
            Artifact{
                fileTags:['hex']
                filePath: project.name + '.hex'
            }
            prepare:{
                var args = []
                args.push("-O")
                args.push("ihex")
                args.push(input.filePath)
                args.push(output.filePath)
                var hexcreator = "c:/development/gcc-arm/bin/arm-none-eabi-objcopy.exe"
                var cmd = new Command(hexcreator,args);
                cmd.description = 'create_hex'+project.name
                return cmd;
            }
        }
    }
}


Ошибки которые вылазят:
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)

error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)

error: unknown type name '__STATIC_INLINE'
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)

и в том же роде


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не работает прошивка после сборки с помощью qbs
СообщениеДобавлено: Сб фев 18, 2017 17:29:52 
Мучитель микросхем

Карма: 11
Рейтинг сообщений: 35
Зарегистрирован: Ср окт 15, 2008 09:33:03
Сообщений: 475
Откуда: Воронеж
Рейтинг сообщения: 0
В Вашем архиве то на что ругается объявлено вот так
static __INLINE void __enable_irq() { __ASM volatile ("cpsie i"); }

это эначит что h файлы откуда то берутся из другого места.
Попробуйте добавить явно -I опции для нужных каталогов.

кроме того можно самому набрать командную строку и поиграться


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Не работает прошивка после сборки с помощью qbs
СообщениеДобавлено: Сб фев 18, 2017 18:49:47 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Чт дек 29, 2011 16:25:56
Сообщений: 83
Рейтинг сообщения: 0
Спасибо, попробую, т.к. я понимаю, что где-то траблы с подключением хедеров. Сейчас читаю мануалы по qbs внимательно, посмотрю, может что и вычитаю :)


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Не работает прошивка после сборки с помощью qbs
СообщениеДобавлено: Чт фев 23, 2017 22:05:04 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Чт дек 29, 2011 16:25:56
Сообщений: 83
Рейтинг сообщения: 0
Переписал все заново без использования cpp-модуля, и сделал раздельную компиляцию для исходников си, c++ и asm. Все компилится, но собрать с помощью линкера arm-none-eabi-ld, делал через arm-none-eabi-gcc...при заливке в камень, снова молчит...уже не знаю куда копать...пните пожалуйста в нужном направлении...

Код:
import qbs

Project
{
    name: "stm32"

    Product
    {
        type: ["hex", "bin"]

        property string c_compilerPath: "c:/development/gcc-arm/bin/arm-none-eabi-gcc.exe"
        property string cpp_compilerPath: "c:/development/gcc-arm/bin/arm-none-eabi-g++.exe"
        property string asm_compilerPath: "c:/development/gcc-arm/bin/arm-none-eabi-as.exe"
        property string linkerPath: "c:/development/gcc-arm/bin/arm-none-eabi-ld.exe"
        property string objcpyPath: "c:/development/gcc-arm/bin/arm-none-eabi-objcopy.exe"

        Group
        {
            name: "source_cpp"
            prefix: "./"
            files: ["*.cpp"]
            fileTags: ["cpp"]
        }

        Group
        {
            name: "source_c"
            prefix: "./"
            files: ["*.c"]
            fileTags: ["c"]
        }

        Group
        {
            name: "source_asm"
            prefix: "./"
            files: ["*.s"]
            fileTags: ["asm"]
        }

        Rule
        {
            inputs: ["cpp"]

            Artifact
            {
                filePath: project.path + "/.obj/" + input.fileName + ".o"
                fileTags: ["obj"]
            }

            prepare:
            {
                var args = [];

                args.push("-mcpu=cortex-m3");
                args.push("-mthumb");
                args.push("-O0");
                args.push("--specs=nosys.specs");
                args.push("-finline-functions");
                args.push("-ffunction-sections");
                args.push("-fdata-sections");
                args.push("-fno-exceptions");
                args.push("-fno-unwind-tables");
                args.push("-fno-asynchronous-unwind-tables");
                args.push("-c");
                args.push("-DSTM32F10X_LD_VL");
                args.push(project.path + "/" + input.fileName);
                args.push("-o");
                args.push(project.path + "/.obj/" + output.fileName);

                var cmd = new Command(product.cpp_compilerPath, args);

                cmd.description = "compiling: " + input.fileName;
                cmd.highlight = "compiler";
                cmd.silent = false;

                return cmd;
            }
        }

        Rule
        {
            inputs: ["c"]

            Artifact
            {
                filePath: project.path + "/.obj/" + input.fileName + ".o"
                fileTags: ["obj"]
            }

            prepare:
            {
                var args = [];

                args.push("-mcpu=cortex-m3");
                args.push("-mthumb");
                args.push("-O0");
                args.push("--specs=nosys.specs");
                args.push("-finline-functions");
                args.push("-ffunction-sections");
                args.push("-fdata-sections");
                args.push("-fno-exceptions");
                args.push("-fno-unwind-tables");
                args.push("-fno-asynchronous-unwind-tables");
                args.push("-c");
                args.push("-DSTM32F10X_LD_VL");
                args.push(project.path + "/" + input.fileName);
                args.push("-o");
                args.push(project.path + "/.obj/" + output.fileName);

                var cmd = new Command(product.c_compilerPath, args);

                cmd.description = "compiling: " + input.fileName;
                cmd.highlight = "compiler";
                cmd.silent = false;

                return cmd;
            }
        }

        Rule
        {
            inputs: ["asm"]

            Artifact
            {
                filePath: project.path + "/.obj/" + input.fileName + ".o"
                fileTags: ["obj"]
            }

            prepare:
            {
                var args = [];

                args.push("-mcpu=cortex-m3");
                args.push("-mthumb");
                args.push("-c");
                args.push(project.path + "/" + input.fileName);
                args.push("-o");
                args.push(project.path + "/.obj/" + output.fileName);

                var cmd = new Command(product.asm_compilerPath, args);

                cmd.description = "compiling: " + input.fileName;
                cmd.highlight = "compiler";
                cmd.silent = false;

                return cmd;
            }
        }

        Rule
        {
            multiplex: true
            inputs: ["obj"]

            Artifact
            {
                filePath: project.path + "/bin/" + project.name + ".elf";
                fileTags: ["elf"]
            }

            prepare:
            {
                var args = [];

                args.push("-mcpu=cortex-m3");
                args.push("-mthumb");
                args.push("--specs=nosys.specs");
                args.push("-finline-functions");
                args.push("-ffunction-sections");
                args.push("-fdata-sections");
                args.push("-nostartfiles");
                args.push("-fno-exceptions");
                args.push("-fno-unwind-tables");
                args.push("-fno-asynchronous-unwind-tables");
                args.push("-T" + project.path + "/" + "stm32f10x_flash.ld");

                for(i in inputs["obj"])
                    args.push(inputs["obj"][i].filePath);

                args.push("-o");
                args.push(output.filePath);

                var cmd = new Command(product.c_compilerPath, args);

                cmd.description = "linking project: " + project.name;
                cmd.highlight = "linker";
                cmd.silent = false;

                return cmd;
            }
        }

        Rule
        {
            inputs: ["elf"]

            Artifact
            {
                filePath: project.path + "/bin/" + project.name + ".hex";
                fileTags: ["hex"]
            }

            prepare:
            {
                var args = [];

                args.push("-O");
                args.push("ihex");
                args.push(input.filePath);
                args.push(output.filePath);

                var cmd = new Command(product.objcpyPath, args);

                cmd.description = "convert to hex";
                cmd.highlight = "codegen";
                cmd.silent = false;

                return cmd;
            }
        }

        Rule
        {
            inputs: ["elf"]

            Artifact
            {
                filePath: project.path + "/bin/" + project.name + ".bin";
                fileTags: ["bin"]
            }

            prepare:
            {
                var args = [];

                args.push("-O");
                args.push("binary");
                args.push(input.filePath);
                args.push(output.filePath);

                var cmd = new Command(product.objcpyPath, args);

                cmd.description = "convert to bin";
                cmd.highlight = "codegen";
                cmd.silent = false;

                return cmd;
            }
        }
    }
}


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Не работает прошивка после сборки с помощью qbs
СообщениеДобавлено: Пт фев 24, 2017 08:38:58 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
предложу такой вариант
В рабочем проекте Embitz можно подсмотреть все опции компилятора и линкера, немножко через заднее крыльцо:
в настройках:
Изображение
посмотреть:
Изображение
и сравнить со своими.
з.ы. у Микрософта сейчас появился вполне неплохой редактор VS Code - в нем можно делать сборку, в принципе с любой системой сборки, и даже народ GDB отладку Армов прикручивает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не работает прошивка после сборки с помощью qbs
СообщениеДобавлено: Пт фев 24, 2017 12:05:15 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Чт дек 29, 2011 16:25:56
Сообщений: 83
Рейтинг сообщения: 0
Спасибо большое. Посмотрю, где я туплю...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y