Автор Тема: Orange Pi, основы программирования на калькуляторе(пока пусто)  (Прочитано 562 раз)

nifidor

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Я планирую скидывать сюда сведения которые возможно помогут будущим и нынешним "креаторам" овладевающим сим замечательным устройством.
Пока возможно здесь будет обзор костылей, которыми приходится пользоваться чтобы эта коробочка сверкала и мигала огоньками.
Ну и соответственно мне как очень коварному по природе человеку хотелось бы, чтобы читатели этой темы по возможности сами тоже пополняли эту тему постами, по возможности РЕДАКТИРУЯ уже ранее размещенные ими посты, чтобы тема не превращалась в многостраничное "добро", которое затрудняло бы освоение материала читателями.

Ну в общем чуточку истории о том как я пришел к этой фиговине:
В общем, мне трудно длительно и досконально читать книжки посвященные работе процессоров, микроконтроллеров, микропроцессоров и т.п., собственно, оно и не надо особо, ровно до тех пор пока ваша система работает и вовсе не глючит, если глючит - читаем мат.часть, благо нынешние разработчики железок все сильнее стараются отдалить пользователей от технической и физической составляющей подобных систем.  Я еще помню те времена, когда хотел сделать МП3 плеер из советских микросхем, и там была замечательная такая память с двумя видами питания +5В. и +12В, где +12В надо было подключать первым, чтобы ваша микруха памяти тут же не перегорела, она ещё и данные хранила и отдавала по одному  биту, я чуть мозг не сломал фантазируя цепочки цифровых преобразований для данных, а также возможные варианты распараллеливания этого замечательного процесса. Иногда я вообще мечтаю чтобы Atmel выпустили альтернативы своих фирменных AVR с RAM-диском, чтобы можно было быстро испытывать их работу в реально физической среде(да, я не знаком с полным ассортиментном их изделий, да, я не пользовался USB-программатором), а также множество инвариантов альтернативного применения данной особенности...но что-то я размечтался. Так вот, я приобрел сие чудо враждебной техники с целью открыть информационный Мир для своей бабушки..., ну, она малость повредила свое здоровье два года назад и стала не такой прыткой и веселой как ранее, нынешняя медицина оставляет желать лучшего, мне кажется они избавляются от свидетелей относительно хороших времен...ну так не об этом, в общем она за всю свою жизнь нигде не была, всю жизнь работала, и воспоминания, которые я слышу от неё, полны мрака...мне хотелось бы разбавить её бытие хорошими мыслями и воспоминаниями...короче, хочу сварганить ей компьютер, который она с трудом могла бы сломать, с достаточно простым пользовательским интерфейсом, можно сказать окошко в разноцветный мир. Познакомился я с этой темой через друзей, они прекрасно знают, что я люблю электричество, вернее все электрическое, сей опасный зверь, чарует меня возможностями которые он может дать, и в то же время пугает меня своей разрушительной силой, ну и снабженные этим знанием они часто кидают мне в личку в соц.сетях ссылки на разные оригинальные, и не очень, гаджеты, среди которых и была одна из моделей "Orange PI", тщательно осмотрев фотографию я обнаружил один из знакомых мне процессоров, нередко встречавшихся до этого мне в относительно дешевых сотовых телефонах..."Это же АРМ, те самые процы, про которые я читаю сейчас книжку..." - мысленно вскричал я, и был прав...ну я надеюсь. Тут же я вспомнил и про "Малинку", про которую ранее читал в новостях в интернете, и пару раз смотрел видео-...блоги, посвященные IT-индустрии с её участием, но цена у нее тогда была неподъемная для меня 120-300 долларов, и полное отсутствие локальной дистрибуции, поэтому я обошел этот милый проект стороной...я даже зарплату тогда получал не на карточку, а в кассе, и все эти покупки в интернете были для меня могучим источником опасности. В итоге я купил себе самый дешевый вариант из тех, которые я нашел на Али-Экспресс, Orange PI One, Н3, 512 МГб оперативы и с интернетовским интерфейсом. Фактический это сотовый, без ПЗУ-шки, экрана и GSM модуля...Мне понравился тот аспект, что между процессом написания кода и выполнением его на машине проходят считанные секунды, что в нем есть операция деления(нет, её отсутствие не является для меня существенной проблемой), и что в ней я могу программировать на очень элегантном для, возможно, не самых скиловых кодеров языке программирования - Си++(Си плюс-плюсе), с привычными для меня библиотеками и правилами, я плакал от счастья, пока не вспомнил, что все-таки ассемблер там чуточку другой. Далее, когда приехала плата, я запустил её, строжайшим образом проверил её на наличие недостатков высказанных недовольными покупателями в комментариях, с удовольствием обнаружил, что их нет, или "китайцы"(мне посылка шла вроде бы как из Финляндии, согласно отчетам почты России) слушают жалобы и исправляют недостатки в следующих ревизиях, или программеры в операционных системах задают настройки грамотнее, или мне просто повезло. Я предпочел поставить себе операционную систему линукс "OrangePI_Ubuntu_Vivid_Mate", так как там было написано, что включена поддержка встроенной видеокарты, ранее поставленный образец пугал судорожной и панической перерисовкой окошек при перемещении. Почитав сообщения на разных форумах, португальских, китайских, русских, и ещё каких-то, я понял что зажигать лапки, на которые можно подключить "рассыпную" периферию, можно и без установки специальных библиотек, изучения сложных и мутных интерфейсов, прочтения тысячестраничных "талмудов" и прочих "некрономиконов", просто с консоли, что я и благополучно опробовал на PA3 с помощью килоомного(1000 Ом) резистора и российского АЛ310(красный светодиод с мутным пластиком) соединенных последовательно на монтажной плате подключенных на землю микрокомпьютера. И действительно загорелась, помигала, и легло спать, дабы не расходовать моторесурс и электроэнергию.
В моем случае интерфейс пользователя открывался через привелигированную команду "SUDO -i"(команда запрашивает пароль пользователя админа или рута), и от админа менялись файлы: "/sys/class/gpio_sw/PA3/DATA" и "/sys/class/gpio_sw/PA3/CFG", - с помощью команды "ECHO 'параметр без кавычек, 0 или 1' >'имя файла с кусочком адреса без кавычек' "; где "PA3" - имя порта(конкретная ножка на гребенке), в системе представленное в виде папки, "gpio_sw" - папка с кучей интерфейсов реализованных в виде папок и видимо размещенных в оперативной памяти файлов, "CFG" - направление ввода конкретного пина, запись нуля(0) реализует чтение потенциала с ножки, а запись единицы(1) реализует вывод данных на неё, т.е. если 1 записано в "CFG", то при записи 1 в "DATA" у вас зажжется выбранная вами ножка,  на ней поднимется потенциал до ~3.3В, и если вы на нее повесили светодиод, то он загорится. Запись в "DATA" единицы автоматически сбрасывает настройку направления чтение с ножки (CFG перенастраивается на 1-цу) и ножка сама собой загорается, т.е. сразу перенастраивается с режима чтения на режим вывода, что в некоторых ситуациях очень даже удобно.
Я впервые пользуюсь линуксом(2-3 дня), и при этом я плохо дружу с английским языком. Я нашел, что все установленные пакеты(программы которые могут работать в операционной системе линукс) можно посмотреть в удобной программе Synaptic (у нее немного непонятная локализация, я не понял как можно произвести поиск среди установленных программ по ключевому слову, она искала везде, но так гораздо лучше чем в консоли пытаться угадать "...какая команда тебе нужна..."....замечу что она качает в основном с серверов эти самые пакеты), я попытался найти к какому пакету относится папка "GPIO_SW", но попытка не удалась, там было 1049 модулей с описанием на английском. Собственно мне был интересен тот аспект что ведь на ту гребенку можно повесить свои внешние устройства подчиненные только твоей собственной логике, а чтобы процессор напрасно не убивал ценнейшие такты было бы хорошо сделать пины с прерываниями, чтобы подчиненное устройство мягко дергало за плечо своего считающего собрата и просило быстро переговорить с ним. А чтобы знать как реализовать этот процесс надо знать хотя бы название интерфейса, чтобы найти на него инструкцию. Я перелазил пару десятков сайтов, самое толковое было на китайских сайтах, но я не разобрал что там было написано в комментариях...обжегся с "wiringOp/wiringPi", в разных статьях и так называемой "wiki" были написаны адреса разных репозиториев "GitHub-а", но ни один не работал. И именно поэтому я решил найти имя пакета к которому принадлежит папка "gpio_sw", но не знаю как... Боюсь, что многие любители, мечтатели, столкнувшись с подобными проблемами сначала припухнут, а потом забросят эту тему, мне не хотелось бы чтобы подобное случилось, и поэтому я решил разместить именно здесь свой пост, хотя возможно это и "отшиб мира",судя по обилию информации размещенной по данной теме на этом форуме, или она где-то в других рубриках "благоразумно" не продублирована в виде косвенных ссылок, тем дубликатов.
Конечно для меня не проблема написать собственный драйвер под конкретный линукс и конкретный процессор(у него не так много периферии и не такое великое разнообразие микросхем), но это отнимет некоторое время, и я хотел бы заняться этим чуть позднее.

Поэтому с огромнейшим удовольствием приму ваши советы, дорогие и не очень...читатели, по следующим вопросам и вытекающим из них темам:
1. Как узнать к какому пакету принадлежит тот или иной "класс"?
2. Являются ли данные классы кусочками определенной сборки линукса и как это распознать?
3. Что это за "GPIO_SW"?

Список вопросов будет, по возможности,  пополняться с ваших же слов и из моих находок, и насыщаться индексируемыми спойлерами с решениями(я надеюсь, что буду пополнять копилку знаний и развивать эту тему).
Также я надеюсь здесь есть адекватная возможность редактировать посты. Так как я здесь первый день и ничего не знаю про этот форум.)

Пожалуйста, если есть возможность, не засоряйте бессмысленными сообщениями и дополняйте свои предыдущие комментарии новыми сведениями с простановкой даты, все будет прочитано и труд будет сколлектирован в первом посте, так как тема задумывается как подробная инструкция для тех кто уже поставил ОСь, но пока не знает что с этим всем делать.
Если это вам согреет душу, я лично запишу в блокнотик ник-нэйм каждого сделавшего разумный вклад.
« Последнее редактирование: 09 ПЭТРам 2017, 07:57:02 от nifidor »