Предоставленная Imagination Technologies документация на MIPSfpga очень хорошо и подробно описывает развертывание Linux. Но используемая при этом система на кристалле построена с помощью Xilinx-специфических периферийных модулей. Потому ее повторение на отладочной плате с ПЛИС Altera в исходном виде представляется невозможным. Решением является система на кристалле MIPSfpga-plus с ее платформонезависимой периферией. О том, как запустить на ней Linux, читайте в этой статье.
Рубрика «C» - 59
Поднимаем Linux на MIPSfpga и ПЛИС Altera
2017-07-22 в 21:56, admin, рубрики: C, fpga, mips, MIPS microAptiv UP, MIPSfpga, SoC, Verilog, Анализ и проектирование систем, программирование микроконтроллеров, системное программированиеТекущая активность вокруг MIPSfpga и не только
2017-07-19 в 17:27, admin, рубрики: C, fpga, mips, MIPS microAptiv UP, MIPSfpga, SoC, Verilog, Анализ и проектирование систем, программирование микроконтроллеров, системное программированиеЕсть несколько событий и тем, которыми хотелось бы поделиться с сообществом. По-хорошему, по каждой можно писать отдельную статью, но общий дефицит времени заставляет немного схалтурить. Наши сегодняшние темы:
- релиз MIPSfpga 2.0;
- процессор schoolMIPS и Летняя школа юных программистов в Новосибирске;
- школа-семинар по цифровому дизайну и компьютерной архитектуре в Томске;
- запуск ванильного ядра Linux на MIPSfpga-plus;
- поддержка АЦП Altera MAX10 в MIPSfpga-plus;
- логотип MIPSfpga-plus.
Если тематика MIPSfpga-plus вам не безразлична, то в конце есть небольшой опрос на тему чего мне писать (или не писать) следующую статью. Ваш выбор поможет мне сориентироваться и расставить приоритеты. Welcome!
Динамическая инструментация — не просто, а тривиально*: пишем yet another инструментацию для American Fuzzy Lop
2017-07-19 в 14:26, admin, рубрики: afl, american fuzzy lop, C, DynamoRIO, open source, динамическая инструментация, инструментация, системное программирование, метки: afl, american fuzzy lop, DynamoRIO, динамическая инструментация, инструментация(*) На самом деле, не совсем.
Наверное, многие слышали про Valgrind — отладчик, который может сказать, где в вашей нативной программе утечка памяти, где ветвление зависит от неинициализированной переменной и многое другое (а ведь кроме memcheck, у него есть и другие режимы работы). Внутри себя эта чудо-программа перемалывает нативный код в некий промежуточный байткод, инструментирует его и генерирует новый машинный код — уже с run-time проверками. Но есть проблема: Valgrind не умеет работать под Windows. Когда мне это понадобилось, поиски привели меня к аналогичной утилите под названием DrMemory, также с ней в комплекте был аналог strace
. Но речь не столько о них, сколько о библиотеке динамической инструментации, на базе которой они построены, DynamoRIO. В какой-то момент я заинтересовался этой библиотекой с точки зрения написания собственной инструментации, начал искать документацию, набрёл на большое количество примеров и был поражён тем, что простенькую, но законченную инструментацию вроде подсчёта инструкций вызова можно написать буквально в 237 строк сишного кода, 32 из которых — лицензия, а 8 — описание. Нет, это, конечно не "пишем убийцу Valgrind в 30 строк кода на JavaScript", но сильно проще, чем то, что можно представить для подобной задачи.
В качестве примера давайте напишем уже четвёртую реализацию инструментации для фаззера American Fuzzy Lop, о котором недавно уже писали на Хабре.
С-С++ на Linux в Visual Studio Code для начинающих
2017-07-19 в 6:37, admin, рубрики: C, c++, linux, microsoft, Visual Studio, visual studio code, Блог компании Microsoft, Разработка под Linux, С++Давайте начистоту, мало кто использует отладчик GDB на Linux в консольном варианте. Но что, если добавить в него красивый интерфейс? Под катом вы найдёте пошаговую инструкцию отладки кода С/С++ на Linux в Visual Studio Code.
Поговорим о микрооптимизациях на примере кода Tizen
2017-07-17 в 7:02, admin, рубрики: C, c/c++, c++, open source, pvs-studio, tizen, tizen os, Блог компании PVS-Studio, код, микрооптимизация, оптимизация кода, оптимизация программ, разработка операционных систем, Разработка под Tizen, рефакторинг, Си, си/си++, статический анализ кода
Как правило, при обсуждении диагностических возможностей PVS-Studio за кадром остаются рекомендации, выдаваемые анализатором по поводу микрооптимизаций Си и Cи++ кода. Конечно, микрооптимизации не так важны, как диагностики выявляющие ошибки, но про них тоже интересно поговорить.
Читать полностью »
Ссылочная TCP-IP стеганография
2017-07-13 в 12:22, admin, рубрики: C, информационная безопасность, криптография, ненормальное программирование, Программирование, Разработка систем связи, СтеганографияTCP-стеганография не является чем-то принципиально новым, например Джон Торакис в 2016 году реализовывал на Питоне довольно интересные вещи, жаль не все они есть в открытом доступе. Не была она принципиально новой и на момент написания статей Торакисом. Вот пост на Хабре 2009 года, описывающий идею и, например, программа Covert_TCP далекого (а может и не очень) 1996 года, написанная на чистом Си и реализующая довольно тонкие настройки.
Если Covert TCP предлагает передавать по одному байту полезной нагрузки в TCP пакете, Торакис использовал от 2 до 6 байт на пакет и предложил идею создания протокола в протоколе. Но даже таким образом затруднительно передать большие массивы данных.
Тут на помощь может прийти система одноразовых сообщений. Действительно, почему бы не объединить 2 подхода, раз они изобретены до нас?
27000 ошибок в операционной системе Tizen
2017-07-12 в 8:13, admin, рубрики: bugs, C, c/c++, c++, open source, pvs-studio, Samsung, static code analysis, static code analyzer, tizen, tizen os, аудит кода, Блог компании PVS-Studio, операционная система, открытая ос, ошибки в коде, Разработка под Tizen, Си, си/си++, системное программирование, статический анализ кода, статический анализатор кода
Эта статья продемонстрирует, что при разработке крупных проектов статический анализ кода является не просто полезным, а совершенно необходимым элементом процесса разработки. Я начинаю цикл статей, посвященных возможности использования статического анализатора кода PVS-Studio для повышения качества и надежности операционной системы Tizen. Для начала я проверил небольшую часть операционной системы (3.3%) и выписал около 900 предупреждений, указывающих на настоящие ошибки. Если экстраполировать результаты, то получается, что наша команда способна выявить и устранить в Tizen около 27000 ошибок. По итогам проведённого исследования я подготовил презентацию, которая предназначалась для демонстрации представителям Samsung и была посвящена возможному сотрудничеству. Встреча перенесена на неопределённый срок, поэтому я решил не тратить время и трансформировать материал презентации в статью. Запасайтесь вкусняшками и напитками, нас ждёт длинный программистский триллер.
Читать полностью »
Как я нашёл баг в процессорах Intel Skylake
2017-07-06 в 12:24, admin, рубрики: C, caml, hyper-threading, ocaml, Skylake, Компиляторы, отладка, Тестирование IT-системИнструкторы курсов «Введение в программирование» знают, что студенты находят любые причины для ошибок своих программ. Процедура сортировки отбраковала половину данных? «Это может быть вирус в Windows!» Двоичный поиск ни разу не сработал? «Компилятор Java сегодня странно себя ведёт!» Опытные программисты очень хорошо знают, что баг обычно в их собственном коде, иногда в сторонних библиотеках, очень редко в системных библиотеках, крайне редко в компиляторе и никогда — в процессоре. Я тоже так думал до недавнего времени. Пока не столкнулся с багом в процессорах Intel Skylake, когда занимался отладкой таинственных сбоев OCaml.
Первое проявление
В конце апреля 2016 года вскоре после выпуска OCaml 4.03.0 один Очень Серьёзный Индустриальный Пользователь OCaml (ОСИП) обратился ко мне в частном порядке с плохими новостями: одно из нших приложений, написанное на OCaml и скомпилированное в OCaml 4.03.0, падало случайным образом. Не при каждом запуске, но иногда вылетал segfault, в разных местах кода. Более того, сбои наблюдались только на их самых новых компьютерах, которые работали на процессорах Intel Skylake (Skylake — это кодовое название последнего на тот момент поколения процессоров Intel. Сейчас последним поколением является Kaby Lake).
За последние 25 лет мне сообщали о многих багах OCaml, но это сообщение вызывало особенное беспокойство. Почему только процессоры Skylake? В конце концов, я даже не мог воспроизвести сбои в бинарниках ОСИПа на компьютерах в моей компании Inria, потому что все они работали на более старых процессорах Intel. Почему сбои не воспроизводятся? Однопоточное приложение ОСИПа делает сетевые и дисковые операции I/O, так что его выполнение должно быть строго детерминировано, и любой баг, который вызвал segfault, должен проявлять себя при каждом запуске в том же месте кода.
Читать полностью »
Одинарная или двойная точность?
2017-06-28 в 8:31, admin, рубрики: C, double, float, двойная точность, математика, одинарная точность, плавающая запятая, плавающая точка, ПрограммированиеВведение
В научных вычислениях мы часто используем числа с плавающей запятой (плавающей точкой). Эта статья представляет собой руководство по выбору правильного представления числа с плавающей запятой. В большинстве языков программирования есть два встроенных вида точности: 32-битная (одинарная точность) и 64-битная (двойная точность). В семействе языков C они известны как float
и double
, и здесь мы будем использовать именно такие термины. Есть и другие виды точности: half
, quad
и т. д. Я не буду заострять на них внимание, хотя тоже много споров возникает относительно выбора half
vs float
или double
vs quad
. Так что сразу проясним: здесь идёт речь только о 32-битных и 64-битных числах IEEE 754.
Статья также написана для тех из вас, у кого много данных. Если вам требуется несколько чисел тут или там, просто используйте double
и не забивайте себе голову!
Статья разбита на две отдельные (но связанные) дискуссии: что использовать для хранения ваших данных и что использовать при вычислениях. Иногда лучше хранить данные во float
, а вычисления производить в double
.
Читать полностью »