Jump to content
    

Search the Community

Showing results for tags 'asm'.

  • 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. Добрый день всем. Есть простая программка: .global _start _start: _read: @ read syscall MOV R7, #3 @ Syscall number MOV R0, #0 @ Stdin is keyboard MOV R2, #1 @ read one character only LDR R1,=string @ string at string: SVC 0 _togglecase: LDR R0, [R1] @ load it into R0 ORR R0, R0, #0x20 @ change case STR R0, [R1] @ write char back _write: @ write syscall MOV R7, #4 @ Syscall number MOV R0, #1 @ Stdout is monitor MOV R2, #2 @ string is 2 char long(+ пробел) SVC 0 _exit: MOV R7, #1 все работает вроде как надо, те вводим букву в вернем регистре, получаем в нижнем. Суть: 1 вопрос - почему код выхода $echo $? 2 а не 1(последнее, что было в R0). " вопрос - почему оболочка как-бы дважды отрабатывает выход из дочернего процесса и дважды генерирует приглашение командной строки? pi@raspberrypi:~/cods/upper_case $ ./upper A a pi@raspberrypi:~/cods/upper_case $ pi@raspberrypi:~/cods/upper_case $ Заранее спасибо за конкретные ответы или точные указания, как их получить. PS в коде,конечно, в конце стоит .data string: .ascii " \n"
  2. Добрый день. Пробую простенькую программку .global main main: MOV R0, #100 LDR R1, =0xABCD876 STR R1, [R0] LDRB R2, [R0, #1] MOV R0, #0 MOV R7, #1 svc 0 при запуске ее в gdb получаю ошибку, указанную в теме и не пойму, в чем дело. На борту имею : PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)" Помогите разобраться.
  3. Доброго времени суток! У меня появилось два вопроса, но по сути своей они относительно близки, опубликую их вместе. 1. Для целей обучения хотел написать программу на ассемблере, но только чтобы в процедуру __main программа заходила после инициализации (т.е. после startup/system). Попытался добавить в свой main.s эти файлы с помощью INCLUDE/GET - выдаёт ошибки (изображение 1). Подскажите, как решить вопрос? 2. В проекте main.cpp не видит исполняемые файлы при компиляции, судя по ошибке (рисунок 2). Делал следующее: - Пути проверял на наличие кириллицы, сейчас там только пробелы - не помогает, если убрать и их - не помогает - Добавлял директиву USE_STDPERIPH_DRIVER, указывал вручную пути к библиотекам - не помогает. - Пробовал добавлять в программу все библиотеки вручную в main.cpp - не помогает - Запускал из разных каталогов - не помогает Все библиотеки из SPL, которая лежит там, где должна лежать после установки, среда их прекрасно видит, отображает в интерфейсе, позволяет открыть и просмотреть. Объектные o. файлы после компиляции в папке проекта есть. В чем же дело? Заранее благодарен за ответы!
  4. Оплачу создание патча драйвера PCI устройства. Драйвер программирует GPIO устройства PCI6152, но корректно работает только в слоте с IDSEL=AD16. Нужен патч чтобы оно начало работать в другом слоте, хотя бы вручную править бинарник под каждый слот. В личку. p.s. есть исходинк драйвера для win9x (который корректно работает). там функция выглядит так: if (FindGPIODevice(0x00213388, dwNapalmBus, &dwBus, &dwDevFunc)) { isGPIOInit = 1; pGPIOMask->Data.dwBus = pGPIOMask->Clk.dwBus = pGPIOMask->Strobe.dwBus = dwBus; pGPIOMask->Data.dwDevFunc = pGPIOMask->Clk.dwDevFunc = pGPIOMask->Strobe.dwDevFunc = dwDevFunc; pGPIOMask->Data.RN = 0xC4; pGPIOMask->Data.dInMask = (DWORD)0x0100; pGPIOMask->Data.dInShift = (DWORD)0x08; pGPIOMask->Data.dOutMask = (DWORD)0x0400; pGPIOMask->Data.dOutShift = (DWORD)0x0A; pGPIOMask->Clk.RN = (DWORD)0xC4; pGPIOMask->Clk.dInMask = (DWORD)0x010000; pGPIOMask->Clk.dInShift = (DWORD)0x10; pGPIOMask->Clk.dOutMask = (DWORD)0x040000; pGPIOMask->Clk.dOutShift = (DWORD)0x12; pGPIOMask->Strobe.RN = (DWORD)0xC4; pGPIOMask->Strobe.dInMask = (DWORD)0x1000; pGPIOMask->Strobe.dInShift = (DWORD)0x0C; pGPIOMask->Strobe.dOutMask = (DWORD)0x4000; pGPIOMask->Strobe.dOutShift = (DWORD)0x0E; pGPIOMask->HiVoltage.RN = (DWORD)0xC4; pGPIOMask->HiVoltage.dInMask = (DWORD)0x100000; pGPIOMask->HiVoltage.dInShift = (DWORD)0x14; pGPIOMask->HiVoltage.dOutMask = (DWORD)0x400000; pGPIOMask->HiVoltage.dOutShift = (DWORD)0x16; // Enable all GPIO as Output dwData = PCI_Read_Config(dwBus, dwDevFunc, 0xC4); dwData &= 0xFF0000FF; // C7C6C5C4 dwData |= 0x00222200; PCI_Write_Config(dwBus, dwDevFunc, 0xC4, dwData); } p.p.s. другими словами, не работает устройство как должно, если его номер на шине не 00. т.е. это нули жестко прописаны. если предположить что функция в драйвере для win2k/xp такая же как для win9x, то это последний параметр. ну или что-то очень похожее.
  5. Добрый день. Продолжаю осваивать чип Allwinner V3s. Столкнулся с таким фактом. Нужно сделать переброс "память-память" самым наискорейшим способом, который возможен. Начал ковырять DMA и обнаружил несколько малоприятных вещей: 1) DMA не поддерживает переменные шаги приращения. Только программирование через дескрипторы. 2) Тактовая частота работы DMA всего 200 МГц !!! В сорцах линукса зачем-то для тактовой DMA используют AHB, которая получается делением на 2 частоты ядра: 1200/2 = 600 МГц. Затем эти 600 МГц делятся ещё на 3 для DMA. В итоге выходит всего-навсего 200 МГц. Таким DMA полезно делать только подкачку аудио-данных при воспроизведении или записи звука. Или ещё что-нибудь свя занное с забором-выводом данных в периферию! Для быстрого коприрования память-память не подходит! А теперь о хорошем! Если копировать с помощью инструкций NEON: void MEMCPY(u8 *dst,u8 *src,u32 size) { asm volatile( "1: \n" "VLDM %[src]!,{d0-d7} \n" "VSTM %[dst]!,{d0-d7} \n" "SUBS %[size],%[size],#0x40 \n" "BGT 1b \n" : [dst]"+r"(dst), [src]"+r"(src), [size]"+r"(size) : : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "cc", "memory" ); } то скорость получается самая максимальная. Если битовое поле TEX выставить равным "001", то получим ещё более высокий прирост в скорости (+20 %): //VIDEO MEMORY i=61; mmu_tlb_address[i + (dram_base>>20)] = (dram_base + (i << 20)) | (0 << 19) | (0 << 18) | (0 << 17) | (0 << 16) | (0 << 15) | (1 << 12) | //TEX (3 << 10) | (0 << 9) | (15 << 5) | (0 << 4) | (0 << 3) | //Cache (1 << 2) | //Buffer (2 << 0); При этом бит кеширования в дескрипторе приёмника в MMU-таблице должен быть выключен! Если его включить в приемнике, то скорость просядет. Тоесть: приемник: TEX=1, C=0, B=1 источник: TEX=0, C=1, B=1 При таком раскладе выходит около 8000 FPS при копировании буфера 240 x 160 x 16 бит. (ядро 1200 МГц, память 456 МГц ). С DMA выходит в 8 раз меньше! Если увеличить частоту DMA в 2,3 раза, то скорость нисколько не увеличивается. Действительно ли с DMA всё так печально, или есть способ его заставить работать быстрее?
  6. Уважаемое сообщество, помогите пожалуйста. Тема: передача параметров в подпрограмму на ассемблере. Головная программа z2c.c вызывает подпрограмму z2a.asm, которая копирует строку из второго аргумента в 1-й. Пока аргументов было 3, всё работало. После добавления 4-го, программа валится см. z2.log. Если закоментировать в подпрограмме (z2a_.asm:17) извлечение 4-го аргумента - подпрограмма исполняется. Куда смотреть и где копать? Makefile
×
×
  • Create New...