Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » LPC bus I/O под linux | страница 5
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 5 из 5
На страницу: Пред.  1, 2, 3, 4, 5 | Все страницы
Поиск в этой теме:
Железный канал: «LPC bus I/O под linux»
БулерМэн
 420 EGP


Рейтинг канала: 4(58)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Цитата:
Что ещё тут можно почикать чтоб какможно ближе к трём командам процессора продвинуться?



Код:
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdint.h>


int main()
{
    int file;
    uint8_t GP4;
    file = open("/dev/port", O_RDWR | O_RSYNC | O_SYNC);
   
    lseek(file, 0x68F, SEEK_SET);
    write(file, 0x03, 1);

    close(file);
}

например выкинуть функцию Outport и написать ее в код самого main Гы-гы

добавлено спустя 4 минуты:
Еще можно поискать вызываемые функции, например write, в указанных заголовочных файлах и написать в теле main ее код.
Хотя, наверное это ничего не даст.

Можно так же попробовать сделать ассемблерную вставку, но тут я на неизведанной территории.

добавлено спустя 3 минуты:
Вот тут помеченный галочкой ответ, похоже на твой случай:

https://ru.stackoverflow.com/questions/829868/Ассемблерная-вставка-в-Си

Читать полностью.
_________________
Дулички и фигушки

Последний раз редактировалось: БулерМэн (22:27 13-02-2019), всего редактировалось 6 раз(а)
    Добавлено: 22:25 13-02-2019   
_RAZAAR_
 62 EGP


Рейтинг канала: 2(11)
Репутация: -13
Сообщения: 2854 Заблокирован
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
БулерМэн :
Цитата:
Что ещё тут можно почикать чтоб какможно ближе к трём командам процессора продвинуться?


 Cкрытый текст   (кликните здесь для просмотра)

Код:
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdint.h>


int main()
{
    int file;
    uint8_t GP4;
    file = open("/dev/port", O_RDWR | O_RSYNC | O_SYNC);
   
    lseek(file, 0x68F, SEEK_SET);
    write(file, 0x03, 1);

    close(file);
}

например выкинуть функцию Outport и написать ее в код самого main Гы-гы

.


K сожалению либо нельзя либо чтото с синтаксисом

 Cкрытый текст   (кликните здесь для просмотра)
root@nar1gw1 ~/pm# cc GP4Out_03h_less.c

GP4Out_03h_less.c: In function 'main':

GP4Out_03h_less.c:16:17: warning: passing argument 2 of 'write' makes pointer from integer without a cast

write(file, 0x03, 1);

^

In file included from GP4Out_03h_less.c:5:0:

/usr/include/unistd.h:366:16: note: expected 'const void *' but argument is of type 'int'

extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur;

_________________
Quaere Vērum
------------------------
    Добавлено: 05:51 14-02-2019   
AnrDaemon
 857 EGP


Модератор
Рейтинг канала: 8(784)
Репутация: 37
Сообщения: 12292

Зарегистрирован: 17.10.2004
_RAZAAR_ :
При загрузке чего?

Загрузке загрузчика ОС?

При загрузке всей ОС со всеми службами.
Ну или хотя бы udev.
_________________
Люблю свободный полёт... :)
    Добавлено: 07:18 14-02-2019   
_RAZAAR_
 62 EGP


Рейтинг канала: 2(11)
Репутация: -13
Сообщения: 2854 Заблокирован
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
AnrDaemon :
_RAZAAR_ :
При загрузке чего?

Загрузке загрузчика ОС?

При загрузке всей ОС со всеми службами.
Ну или хотя бы udev.


Понятное дело если это применяется для чегото столь важного как загрузка оси.
Про костылёк я имел в виду касательно нашего случая
когда после загрузки всей системы чтобы активировать вайфай таким образом как мы тут его активировали
БулерМен предложил выгрузить драйвер вайфай пустить включалку а потом заново загрузить драйвер, посредствам скрипта.

Когда надо происзвести действия на 3 команды CPU зачем должны быть использованы какието более сложные манимупяции чем эти 3 команды, я об этом хотел сказать.
_________________
Quaere Vērum
------------------------
    Добавлено: 13:45 14-02-2019   
AnrDaemon
 857 EGP


Модератор
Рейтинг канала: 8(784)
Репутация: 37
Сообщения: 12292

Зарегистрирован: 17.10.2004
_RAZAAR_ :
Про костылёк я имел в виду касательно нашего случая

Инициализация КАЖДОГО устройства - такой же точно "костылёк".
_________________
Люблю свободный полёт... :)
    Добавлено: 17:12 14-02-2019   
_RAZAAR_
 62 EGP


Рейтинг канала: 2(11)
Репутация: -13
Сообщения: 2854 Заблокирован
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
AnrDaemon :
_RAZAAR_ :
Про костылёк я имел в виду касательно нашего случая

Инициализация КАЖДОГО устройства - такой же точно "костылёк".

Понятно и непонятно, a почему такойже точно "костылёк"?
Разве это не сделано для того чтоб можно было пользоваться устройствами вообще? или "костылёк" в шуточном смысле?

Тогда мой вопрос возвращается опять, как то возможно костыльнуть включалкой до загрузки iwlwifi драйвера?
Я незнаю механизмов и приоритетов по которым инициализируются устройства в линуксах , чтоб не как попало выгружать драйвер затем грузить его вновь а если есть такая возможность по необходимому мне порядку.
гугальну может что и накопаю.

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

lspci прекрасно показывал и показывает тип ISA LPC мостa и причин думать о том что это редко используемый неизвесный чип с которым непонятно как общаться вроде нет.
_________________
Quaere Vērum
------------------------

Последний раз редактировалось: _RAZAAR_ (18:13 14-02-2019), всего редактировалось 1 раз
    Добавлено: 18:06 14-02-2019   
БулерМэн
 420 EGP


Рейтинг канала: 4(58)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
А так работает?

Код:
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdint.h>

int main()
{
    int file;
    uint8_t value = 0x03;// или все таки *value

    file = open("/dev/port", O_RDWR | O_RSYNC | O_SYNC);
   
    lseek(file, 0x68F, SEEK_SET);
    write(file, &value, 1);

    close(file);
}


Я тут не совсем понимаю, у функции write вторым аргументом - указатель на данные, но в вызове функции стоит 0x03 или просто число 3. Совсем запутался...
_________________
Дулички и фигушки

Последний раз редактировалось: БулерМэн (03:15 15-02-2019), всего редактировалось 2 раз(а)
    Добавлено: 03:12 15-02-2019   
_RAZAAR_
 62 EGP


Рейтинг канала: 2(11)
Репутация: -13
Сообщения: 2854 Заблокирован
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
БулерМэн :
А так работает?

Код:
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdint.h>

int main()
{
    int file;
    uint8_t value = 0x03;// или все таки *value

    file = open("/dev/port", O_RDWR | O_RSYNC | O_SYNC);
   
    lseek(file, 0x68F, SEEK_SET);
    write(file, &value, 1);

    close(file);
}


Я тут не совсем понимаю, у функции write вторым аргументом - указатель на данные, но в вызове функции стоит 0x03 или просто число 3. Совсем запутался...

Так работает Улыбка



интересно почему нельзя указывать без декларирования
не так
write(file, &value, 1);
а так
write(file, 0х03, 1);
_________________
Quaere Vērum
------------------------

Последний раз редактировалось: _RAZAAR_ (12:33 15-02-2019), всего редактировалось 1 раз
    Добавлено: 12:33 15-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
_RAZAAR_ :
интересно почему нельзя указывать без декларирования
не так
write(file, &value, 1);
а так
write(file, 0х03, 1);

Потому что & в данном случае, это взятие адреса переменной. А когда говоришь просто 0x03 ту write пытается искать данные по адресу 0x03 а что там лежит и можно ли по этому адресу читать, это вопрос.

добавлено спустя 13 минут:
БулерМэн :
Можно так же попробовать сделать ассемблерную вставку, но тут я на неизведанной территории.

Это ничего не даст. Команды OUT/IN являются привилегированными, их вызов из 3 кольца(там где работает софт, а ось работает в 0) запрещен. Если вариант открыть доступ к нужному диапазону, но под виндой это может сделать только код в 0 кольце(драйвер например кстати Ntport ставит свой драйвер). В линуксе с рутовыми правами тоже можно открыть но только от рута
http://www.linuxcenter.ru/lib/articles/programming/io_port_prog_minihowto.phtml#AEN47
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do

Последний раз редактировалось: VBKesha (15:09 15-02-2019), всего редактировалось 1 раз
    Добавлено: 15:09 15-02-2019   
AnrDaemon
 857 EGP


Модератор
Рейтинг канала: 8(784)
Репутация: 37
Сообщения: 12292

Зарегистрирован: 17.10.2004
_RAZAAR_ :
"костылёк" в шуточном смысле?

Никаких шуток. В *NIX 90% устройств инициализируются скриптами.
udev - всего лишь платформа для их вызова.
_________________
Люблю свободный полёт... :)
    Добавлено: 16:06 15-02-2019   
_RAZAAR_
 62 EGP


Рейтинг канала: 2(11)
Репутация: -13
Сообщения: 2854 Заблокирован
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
пока от незнания что с ним дальше делать все регистры показать Улыбка

 Cкрытый текст   (кликните здесь для просмотра)

root@nar1gw1 ~/pm# ./a.out

_LPC47N227 Super I/O with LPC Interface HW info_



Runtime Register Block Address - 0x68

PME_STS_port_0x680h - 0x00

PME_EN_port_0x681h - 0x00

PME_STS1_port_0x682h - 0xF9

PME_STS2_port_0x683h - 0x07

PME_STS3_port_0x684h - 0xFF

PME_EN1_port_0x685h - 0x00

PME_EN2_port_0x666h - 0x00

PME_EN3_port_0x687h - 0x00

SMI_STS1_port_0x688h - 0xF9

SMI_STS2_port_0x689h - 0x09

SMI_EN1_port_0x68Ah - 0x00

SMI_EN2_port_0x68Bh - 0x00

GP1_port_0x68Ch - 0xF9

GP2_port_0x68Dh - 0x01

GP3_port_0x68Eh - 0x0F

GP4_port_0x68Fh - 0x03

FDC Power/Valid Config Cycle - 0x20

bit[7]=1 0x9C - PP Power/Mode/CR Lock - 0x94

bit[7]=0 0x08 - UART 1,2 Power - 0x88

FDC Miscellaneous - 0x70

PP and UART Miscellaneous - 0x00

FDC Setup - 0x00

Drive Type ID - 0xFF

bit[7:4]=0 - Auto Power Mgt/Boot Drive Select - 0x00

CR08 - 0x00

Test 4 - 0x00

bit[7:6]=0 - ECP FIFO Threshold/IR MUX - 0x00

Drive Rate - 0x00

UART Mode - 0x06

0x5A - Device ID - 0x5A

Revision - Revision ID - 0x00

Test 1 - 0x00

Test 2 - 0x00

Test 3 - 0x00

SYSOPT=0:0x2E SYSOPT=1:0x4E - Configuration Base Address 0 - 0x2E

SYSOPT=0:0x00 SYSOPT=1:0x00 - Configuration Base Address 1 - 0x00

DSR Shadow - 0x02

UART1 FCR Shadow - 0x00

UART2 FCR Shadow - 0x00

Force FDD Status Change - 0x03

CR18 - 0x00

CR19 - 0x00

CR1A - 0x00

CR1B - 0x00

CR1C - 0x00

CR1D - 0x00

CR1E - 0x00

Drive Type - 0x00

FDC Base Address - 0x00

FDC on PP/EPP Timeout S - 0x00

ECP Software Select - 0x00

Parallel Port Base Address - 0xDE

UART1 Base Address - 0xFE

UART2 Base Address - 0xBE

FDC and PP DMA Select - 0x04

FDC and PP IRQ Select - 0x07

UART IRQ Select - 0x43

IRQIN1/HPMODE/SIRQ_CLKRUN_En - 0x80

IRQIN2 - 0x00

SCE (FIR) Base Address - 0x00

SCE (FIR) DMA Select - 0x00

IR Half Duplex Timeout - 0x03

Software Select A - 0x00

Software Select B - 0x00

GPIO Direction Register 1 - 0x00

GPIO Polarity Register 1 - 0x00

GPIO Direction Register 2 - 0x00

GPIO Polarity Register 2 - 0x00

GPIO Direction Register 3 - 0x78

GPIO Polarity Register 3 - 0x00

GPIO Direction Register 4 - 0xFD

GPIO Polarity Register 4 - 0x00

GPIO Output Type Register - 0x80

_________________
Quaere Vērum
------------------------
    Добавлено: 00:33 16-02-2019   
БулерМэн
 420 EGP


Рейтинг канала: 4(58)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Так а что тебе с ним нужно делать-то? Машинка работает, в сеть выходит.
Про гитхаб тебе правильно посоветовали - через месяц забудешь где исходник программы пылится и вообще как оно и где запускается - поэтому необходимо написать инструкцию по сборке и эксплуатации данного решения.
В твоей теме, начиная с самого вопроса уже прошло 5 страниц текста, как-то бы надо резюмировать в сжатой форме, в одном сообщении Улыбка

добавлено спустя 1 минуту:
ЗЫ Конкретное решение вопроса поместить лучше в первое сообщение темы, под спойлер.
_________________
Дулички и фигушки

Последний раз редактировалось: БулерМэн (17:47 16-02-2019), всего редактировалось 2 раз(а)
    Добавлено: 17:46 16-02-2019   
VBKesha
 817 EGP


Рейтинг канала: 7(600)
Репутация: 132
Сообщения: 3329
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
ИМХО алгоритм работы должен быть такой.
0(опционально). Выгружаем драйвер WiFi(в линуксе команда rmmod имя_модуля) Имя модуля нужно глянуть конкретно для твоего модуля.
1. Вычиатать конфиг регистры и запомнить куда именно настроен
Runtime Register Block Address
2. Если он настроен на диапазон меньше 10h(тоесть не настрое) то меняем на диапазон выше 68h, если настроен то запоминаем на что именно настроен(поменяешь биос а он зараза начнём на другой порт мапить)
3. Настраиваем направление порта чтобы выходы были выходами а входы входами(можно даже не вычитываея)
4. Записываем в регистр который запомнили на втором шаге, значения активации Wi-Fi.
5(опционально). Загружаем назад модуль вайфай (команда modprobe имя_модуля).
ИМХО именно такая последовательность будет верной.
PS. Можно добавить спец ключи, для активации деактивации Wi-Fi
PSS. Добавить активацию деактивацию всего остльного BT/GPS/3G
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 20:56 16-02-2019   
Железный канал: «LPC bus I/O под linux»
На страницу: Пред.  1, 2, 3, 4, 5 | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: После интеграшки — 2600ХТ будетЬ просто таки летать. особенно, если память - GDDR3. ну а если GDDR2, то — таки тоже будетЬ летать, но нызЭнько-нызЭнько. (Ы в ЖК)

  » LPC bus I/O под linux | страница 5
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18