Jump to content
    

Search the Community

Showing results for tags 'gcc'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Сайт и форум
    • Новости и обсуждения сайта и форума
    • Другие известные форумы и сайты по электронике
    • В помощь начинающему
    • International Forum
    • Образование в области электроники
    • Обучающие видео-материалы и обмен опытом
  • Cистемный уровень проектирования
    • Вопросы системного уровня проектирования
    • Математика и Физика
    • Операционные системы
    • Документация
    • Системы CAD/CAM/CAE/PLM
    • Разработка цифровых, аналоговых, аналого-цифровых ИС
    • Электробезопасность и ЭМС
    • Управление проектами
    • Neural networks and machine learning (NN/ML)
  • Программируемая логика ПЛИС (FPGA,CPLD, PLD)
    • Среды разработки - обсуждаем САПРы
    • Работаем с ПЛИС, области применения, выбор
    • Языки проектирования на ПЛИС (FPGA)
    • Системы на ПЛИС - System on a Programmable Chip (SoPC)
    • Methods and tools for FPGA/ASIC verification
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCU)
    • Cредства разработки для МК
    • ARM
    • RISC-V
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
    • Пайка и монтаж
    • Корпуса
    • Вопросы надежности и испытаний
  • Аналоговая и цифровая техника, прикладная электроника
    • Вопросы аналоговой техники
    • Цифровые схемы, высокоскоростные ЦС
    • RF & Microwave Design
    • Метрология, датчики, измерительная техника
    • АВТО электроника
    • Умный дом
    • 3D печать
    • Робототехника
    • Repair and debug
  • Силовая электроника - Power Electronics
    • Силовая Преобразовательная Техника
    • Обратная Связь, Стабилизация, Регулирование, Компенсация
    • Первичные и Вторичные Химические Источники Питания
    • Высоковольтные Устройства - High-Voltage
    • Электрические машины, Электропривод и Управление
    • Индукционный Нагрев - Induction Heating
    • Системы Охлаждения, Тепловой Расчет – Cooling Systems
    • Моделирование и Анализ Силовых Устройств – Power Supply Simulation
    • Компоненты Силовой Электроники - Parts for Power Supply Design
  • Интерфейсы
    • Форумы по интерфейсам
  • Поставщики компонентов для электроники
    • Поставщики всего остального
    • Компоненты
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
    • Обсуждение Майнеров, их поставки и производства
  • Дополнительные разделы - Additional sections
    • Встречи и поздравления
    • Ищу работу
    • Предлагаю работу
    • Куплю
    • Продам
    • Объявления пользователей
    • Общение заказчиков и потребителей электронных разработок

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город


Код проверки


skype


Facebook


Vkontakte


LinkedIn


Twitter


G+


Одноклассники

Found 0 results

  1. Все уверены, что тинька 13A это улучшенная 13 модель. Но я столкнулся с тем, что проверенная на Протеусе программа не очень-то работает в железе. Выяснилось, что значения битов ACD0D-ADC3D регистра DIDR0 в даташитах 13 и 13А имеют разное значение. Для даташита tiny13 и стандартных файлов определений С и Ассемблера(iotn13.h, iotn13a.h, tn13def.inc, tn13adef.inc) для 13 и 13А у них значения одинаковые: DIDR0 bits .equ ADC1D = 0x2 .equ ADC3D = 0x3 .equ ADC2D = 0x4 .equ ADC0D = 0x5 В avr.DLL Ptoteus'a тоже нет разницы для 13 и 13а и все работает как часы. Тогда как в официальном datasheet (!!! еще c сайта ATMEL !!!) обнаружил,что в даташите на ATTiny13a в описании регистров в 3х местах указано DIDR0 bits .equ ADC0D = 0x2 .equ ADC1D = 0x3 .equ ADC2D = 0x4 .equ ADC3D = 0x5 Вот сколка с даташита: 14.12.5 DIDRO - Digital Input Disable Register О Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | - | - | ADC3D|ADC2D|ADC1D|ADCOD|AIN1D|AINOD| Read/Write R R R/W R/W R/W R/W R/W R/W Initial Value 00000000 • Bits 5:2 - ADC3D:ADC0D: ADC3:0 Digital Input Disable When a bit is written logic one, the digital input buffer on the corresponding ADC pin is disabled. The corresponding PIN register bit will always read as zero when this bit is set. When an analog signal is applied to the ADC7..0 pin and the digital input from this pin is not needed, this bit should be written logic one to reduce power consumption in the digital input buffer. А жертвой как раз стали каналы ADC1 и ADC3, посколку после запрета подтяжки установкой битов в 1 попавшие под раздачу биты порта PINB всегда читаются как 0. И нажатие кнопки не регистрируется. Где правда?
  2. Здравствуйте! Пытаюсь разобраться как использовать функции на C для отладки модуля на Verilog. Технология PLI - Programming Language Interface Имеется описание технологии как в документации к Verilog так и к Modelsim Имеется стандартный пример C:\intelFPGA_lite\18.0\modelsim_ase\examples\verilog\pli\fibonacci Пример запускается через tcl-скрипт. В этом скрипте вызывается другой скрипт конфигурации С. Его у меня нет. Приведу полный путь к этому скрипту: C:/intelFPGA_lite/18.0/modelsim_ase/examples/c_windows/setup/setup_compiler_and_linker_paths_mingwgcc.tcl если у кого есть, поделитесь пожалуйста в нём должно быть инициализация следующих переменных, из кода видно: eval $CC fibonacci_pli.c eval $LD fibonacci.$ext fibonacci_pli.o $MTIPLILIB
  3. Добрый день! Что бы передать внутрь ассемблерной вставки половинки 64-битной переменной, использую union, примерно вот так: union u_i64 { int64_t i64; int32_t i32[2]; }; int64_t mul64(int32_t m1, int32_t m2) { register union u_i64 ret; asm volatile ( "smull %0, %1, %[m2], %[m1] \n" : "=r" (ret.i32[0]), "=r" (ret.i32[1]) : [m1] "r" (m1), [m2] "r" (m2) ); return ret.i64; } Но хотелось бы, что бы можно было на входе/выходе asm'а указывать непосредственно половинки большой переменной, что-то вроде "res.H" и "res.L". Или объявлять переменную с явным указанием пары регистров, примерно как register uint64_t res asm ("r0:r1"), тогда можно было бы скормить указанную пару r0 и r1. Беглый просмотр документации ответа не дал. Это вообще возможно? Заранее благодарю за ответ. Компилятор arm-none-eabi-gcc 5.4.1 из состава embitz 1.11, проект для Cortex-M3, если что.
  4. Для теста собрал один свой проект с разными ключами компиляции, и обнаружил вот это, а происходит оно при компиляции вот такого кода (сократил до минимального) с ключами "-O3 -flto -g3 -pipe" компилятором armv7m-none-eabi-gcc (11.2.0 (Gentoo 11.2.0 p1)), void irq_USART3() { union { //u32_t q[2]; char xC; } u; if (xQueueReceiveFromISR(hal_USART.queue_TX, &u.xC, NULL) == pdTRUE) { USART3->DR = u.xC; } } На других уровнях оптимизации предупреждений нет, так же проверял clang (12.0.1) ни с каким уровнем оптимизации предупреждений нет. Исходно там была одиночная переменная типа char, но в процессе поиска причины сделал union. Если размер этого union будет 8 байт (элемент q[2]) то компиляция проходит без предупреждений. Хотел так же посмотреть итоговый код после компиляции, но на -O3 он подставляет все внутренности freertos и разобрать там что либо сложно. Воспроизвести проблему с помощью лишь вызова memcpy (без freertos) пока не удаётся. В чем причина не понял, видимо связана с выравниванием стека на 8 байт.
  5. Добрый день. Увидел разницу в работе атрибута у разных компиляторов. typedef struct __attribute__((packed)) { uint8_t a; uint8_t b; uint8_t c; float d; } str; gcc сразу упаковал в 7 байт. MinGW в 8 байт, т.е. ему пришлось принудительно указать выравнивание по 1 байту. Собственно где то можно подсмотреть по каким границам gcc выравнивает данные по умолчанию?
  6. Доброго времени суток! Пытаюсь запустить FreeRTOS на NUC980 на отладочной плате NuMaker-Server-NUC980 (https://www.nuvoton.com/products/iot-solution/iot-platform/numaker-server-nuc980/). В репозитории NUC980_NonOS_BSP есть пример проекта (https://github.com/OpenNuvoton/NUC980_NonOS_BSP/tree/master/SampleCode/FreeRTOS). Проект собранный в Keil запускается и работает без проблем. Стартует и в отладке и при записи на SPI NAND Flash. Проблемы возникли c запуском прошивки собранной с помощью GCC. Если загрузить образ используя NuWriter в ОЗУ, то он стартует и работает нормально, а вот если его записать во Flash, то он стартует и работает до первого отключения питания платы. Если после подачи питания на плату выполнить соединение с NuWriter, при этом ни чего не загружать в контроллер, а просто перевести его в режим загрузки с SPI NAND переключателем на плате и нажать кнопочку reset, то образ, ранее записанный во Flash начинает запускаться нормально (до следующего сброса питания). Так же образ GCC если перед этим запустить любым из доступных способов образ собранный в Keil. Т.е. отличия, скорее всего, заключаются в начальной инициализации. Стартапы Keil и GCC отличаются тем, что для GCC инициализация векторов прерываний и очистка секции bss выполняется в в самом стартапе, а для keil это делается процедурой __main. GCC startup.S: Keil startup.s: При отладке вижу следующее: Запускается Scheduler FreeRTOS и передает управление первой задаче vCheckTask. В этой задаче вызывается vTaskDelayUntil(). Отработав,vTaskDelayUntil() вызывает portYIELD_WITHIN_API() (task.c строка 1275), т.е. `asm volatile ("SWI 0\n"`. Но вместо прерывания по вектору SWI_Handler (vPortYieldProcessor) вызывается прерывание по вектору Undef_Handler. Подскажите, пожалуйста куда копать.
  7. Доброго времени суток. Такой вопрос. Необходимо к текущему времени в RTC добавить интервал времени. При этом произвести учет даты с учетом количества дней в месяце и высокосного года.
  8. Спроектирую, отлажу небольшие электронные устройства на микроконтроллерах pic, AVR, stm32. Проекты выполняю использую инструменты open source. А также полностью передаю исходники и права на проект заказчику. Также занимаюсь монтажом печатных плат.
  9. Добрый день! Запустил вывод картинки на дисплей и вывод звука через встроенный кодек МК Allwinner A13 под голое железо(без ОС и прочего). Обнаружилась проблема: если активно работать с видео, то обработчик прерывания воспроизведения звука звука завешивает процессор в Abort. Код выполняется с внешней памяти с адреса 0x40000000. MMU , кеширование, предсказание ветвления включены. crt0.s приводил к повисанию, libc не инициализирована. Пришлось сочинять свой стартап. Может что-то упустил. Звук через Normal DMA, канал 0. Прерывания по опустошению половины- и полного- буфера. Буфер выравнен на 32 байта. Буфер некешируем, но буферизован (MMU). Буфер во внешней DDR памяти. Видео: одна поверхность через TCON0, рендерер - composer. Используется анимация изображения, для отрисовки делал 2 варианта: 1) во время обратного хода луча по кадру - переключаю адрес памяти отображения буфера. Показываю буфер-1, рисую в буфере-2. Затем наоборот. 2) во время обратного хода луча по кадру - через Shared DMA(канал 0) перевидываю с заднего буфера в отображаемый буфер. Обратный ход луча по кадру проверяю через GPIO (просто завёл сигнал с VSYNC на свободный пин), так как прерывание по VBLANK не совсем удобно, так как там уже звук. Доступен один вектор -IRQ. Остальные - исключения, SWI и FIQ (который жестко привязан к NMI). В обработчике прерывания от "звукового DMA" пишу единицы в соответствующие биты регистра состояния (подтверждение прерывания). По отдельности видео и звук работают, но одновременно - зависает! Компилирую всё это дело тулчейном GCC-ARM-NONE-EABI v.9. По линковщику вопрос. Использую C++, new/delete, malloc/free. Вроде настроил всё правильно - адреса из кучи выделяются. Если несложно, скиньте пожалуйста скрипт lds для GCC, который был бы настроен на фиксированный адерес, и в котором можно задавать размер: стека, кучи, bss и прочего. Ниже скрипт для линковщика:
×
×
  • Create New...