GeneralProger 0 16 июля, 2016 Опубликовано 16 июля, 2016 · Жалоба Здравствуйте! Заранее предупреждаю, что это первый раз когда я имею дело с микрокомпьютерами, раньше работал только с AVR и для меня тема программирования из под Linux темный лес, так что прошу сильно не бить, если я написал не туда или задаю очевидные/глупые/неправильно сформулированные вопросы. Имеется плата http://wiki.embeddedarm.com/wiki/TS-5300, хочу использовать ее как Arduino (т.е. иметь возможность подавать и снимать питание с определенных ножек), почитав в интернете конкретно про такой тип микрокомпьютеров я примерно предположил что под мои цели на данной плате могут подойти выходы DIO1 и DIO2. Как вообще к ним обратиться из под Linux и задать им какое-то состояние? Нашел в интернете какие-то примеры обращения через файл /sys/dio, но в версии Linux которая стоит на этом микрокомпьютере не то что такого файла нету, папка sys вообще не существует. Что мне делать что бы выполнить хотя бы такую задачу и вообще возможно ли это? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 33 16 июля, 2016 Опубликовано 16 июля, 2016 (изменено) · Жалоба Здравствуйте! Заранее предупреждаю, что это первый раз когда я имею дело с микрокомпьютерами, раньше работал только с AVR и для меня тема программирования из под Linux темный лес, так что прошу сильно не бить, если я написал не туда или задаю очевидные/глупые/неправильно сформулированные вопросы. Имеется плата http://wiki.embeddedarm.com/wiki/TS-5300, хочу использовать ее как Arduino (т.е. иметь возможность подавать и снимать питание с определенных ножек), почитав в интернете конкретно про такой тип микрокомпьютеров я примерно предположил что под мои цели на данной плате могут подойти выходы DIO1 и DIO2. Как вообще к ним обратиться из под Linux и задать им какое-то состояние? Нашел в интернете какие-то примеры обращения через файл /sys/dio, но в версии Linux которая стоит на этом микрокомпьютере не то что такого файла нету, папка sys вообще не существует. Что мне делать что бы выполнить хотя бы такую задачу и вообще возможно ли это? Первое - читайте документацию на ваш компьютер. Это не АРМ, а стандартный х86 процессор. Второе - Линукс с "пол-оборота" не осваивается, это достаточно сложная система, по сравнению с АВР программированием. Третье - Не вижу смысла в данной задаче вообще его использовать, у вас РС-совместимая машина, берете любой компилятор, на вроде Watcom C, под MS-DOS и пишите свою прогу. Если нужно много памяти, используйте dos-4gw. Ну и напоследок - если уж все-таки хотите влезть в линукс - сначала почитайте о нем по-подробнее... Изменено 16 июля, 2016 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1113 5 16 июля, 2016 Опубликовано 16 июля, 2016 · Жалоба какая версия ядра? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeneralProger 0 16 июля, 2016 Опубликовано 16 июля, 2016 (изменено) · Жалоба Первое - читайте документацию на ваш компьютер. Это не АРМ, а стандартный х86 процессор. Второе - Линукс с "пол-оборота" не осваивается, это достаточно сложная система, по сравнению с АВР программированием. Третье - Не вижу смысла в данной задаче вообще его использовать, у вас РС-совместимая машина, берете любой компилятор, на вроде Watcom C, под MS-DOS и пишите свою прогу. Если нужно много памяти, используйте dos-4gw. Ну и напоследок - если уж все-таки хотите влезть в линукс - сначала почитайте о нем по-подробнее... Может я конечно чего-то не понимаю, но я почитал wiki по ссылке которая ведет на этот компьютер, а документации по разработке на них не увидел. А относительно MS-DOS тема для меня еще менее ясная чем linux, туда мне лезть еще более страшней. Я пытался найти какую-то информацию, но даже не знаю как мне составить поисковый вопрос, пытался запрашивать gpio linux example и подобного рода, но что-то все совсем не то, может подскажете как мне правильно сформулировать запрос поисковику для решения моей задачи? какая версия ядра? По команде uname -mrs выводит: Linux 2.4.31 i486 Изменено 16 июля, 2016 пользователем GeneralProger Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1113 5 16 июля, 2016 Опубликовано 16 июля, 2016 · Жалоба эта платформа оч древняя (> 10 лет), и ядро линукса - тоже. можно предложить несколько вариантов: 1) пытаться искать сборку (openwrt, yocto и тд) для конкретно этой платы, или подбирать наиболее похожую плату, с этим же процессором. если получится - будете иметь современный линукс со всеми рабочими примерами использования GPIO и тд; 2) искать документацию на эту плату и этот линукс того времени; 3) забить на плату, и взять современное железо, которое поддержано современным софтом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 16 июля, 2016 Опубликовано 16 июля, 2016 · Жалоба Третье - Не вижу смысла в данной задаче вообще его использовать, у вас РС-совместимая машина, берете любой компилятор, на вроде Watcom C, под MS-DOS и пишите свою прогу. Если нужно много памяти, используйте dos-4gw. MS-DOS категорически не рекомендую, нет смысла новичку осваивать программирование под архаичные платформы. Linux не так сложен, тем более для задачи дерганья GPIO. А вместо той устаревшей железяки что есть у автора (с устаревшей поддержкой Linux и архаичной документацией), я посоветовал бы ему купить что-то современное типа rasbberry/banana pi и прочие odroid-ы с современным актуальным Linux и подходящей документацией. Осваивать что-то новичку следует с чего-то актуального современного с хорошей документацией. P.S. Тема совершенно не сюда, я бы ее перенес в раздел ОС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 16 июля, 2016 Опубликовано 16 июля, 2016 · Жалоба А относительно MS-DOS тема для меня еще менее ясная чем linux, туда мне лезть еще более страшней. Я пытался найти какую-то информацию, но даже не знаю как мне составить поисковый вопрос, пытался запрашивать gpio linux example и подобного рода, но что-то все совсем не то, может подскажете как мне правильно сформулировать запрос поисковику для решения моей задачи? в идеальнов варианте, д.б. либа от производителя и документированное API.. если совсем все тухло, то опираясь на это The DIO1 port provides +5V, GND, and 14 digital I/O lines that may be used to interface the TS-5300 with a wide range of external devices. DIO lines DIO1_0 thru DIO1_7 are a byte-wide port accessed at I/O location Hex 7B, while the 6 other DIO lines DIO1_8 thru DIO1_13 are accessed in the lower 6 bits of I/O location Hex 7C. I/O location Hex 7A is a control port for DIO1. The direction of DIO lines DIO1_0 thru DIO1_3 is controlled by bit 0 of I/O location Hex 7A, and the direction of DIO1_4 thru DIO1_7 is controlled by bit 1 of I/O location Hex 7A выписываете адреса портов ввода/вывода, ищете и ставите компилятор. например C под свой дистрибутив далее ищете примеры программ "как обратиться к порту ввода в линукс" - удобнее смотреть в исходниках программ для x86, какого-нить софтового программатора или IrDA, любую хрень для работы с lpt портами (если вы понимаете что это) и пишите свою аппликуху для работы со своими адресами адреса по железу смотрите в разделах 21 Appendix D - System I/O Map Table 12 - TS-5300 DIO and Control Registers PS как уже вам написали - это х86 архитектура и врядли есть прямой доступ к gpio (типа /sys/class/gpio для ARM).. для интереса попробуйте find / | grep gpio Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeneralProger 0 16 июля, 2016 Опубликовано 16 июля, 2016 · Жалоба Почитал в интернете по обращению к портам ввода вывода и нашел файл /proc/ioports Со следующем содержимым: 0000-000f : dma1 0020-0021 : pic1 0040-0043 : timer 0070-007f : rtc 0080-008f : dma page reg 00a0-00a1 : pic2 00c0-00df : dma2 00f0-00ff : fpu 01f0-01f7 : ide0 02f8-02ff : serial(auto) 0300-030f : eth0 03f6-03f6 : ide0 03f8-03ff : serial(auto) 0cf8-0cff : PCI conf1 По инструкции порты DIO висят на 074h - 07Fh, значит если я правильно понимаю к ним относится эта строчка: 0070-007f : rtc И выходит что на эти порты есть драйвер /dev/rtc через который можно будет с ними работать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeneralProger 0 17 июля, 2016 Опубликовано 17 июля, 2016 (изменено) · Жалоба Я в принципе уже сам понял что тупанул и rtc это совсем не то Изменено 17 июля, 2016 пользователем GeneralProger Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 17 июля, 2016 Опубликовано 17 июля, 2016 · Жалоба Я в принципе уже сам понял что тупанул и rtc это совсем не то конечно тупанули, по вашей ссылке есть область адресов: 074h - 07Fh DIO and Control registers и ниже таблица описания.. прочитайте содержимое по адресу 0x74, должны считать значение 0x50: 74h Read Product Code 50h = Product Code for TS-5300 если ваша система "знает" о наличии этих портов, то карта адресов будет видна либо cat /proc/iomem либо cat /proc/ioports Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeneralProger 0 18 июля, 2016 Опубликовано 18 июля, 2016 · Жалоба конечно тупанули, по вашей ссылке есть область адресов: 074h - 07Fh DIO and Control registers и ниже таблица описания.. прочитайте содержимое по адресу 0x74, должны считать значение 0x50: 74h Read Product Code 50h = Product Code for TS-5300 если ваша система "знает" о наличии этих портов, то карта адресов будет видна либо cat /proc/iomem либо cat /proc/ioports Файл /proc/ioports выше, а файл /proc/iomem вот: 00000000-0009e3ff : System RAM 0009e400-0009ffff : reserved 000a0000-000bffff : Video RAM area 000f0000-000fffff : System ROM 00100000-01ffffff : System RAM 00100000-0022aacd : Kernel code 0022aace-002719c3 : Kernel data fff00000-ffffffff : reserved Вот вы говорите прочитать содержимое, а какой командой вообще обращения к портам ввода вывода по адресам такого вида осуществляется? Я смотрел в интернете как обращаться по этому байтному адресу надо, но там везде требуются какие-то пакеты которые вообще отказываются устанавливаться на эту версию Linux и все примеры разнятся. Вы не могли бы привести пример? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 18 июля, 2016 Опубликовано 18 июля, 2016 · Жалоба Вы не могли бы привести пример? я же писал ранее: далее ищете примеры программ "как обратиться к порту ввода в линукс" - удобнее смотреть в исходниках программ для x86, какого-нить софтового программатора или IrDA, любую хрень для работы с lpt портами (если вы понимаете что это) мнэ.. а гугль уже не работает? "как прочитать ioport linux", например http://www.iakovlev.org/index.html?p=538&m=1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 18 июля, 2016 Опубликовано 18 июля, 2016 · Жалоба эта платформа оч древняя (> 10 лет), и ядро линукса - тоже. можно предложить несколько вариантов: 1) пытаться искать сборку (openwrt, yocto и тд) для конкретно этой платы, или подбирать наиболее похожую плату, с этим же процессором. если получится - будете иметь современный линукс со всеми рабочими примерами использования GPIO и тд; 2) искать документацию на эту плату и этот линукс того времени; 3) забить на плату, и взять современное железо, которое поддержано современным софтом Ядро линукса 2.4 в 2005 уже было устаревшим. Если вы поставите современный линукс, то там доступ к ножкам очень простой даже для тех кто не имеет понятия ни о линуксе ни о программировании. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 18 июля, 2016 Опубликовано 18 июля, 2016 · Жалоба Вы не могли бы привести пример? гугленье - свет, а негугленье - тьма.. вот вам пример (ссылка, параграф 4.2): #include <stdio.h> #include <sys/io.h> int main() { if (ioperm(0x7A,4,1)<0){ printf(“Error\n”); return -1; } //set pins0 to 3 to inputs ioval=inb(0x7a); ioval= ioval & 0xFE; outb(ioval, 0x7A); return 0; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeneralProger 0 19 июля, 2016 Опубликовано 19 июля, 2016 · Жалоба гугленье - свет, а негугленье - тьма.. вот вам пример (ссылка, параграф 4.2): #include <stdio.h> #include <sys/io.h> int main() { if (ioperm(0x7A,4,1)<0){ printf(“Error\n”); return -1; } //set pins0 to 3 to inputs ioval=inb(0x7a); ioval= ioval & 0xFE; outb(ioval, 0x7A); return 0; } Знаете, что самое интересное, я никак не могу установить компилятор gcc на свой linux, ни одна инструкция не подходит, нету make, пробовал использовать Java даже с горя, но ее как я понял на мою i486 архитектуру не существует в природе, пытался скомпилировать файл на Linux на компьютере, но он ругается на и работать не хочет (наверное из-за другой архитектуры ОС на которой был скомпилирован), вообщем даже это уже огромная проблема, не знаю даже что и делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться