This shows you the differences between two versions of the page.
midge:ru_article [2018/04/09 15:36] |
midge:ru_article [2018/04/09 15:36] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Linux маршрутизатор на чипсете ADM5120 ====== | ||
+ | ===== Отказ от ответственности ===== | ||
+ | Автор не несет никакой ответсвенности, за Ваши действия или бездействия, за физический, финансовый, моральный или любой другой ущерб. Помните, вскрывая рассмотренный в этой статье маршрутизатор, Вы лишаетесь гарантии.\\ | ||
+ | Статья не является пошаговым руководством: Вы должны понимать, что Вы делаете. | ||
+ | ===== Введение ===== | ||
+ | Недавно ко мне в руки попало устройство [[http://www.agatis.biz/site/page135.html?goods=ED29|Edimax BR-6104K]] (а позже и Edimax BR-6104KP) \\ | ||
+ | Данное устройство представляет собой маршрутизатор, размером с маленький 8-ми портовый switch | ||
+ | |||
+ | === Возможности === | ||
+ | * 1 WAN Ethernet порт | ||
+ | * 4 LAN Ethernet порта | ||
+ | * Встроенный коммутатор Fast Ethernet | ||
+ | * Общий доступ с помощью NAT/NAPT | ||
+ | * Межсетевой экран SPI (Stateful Packet Inspection) с защитой от %%DoS%%-атак | ||
+ | * Поддержка виртуальных серверов и DMZ | ||
+ | * Поддержка DDNS (%%DynDNS%%/TZO) | ||
+ | * Поддержка специальных приложений (conntrack) | ||
+ | * Свободное прохождение туннелей VPN (IPSec/PPTP/L2TP) | ||
+ | * Получение WAN IP через %%PPPoE/Static IP/PPTP/DHCP/L2TP%% | ||
+ | * Сервер DHCP | ||
+ | * Поддержка UPNP | ||
+ | * Возможность работы в режиме моста | ||
+ | * Конфигурирование через web-интерфейс | ||
+ | * Возможность получения информации о подключении к портам и работы DHCP. | ||
+ | * Журнал событий | ||
+ | * Возможность обновления программного обеспечения | ||
+ | |||
+ | Маршрутизатор имеет flash память объемом 2М и SDRAM память объемом 16М и сравнительно быстрый процессор 175MHz.\\ | ||
+ | Но самое интересное, что операционной системой устройства является Linux. | ||
+ | Эта мысль у меня возникла при ознакомлении с его возможностями, и подтвердилась после внимательного изучения его прошивки. | ||
+ | |||
+ | На Тайване десятки фирм изготавливают OEM устройства на процессоре [[http://www.linux-mips.org/wiki/Adm5120|ADM5120]], отличающиеся только корпусом. Например, точно такое же устройство изготавливает компания Sweex ([[http://www.sweexeurope.com/product.asp?pid=302|Sweex LB000021]]). Еще одно аналогичное устройство - Planet XRT-401D. Платы Edimax, Sweex, Planet и других производителей отличить друг от друга невозможно. Существуют лишь подмодификации плат, отмеченные в левом верхнем углу как "Rev A" и "Rev B" и использующие разные чипы памяти. Прошивки отличаются только логотипами и оформлением (CSS). | ||
+ | |||
+ | === Существуют модификации === | ||
+ | * [[http://www.agatis.biz/site/page135.html?goods=ED29|BR-6104K]] - Маршрутизатор 1 WAN порт, 4 LAN порта (~$35) | ||
+ | * [[http://www.agatis.biz/site/page135.html?goods=ED49|BR-6104KP]] - Маршрутизатор 1 WAN порт, 4 LAN порта, 2 порта USB (~$45) | ||
+ | * [[http://www.agatis.biz/site/page135.html?goods=ED50|BR-6524K]] - Маршрутизатор 2 WAN порта, 4 LAN порта (подключение к 2 провайдерам) | ||
+ | * [[http://www.agatis.biz/site/page135.html?goods=ED53|BR-6541K]] - Маршрутизатор 4 WAN порта, 1 LAN порт (подключение к 4 провайдерам) | ||
+ | |||
+ | Отличие между моделями Edimax BR-6104K и BR-6104KP состоит только в наличии двух портов USB и в поддержке принтера в firmware. Причем печатные платы у обоих устройств совершенно одинаковые, только на BR-6104K не распаяны элементы USB, осциллятор на 48MHz и стабилизатор питания +5V для USB. При некоторой сноровке можно дополнить недостающие элементы и получить модель BR-6104KP. Подробная нструкция [[http://sprite.student.utwente.nl/~jeroen/projects/lb000021/usb_tutorial/ |здесь]]. Хотя разница в цене составляет всего 10$... | ||
+ | |||
+ | Более дорогие устройства поддерживают беспроводную сеть WiFi 802.11g : | ||
+ | |||
+ | === Модификации с WiFi === | ||
+ | |||
+ | * [[http://www.edimax.nl/html/english/products/BR-6104Wg.htm|BR-6104Wg]] - самая первая модель с 802.11g. 1 WAN порт, 4 LAN порта, USB нет. | ||
+ | * [[http://www.agatis.biz/site/page135.html?goods=ED52|BR-6524WP]] - Маршрутизатор Wireless 802.11g, 2 WAN порта, 4 LAN порта, 2 порта USB (подключение к 2 провайдерам) ($158.00) | ||
+ | * [[http://www.agatis.biz/site/page135.html?goods=ED51|BR-6541WP]] - Маршрутизатор Wireless 802.11g 4 WAN порта, 1 LAN порт, 2 USB порта (подключение к 4 провайдерам) | ||
+ | * [[http://www.edimax.nl/html/english/products/EW-7207APg.htm|EW-7207APg]] - Точка доступа, 5 портов LAN, 802.11g | ||
+ | |||
+ | === Принт-серверы === | ||
+ | |||
+ | Еще один класс устройств на процессоре ADM5120 - это сервера печати. Они имеют только один порт Ethernet и не имеют выходов коммутатора. Однако у них есть порт USB и LPT. Кроме того эти устройства имеют меньшие габариты, вес и цену и также весьма интересны. | ||
+ | |||
+ | * [[http://www.edimax.com.tw/html/english/products/PS-3205U.htm|PS-3205U]] - Сервер печати 1Eth,2USB,2LPT | ||
+ | * [[http://www.edimax.com.tw/html/english/products/PS-3205UWg.htm|PS-3205UWg]] - Сервер печати 1Eth,2USB,2LPT, 802.11g | ||
+ | |||
+ | ==== Фото ==== | ||
+ | ^ Внешний вид BR-6104K ^ Вид внутри BR-6104K ^ | ||
+ | | {{midge:br6104k-face.jpeg|Внешний вид BR-6104K}} | {{midge:br6104k-int.jpeg|Вид внутри BR-6104K}} | | ||
+ | \\ | ||
+ | |||
+ | ^ Web Интерфейс ^^^^ | ||
+ | | {{midge:small-br6104kp-1.png}} | {{midge:small-br6104kp-2.png}} | {{midge:small-br6104kp-3.png}} | | ||
+ | | {{midge:small-br6104kp-4.png}} | {{midge:small-br6104kp-5.png}} | {{midge:small-br6104kp-6.png}} | | ||
+ | | {{midge:small-br6104kp-7.png}} | {{midge:small-br6104kp-8.png}} | {{midge:small-br6104kp-9.png}} | | ||
+ | | {{midge:small-br6104kp-10.png}} | {{midge:small-br6104kp-11.png}} | {{midge:small-br6104kp-12.png}} | | ||
+ | | {{midge:small-br6104kp-13.png}} | {{midge:small-br6104kp-14.png}} | | | ||
+ | |||
+ | ==== Основные возможности ==== | ||
+ | |||
+ | === Общий доступ === | ||
+ | Функция NAT/NATP позволит организовать общий доступ к одному широкополосному подключению (через кабельный или ADSL-модем). Возможна одновременная работа до 253 пользователей. Маршрутизатор обеспечивает функцию DMZ для осуществления доступа из интернет к серверам, расположенным во внутренней сети. | ||
+ | |||
+ | === Поддержка специальных приложений === | ||
+ | Маршрутизатор позволяет использовать специальные приложения (H.323, IRC, MSN, MMS, PPTP, Quake3, starcraft, tftp и другие). | ||
+ | |||
+ | === Межсетевой экран === | ||
+ | Межсетевой экран SPI (Stateful Packet Inspection) защитит вашу внутреннюю сеть от несанкционированного доступа и различного рода %%DoS%%-атак (атаки типа "Отказ в обслуживании"), а также сразу оповестит вас об этом по электронной почте. С его помощью вы также можете контролировать доступ к интернет из внутренней сети. | ||
+ | |||
+ | === Поддержка виртуальных серверов и DMZ === | ||
+ | Функция поддержки виртуальных серверов и DMZ обеспечит доступ из интернет к ресурсам ваших серверов, расположенных во внутренней сети. | ||
+ | |||
+ | === Поддержка UPnP === | ||
+ | Функция %%UPnP%% поможет быстро настроить маршрутизатор. | ||
+ | |||
+ | === DHCP === | ||
+ | Встроенный сервер DHCP даст возможность клиентам из внутренней сети получать сетевые параметры автоматически. | ||
+ | |||
+ | === Настройка через web-интерфейс === | ||
+ | Вы можете легко настроить маршрутизатор через обычный веб-браузер. | ||
+ | |||
+ | ===== Варианты использования ===== | ||
+ | Конечно на 2 мегабайтах flash и 16 мегабайтах RAM памяти в модели без USB порта сильно не разгуляешься, но в умелых руках со своими технико-экономическими показателями, данное устройство может занять свою нишу. Навряд ли получится его использовать как почтовый или Web сервер, да он для этого и не предназначен. \\ | ||
+ | Это маршрутизатор: без вращающихся механических элементов, с малыми габаритами, питанием 12V, с максимальной пропускной способностью WAN-LAN до 55 МБит/сек. Поэтому он может быть установлен как в офисе, в квартире, так и на крыше дома. | ||
+ | \\ | ||
+ | Но! Имея USB Flash (USB-HDD) мы запросто можем превратить маршрутизатор в полноценный сервер | ||
+ | |||
+ | ===Возможности, которые сразу приходят в голову:=== | ||
+ | * Маршрутизатор | ||
+ | * iptables (firewall, dnat, snat, policy routing, etc) | ||
+ | * shaper (cbq, htb, etc) | ||
+ | * VPN шлюз | ||
+ | * dhcp сервер | ||
+ | * ssh/telnet доступ (dropbear/busybox) | ||
+ | * snmpd (большой размер для ramdisk'а) | ||
+ | * ftp/tftp update | ||
+ | * не вижу препятствий для того, чтобы подключить dial-up модем или другое коммуникационное оборудование | ||
+ | * + широкая гамма USB устройств | ||
+ | * и все остальное в рамках Вашей фантазии, аппаратных и программных ограничений | ||
+ | |||
+ | == Лирической отступление == | ||
+ | //у меня есть друг HAM (радиолюбитель), который без ума от всевозможных интеллектуальных микроустройств, а тем более от устройств в которых стоит Linux. | ||
+ | А тем более от устройств с Linux'ом и поддержкой AX.25. Для него скорость в 2400 по радио на расстоянии 50км верх блаженства. Собрав систему с поддержкой AX.25, я ему доставил несказанное удовольствие. Планирует устанавливать он такие маршрутизаторы в горах и труднодоступных местах, где порой питание только от ветровой электростанции// | ||
+ | |||
+ | == На досуге хочу == | ||
+ | * Из BR-6104KP сделать файловый сервер для USB flash/hdd | ||
+ | * подключить USB звук/web-камеру | ||
+ | |||
+ | ===== Ограничения/Огорчения ===== | ||
+ | Так как процессор довольно специфический, то Linux ядро изменено именно под него и оно относительно старое - 2.4.18. (//** Обновление: Существуют патчи для 2.4.31 - см ссылки**//) | ||
+ | Совсем недавно компания Edimax предоставила исходные тексты ядра для скачивания, до этого момента приходилось пользоваться или уже скомпилированным ядром из 'родной' прошивки, или собирать ядро предоставленное компанией OvisLink (с некоторыми ограничениями - неработает: mtd и switch). | ||
+ | \\ | ||
+ | Также есть ограничение связанное с размерами flash памяти - ее нельзя использовать как полноценную файловую систему, так как ядро с ramdisk'ом почти не оставляет свободного места (на досуге надо будет поэкперементировать с JFFS). | ||
+ | Чтобы обойти это ограничение, мною был написан простой скрипт, который после загрузки загружает другой скрипт, который в свою очередь обновляет систему (содержимое ramdisk'а). Также можно через определенные промежутки времени выгружать изменившиеся файлы на ''tftp/ftp'' сервер.\\ | ||
+ | Второе и более красивое решение состоит в приобретении устройства с USB портом и USB-Flash к нему. По моему опыту это наиболее безхлопотное решение, позволяющее настроить полноценный linux сервер. | ||
+ | |||
+ | Есть отличная страница [[http://www.norocketscience.com/router/upgrade.htm]] и форум, где владельцы маршрутизаторов исправляют ошибки допущенные производителем. | ||
+ | |||
+ | Теперь, если Вы заинтересовались этим устройством, то Вы можете: | ||
+ | |||
+ | - Использовать роутер без изменений | ||
+ | * Для обычных пользователей подключенных через xDSL модем - то, что доктор прописал. | ||
+ | - Использовать ядро и ramdisk от производителя изменяя под свои нужды скрипты/бинари, для этого Вам потребуется: | ||
+ | * Изучить структуру прошивки, научится разбирать и собирать ramdisk | ||
+ | * Подключить консольный кабель - получить доступ к консоли | ||
+ | * Установить MIPS toolchain | ||
+ | - Использовать самосборное ядро и самосборный ramdisk, для этого Вам потребуется: | ||
+ | * Тоже что и в предыдущем пункте | ||
+ | * Скачать, собрать, установить ядро, buildroot ;) | ||
+ | - Полностью пересобрать родную прошивку | ||
+ | - Через web интерфейс залить [[http://vlad.org.ua/adm5120/firmware/usb-root/|прошивку]] ''root'' система которой находится на первом разделе USB Flash диска. | ||
+ | * плюс: Это 'живая' система, с изменяемой в любой момент конфигуруцией, а не ramdisk. | ||
+ | * плюс: не требуется вскрывать роутер, чтобы подключиться через RS232 порт | ||
+ | * плюс: в любой момент можно изменить файловую систему на настольном компьютере | ||
+ | |||
+ | Поделюсь заметками и рекомендациями: | ||
+ | \\ | ||
+ | |||
+ | ===== Различная информация ===== | ||
+ | ==== Hardware ==== | ||
+ | |||
+ | Данный маршрутизатор построен на чипе ADM5120 фирмы %%AdmTek%% ([[http://www.infineon.com/|Infineon]]) | ||
+ | который представляет собой высокопроизводительную и очень гибкий систему System On Chip (SOC) | ||
+ | которая может использоваться для SOHO Gateway, NAT роутер, принт сервер, точки доступа WLAN, VPN шлюза, ядром VoIP шлюза. | ||
+ | |||
+ | Внутри себя этот чип содержит высокопроизводительный процессор MIPS32 4Kc 175 MHz/227 MIPS, | ||
+ | сетевую подсистему, switch engine, поддержку PCI, USB, UART. | ||
+ | |||
+ | ^ Структурная схема ^ Фотография ^ | ||
+ | | {{midge:adm5120-structure.png}} | {{midge:adm5120-photo.jpeg}} | | ||
+ | |||
+ | Существуют две разновидности процессора ADM5120 в BGA корпусе и ADM5120P в пластиковом PQFP корпусе, которые отличаются только набором периферии. Версия в BGA корпусе позволяет подключить до трех устройств PCI. Именно BGA версия используется во всех роутерах с WiFi. В данном случае в качестве устройства PCI выступает обычная MiniPCI карточка WiFi 802.11g. (PCI и MiniPCI электрически совместимы). | ||
+ | |||
+ | === Сетевая подсистема === | ||
+ | Содержит 6 портов и обладает следующими возможностями: | ||
+ | * IEEE 802.3 Fast Ethernet | ||
+ | * 5 auto-MDIX (auto-crossover) twisted paired LAN interfaces, embedded 10/100M PHY | ||
+ | * 1 GMII((только в BGA корпусе))/MII interface | ||
+ | * Flexible WAN port selection | ||
+ | |||
+ | === Встроенный switch engine === | ||
+ | * Embedded Data-buffer/Address-look-up table | ||
+ | * Look-up table read/write-able | ||
+ | * MAC layer security | ||
+ | * MAC clone solution | ||
+ | * Multicast grouping (IGMP) | ||
+ | * MAC filtering, Bandwidth control | ||
+ | |||
+ | * Class of Services (%%CoS%%) with two priority levels | ||
+ | * Shared dynamic data buffer management, embedded SSRAM | ||
+ | * Port grouping VLAN (overlap-able) | ||
+ | * TCP/IP accelerator | ||
+ | |||
+ | === Memory interface === | ||
+ | SDRAM | ||
+ | * Поддержка до двух банков (2 вывода Chip Select) | ||
+ | * Каждый банк может поддерживать от 1Mx32 (4Mb) до 32Mx32bit (128Mb) | ||
+ | * Управление по скорости выборки из банков. | ||
+ | |||
+ | FLASH | ||
+ | * NAND Flash boot (только в BGA корпусе) | ||
+ | * NOR Flash boot: Поддержка до двух банков (2 Chip Select pins) | ||
+ | * NOR Flash boot: Каждый банк может поддерживать от 1Mx8-bit до 1Mx32-bit (4Mb) | ||
+ | |||
+ | === System === | ||
+ | * Два UART интерфейса (с полным модемным управлением) совместимых с AMBA UART PrimeCell (PL010) | ||
+ | * AMBA-PCI bridge который поддерживает до 3 PCI устройств (только в BGA корпусе) | ||
+ | * GPIO (версия в PQFP корпусе - 4 GPIO pins, BGA версия - 8 pins) | ||
+ | * USB 1.1 host на шине AMBA | ||
+ | * Источники синхронизации : | ||
+ | * 25MHz crystal for 10/100 | ||
+ | * 48MHz crystal for USB | ||
+ | * 0.18u CMOS process | ||
+ | * 1.8V/3.3V dual power | ||
+ | |||
+ | **и все это удовольствие за ~$35 ** | ||
+ | |||
+ | ==== Консольный порт ==== | ||
+ | Консольного порта в его привычном виде нет. Для него предусмотрен разъем на плате обозначенный ''JP2''. | ||
+ | И для того, чтобы иметь доступ к консоли и возможность прошивать маршрутизатор через кабель, | ||
+ | Вам необходимо будет собрать переходник (level shifter) с ~12V (RS232) на 3.3V. Для этого потребуется микросхема ''MAX232'' или ей подобная.\\ | ||
+ | {{midge:max232.png?700|Схема программатора}} | ||
+ | \\ | ||
+ | IMHO проще всего взять шнурок к мобильному телефону, обычно они все используют напряжение 3.3V. Например, идеально подходят шнуры от телефонов [[http://www.meshcube.org/meshwiki/ModifiedMobileSerCable|Siemens]] как от старых S/25/С25/C35 так и от более современных С55/CF62. Стоят они как правило 5..10$. Подходят как Serial так и USB шнуры. Первый - это собранный и залитый пластиком переходник, а во втором случае вы просто получите дополнительный преобразователь USB-to-Serial. | ||
+ | |||
+ | На плате маршрутизатора имеется разъем подписанный как JP2. К нему необходимо подключать кабель согласно разводки: | ||
+ | <code> | ||
+ | JP2 | ||
+ | 2-o o o o-8 | ||
+ | 1-o o o o-7 | ||
+ | |||
+ | 1 - Rx | ||
+ | 7 - Tx | ||
+ | 8 - Gnd | ||
+ | </code> | ||
+ | **Внимание:** подключение COM порта напрямую к маршратизатору непременно выведет последний из строя.\\ | ||
+ | Подключайтесь любой терминальной программой на скорости 115200 бит/сек, 8 бит, No parity, 1 stopbit | ||
+ | \\ | ||
+ | **Tip:** Консольный вход очень чувствительный к различным шумам и наводкам, поэтому, если они у | ||
+ | Вас появляются - проверьте кабеля, не приближайте их к источникам помех. Как вариант можно установить конденсатор 0.1 мкф между 1 и 8 контактами. | ||
+ | |||
+ | |||
+ | ==== USB порт ==== | ||
+ | Jeroen Domburg написал прекрасное [[http://sprite.student.utwente.nl/~jeroen/lb000021/usb_tutorial/|HOWTO]] | ||
+ | по установке компонентов для поддержки USB в те роутеры где их нет. | ||
+ | |||
+ | ==== JTAG порт ==== | ||
+ | Процессор ADM5120 поддерживает JTAG (IEEE 1149.1) и MIPS [[http://www.mips.com/content/Documentation/MIPSDocumentation/EJTAG/doclibrary|EJTAG]] стандарты, которые предназначены для отладки и тестирования устройства. EJTAG - это расширение обычного JTAG, добавляет возможности пошаговой отладки процессоров MIPS и т.д. | ||
+ | |||
+ | Выводы процессора для JTAG (корпус PQFP): | ||
+ | |||
+ | <code> | ||
+ | 134 /TRST | ||
+ | 135 TDI | ||
+ | 136 TDO | ||
+ | 137 TMS | ||
+ | 139 TCK | ||
+ | </code> | ||
+ | |||
+ | Разъем на плате BR-6104 обозначен как JP1. Разводка соответствует так называемому EJTAG 2.5 стандарту. В прочих устройствах может использоваться другая разводка например 20-pin EJTAG 2.0 . | ||
+ | |||
+ | <code> | ||
+ | n_TRST 1 2 GND | ||
+ | TDI 3 4 GND | ||
+ | TDO 5 6 GND | ||
+ | TMS 7 8 GND | ||
+ | TCK 9 10 GND | ||
+ | n_SRST 11 12 | ||
+ | DINT 13 14 VCC | ||
+ | </code> | ||
+ | |||
+ | Вывод DINT в ADM5120 не используются. Сигнал n_TRST (TAP Reset) служит для сброса TAP-контроллера независимо от схем остального процессора. Активный уровень - низкий (n_ указывает на негативную логику). Вобщем-то для функционирования JTAG он не нужен, но практически во всех устройствах пин n_TRST соединен с земляной шиной через резистор 1Ком и следовательно JTAG отключен (постоянно находится в состоянии сброса). Поэтому в простых JTAG пробниках нужно подать лог."1" или соединить его с VCC через резистор примерно 300Ом. Более совершенные пробники управляют этим сигналом непосредственно. Вывод n_SRST дублирует обычный аппаратный сброс, но компоненты (R22) не припаяны на плате. Питание +3.3V можно снять с 14-го контакта разъема. | ||
+ | |||
+ | Самый простой и надежный JTAG интерфес - Macraigor [[http://www.macraigor.com/wiggler.htm|Wiggler]], который подключается к LPT порту. Состоит из одной микросхемы 74HC244(1564АП5), набора резисторов и одного транзистора. Есть и [[http://wiki.openwrt.org/JTAG_Cables|более простые]] схемы на LPT, состоящие просто из резисторов, но по отзывам они работают менее надежно. Микросхема серии 74HC (Highspeed CMOS) применяется, постольку поскольку она может работать на любом напряжении от +2 до +6 V, а напряжение процессора +3.3V . | ||
+ | |||
+ | === Схема программатора WIGGLER === | ||
+ | {{midge:wiggler.gif}} | ||
+ | |||
+ | === Утилиты JTAG/EJTAG === | ||
+ | |||
+ | Существуют несколько версий протокола MIPS EJTAG (1.0, 2.0, 2.5 и т.д.). Для доступа к памяти могут применяться два метода: EJTAG DMА и PrAcc. Первый метод гораздно быстрее и проще в реализации, но есть далеко не во всех процессорах. Версии EJTAG 2.5 и 2.6 более ориенированы на отладку и опция EJTAG DMA в них чаще всего отсутствует. ADM5120 реализует EJTAG 2.6 и к сожалению в ADM5120 поддержки EJTAG DMA нет. Чтобы получить доступ к памяти по методу PrAcc, необходимо загружать небольшие кусочки кода в процессор и читать результаты. | ||
+ | |||
+ | Фирма Macraigor бесплатно предоставляет утилиту [[http://www.macraigor.com/ocd_cmd.htm|OCD Debugger]]. Он может работать совместно с Wiggler, схема которого приведена выше (под Windows). OCD Debugger позволяет выполнять команды JTAG и содержит небольшой простой пошаговый отладчик MIPS. Также Macraigor предлагает Demo-версию утилиты [[http://www.macraigor.com/flash_prog.htm|OCD Flash Programmer]] (полная версия платная). | ||
+ | |||
+ | Другая популярная утилита - Openwince [[http://openwince.sourceforge.net/jtag/|JTAG Tools]]. Она также поддерживает Macraigor Wiggler. К сожалению, сайт программы давно не обновлялся, однако в CVS новые версии появлются довольно активно. Можно использовать версию, в которую Marek Michalkiewicz добавил поддержку EJTAG PrAсс:[[http://www.amelek.gda.pl/rtl8181/jtag/|jtag-0.6-cvs-20051228]]. | ||
+ | |||
+ | К сожалению, ADM5120 не позволяет определить тип процессора через регистр IDCODE: | ||
+ | |||
+ | <code> | ||
+ | jtag> cable ppdev /dev/parport0 WIGGLER | ||
+ | Initializing Macraigor Wiggler JTAG Cable on ppdev port /dev/parport0 | ||
+ | jtag> detect | ||
+ | IR length: 5 | ||
+ | Chain length: 1 | ||
+ | Device Id: 00000000000000000000000000000001 | ||
+ | Unknown manufacturer! | ||
+ | chain.c(110) Part 0 without active instruction | ||
+ | chain.c(133) Part 0 without active instruction | ||
+ | chain.c(110) Part 0 without active instruction | ||
+ | </code> | ||
+ | |||
+ | Однако определение EJTAG флагов работает и возвращает вполне осмысленные значения: | ||
+ | |||
+ | <code> | ||
+ | jtag> instruction length 5 | ||
+ | jtag> register IMP 32 | ||
+ | jtag> instruction IMPCODE 00011 IMP | ||
+ | jtag> instruction IMPCODE | ||
+ | jtag> shift ir | ||
+ | jtag> shift dr | ||
+ | jtag> dr | ||
+ | 01000001010000000100000000000000 | ||
+ | </code> | ||
+ | |||
+ | Расшифровка: | ||
+ | |||
+ | <code> | ||
+ | 31:29 EJTAGver 010 Version 2.6 | ||
+ | 28 R4k/R3k 0 R4k | ||
+ | 24 DINTsup 1 supported | ||
+ | 22:21 ASIDsize 10 8-bit ASID | ||
+ | 16 MIPS16e 0 not supported | ||
+ | 14 NoDMA 1 No EJTAG DMA support | ||
+ | 0 MIPS32/64 0 MIPS32 | ||
+ | </code> | ||
+ | |||
+ | Через порт JTAG в принципе возможно чтение/запись flash/sdram памяти напрямую. | ||
+ | |||
+ | * http://www.baycom.org/~tom/ejtag/ | ||
+ | * http://gdbmipsejtag.sourceforge.net/ | ||
+ | * http://www.totalembedded.com/open_source/jtag/mips32_ejtag.php | ||
+ | * Интересная дискуссия : http://wiki.openwrt.org/zt8qmwz | ||
+ | * http://adm5120.narod.ru/ejtag-adm5120.htm | ||
+ | * http://adm5120.narod.ru/ejtag_work.htm | ||
+ | |||
+ | Приветствуется дальнейшая информация по JTAG. | ||
+ | |||
+ | ==== Заметки по родной прошивке ==== | ||
+ | В основном вся логика представлена набором ''shell'' скриптов, все относительно просто.\\ | ||
+ | HTTP сервером является пропатченный [[http://webserver.goahead.com/|GoAhead WebServer]], в котором находится логика работы с пользователем. | ||
+ | |||
+ | Программа ''/bin/flash'' реализует функциональность сохранения/восстановления параметров (NVRAM). Она может читать/записывать области памяти FLASH, упомянутые ниже как ''HS'', ''DS'' и ''CS''. Параметры предопределены и привязаны (внутри программы) к определенным областям FLASH памяти. | ||
+ | |||
+ | К сожалению при загрузке на консоле запускается программа требующая ввести username/password, которые известны только производителю. Поэтому, чтобы получить shell доступ, нужно как минимум прошить модифицированную прошивку\\ **Обновлено:** Есть также способ получить shell доступ на консоли в родной прошивке, для этого в разделе 'Virtual Server' заводим конфигурацию, но в поле коментария вводим ''`killall setup`'' (Обязательно с обратными ковычками) \\ | ||
+ | Также запускается демон ''diagd'' слушающий TCP порт 31727, который позволяет локально устанавливать MAC адреса и количество интерфейсов, а также удаленно: получать информацию о устройстве, менять MAC адреса, устанавливать частотный диапазон WLAN, и другие функции, которые скорей всего будут включены в слудующих версиях. | ||
+ | |||
+ | Разработчиками написан модуль для ядра реализующий URL blocking, имеются файлы ''/proc/url_blocking_list'' и ''/proc/trigger_port_list''\\ | ||
+ | \\ | ||
+ | |||
+ | == /dev/mtd == | ||
+ | Блочное устройство, предоставляющее доступ к flash памяти. Крайне не советую что-либо записывать в | ||
+ | диапазон %%0x000000 - 0x008000%%, иначе велика вероятность превратить маршрутизатор в кирпич. | ||
+ | |||
+ | == /dev/switch == | ||
+ | Кнопка ''reset''. В цикле опрашивается скриптом ''monitor.sh'', в случае нажатия делает ''reboot'' | ||
+ | |||
+ | == /dev/led0 == | ||
+ | Светодиод питания.\\ | ||
+ | <code bash> | ||
+ | echo "led off" > /dev/led0 # turn on | ||
+ | echo "led on" > /dev/led0 # turn off | ||
+ | echo "led blink 100" >/dev/led0 # blink with freq 0.1 | ||
+ | </code> | ||
+ | |||
+ | == /dev/led_wlan == | ||
+ | неизвестно, возможно светодиод WLAN | ||
+ | |||
+ | == /dev/ttyS0, /dev/console == | ||
+ | консоль | ||
+ | |||
+ | ==== Структура Flash памяти ==== | ||
+ | |||
+ | FLASH память начинается с физического адреса %%0x1fc00000%%. В соответствии с архитектурой MIPS она также видна по адресам %%0x9fc00000%% (KSEG0) и %%0xbfc00000%% (KSEG1). | ||
+ | |||
+ | <code> | ||
+ | 0x000000 - 0x007fff boot loader | ||
+ | 0x008000 - 0x0083ff 'HS' section = hardware setting (ethernet MAC addresses, etc.) | ||
+ | 0x008400 - 0x009fff 'DS' section = default config | ||
+ | 0x00a000 - 0x00bbff 'CS' section = current config | ||
+ | 0x00bc00 - 0x00ffff empty | ||
+ | 0x010000 - 0x01ffff WB4K web image (webpages-6104k.bin.gz) | ||
+ | 0x020000 - 0x1fffff CSYS system image (vmlinux.bin.bz2) | ||
+ | </code> | ||
+ | |||
+ | HS, DS и CS секции начинаются с 6-ти байтного заголовка: | ||
+ | <code c> | ||
+ | char tag[2]; /* "HS", "DS" or "CS" */ | ||
+ | char version[2]; /* currently HS = "01", DS = CS = "08" */ | ||
+ | uint16_t length; | ||
+ | </code> | ||
+ | WB4K и CSYS секции всегда начинаются на границе 64K блока (0x10000) и содержат в самом начале 12 байтовый заголовок: | ||
+ | <code c> | ||
+ | char signature[4]; /* "WB4K" or "CSYS" */ | ||
+ | uint32_t startAddress; | ||
+ | uint32_t length; | ||
+ | </code> | ||
+ | Некоторые роутеры используют сигнатуру WBIP вместо WB4K. | ||
+ | |||
+ | 17KB неиспользуемого места + 64KB занимаемые webpages.bin, так что потенциально выигрываем 81KB. | ||
+ | |||
+ | ==== Структура официальной прошивки ==== | ||
+ | Прошивки от Edimax и Sweex (версий 2.65/2.75) имееют следующий формат | ||
+ | <code> | ||
+ | V2.65 Block name V2.75 | ||
+ | +--------------------+ 0x00 + 0x00+--------------------+ | ||
+ | | WB4K Header | | | WB4K Header | | ||
+ | +--------------------+ 0x0c | 0x0c+--------------------+ | ||
+ | | | | | | | ||
+ | | | | | | | ||
+ | | webpages-6104k.bin | webpages.bin | webpages-6104k.bin | | ||
+ | | gzipped | | | gzipped | | ||
+ | | | | | | | ||
+ | +--------------------+ | +--------------------+ | ||
+ | | padding | | | padding | | ||
+ | +--------------------+ 0x20000 + 0x10000+--------------------+ | ||
+ | | CSYS header | csys.bin | CSYS header | | ||
+ | +--------------------+ 0x2000c + 0x1000c+--------------------+ | ||
+ | | | | | | | ||
+ | | | | | | | ||
+ | | vmlinux.bin | vmlinux.bin.gz | vmlinux.bin | | ||
+ | | gzipped | | | gzipped | | ||
+ | | | | | | | ||
+ | | | | | | | ||
+ | +--------------------+ + +--------------------+ | ||
+ | </code> | ||
+ | |||
+ | == ''WB4K header'' и ''CSYS header'' == | ||
+ | Заголовки "WB4K header" и "CSYS header" описаны выше. | ||
+ | |||
+ | ==''vmlinux.bin''== | ||
+ | После заголовка CSYS идет запакованный образ ядра Linux с присоединенным (embedded) образом [[http://www.linux-mips.org/wiki/Ramdisk|RAM-диска]]. Полностью данный образ ядра //**vmlinux.bin**// имеет следующий формат : | ||
+ | |||
+ | <file> | ||
+ | V2.65 V2.75 | ||
+ | +--------------------+ 0x00 + 0x00+--------------------+ | ||
+ | | | | | | | ||
+ | | Kernel | kernel.bin | Kernel | | ||
+ | | | | | | | ||
+ | +--------------------+ 0x16d000 + 0x172000+--------------------+ | ||
+ | | ramdrive.img | | | ramdrive.img | | ||
+ | | gzipped | --> ram image tmpimg.img.gz (bz2) | bzip2 | | ||
+ | | +padding | | | +padding | | ||
+ | +--------------------+ 0x28f000 + 0x27c000+--------------------+ | ||
+ | </file> | ||
+ | После удаления заголовка CSYS и распаковки //**vmlinux.bin.gz**// : | ||
+ | |||
+ | <code> | ||
+ | $ perl -e 'print 0x10000+0xC' | ||
+ | 65548 | ||
+ | $ dd if=EdiEngBR6104K_2.75.bin of=vmlinux.bin.gz bs=1 skip=65548 | ||
+ | $ gunzip vmlinux.bin.gz | ||
+ | </code> | ||
+ | |||
+ | мы имеем 2 дополнительных блока: | ||
+ | |||
+ | <code> | ||
+ | Offset Length | ||
+ | 0x000000 0x172000 kernel | ||
+ | 0x172000 0x27с000 RAM image block (ramdrive.img) | ||
+ | </code> | ||
+ | |||
+ | **Tip1:** Отмечу, что ramdisk может быть сжат не gzip, а и bzip2. | ||
+ | |||
+ | Таким образом, образ файловой системы ramdisk (ramdrive.img) получается сжат дважды :). | ||
+ | |||
+ | Загрузчик BootLoader ищет заголовок ''CSYS'' во FLASH и расжимет ядро в память DRAM. В загрузчике встроен декомпрессор gzip (zlib) поэтому метод компрессии может быть только такой. Например, для прошивки 2.75 BootLoader декомпрессирует блок с адреса %%0xbfc1000c%%. Реультаты декомпрессии размещаются в DRAM по адресу %%0x80002000%% и управление передается на %%0x800026d8%%. Эти адреса жестко фиксированы и их следует учитывать при изготовлении собственных прошивок. | ||
+ | |||
+ | **Tip2:** На самом деле, загрузчик ищет заголовок CSYS header в памяти по адресам %%0x10000 + n*0x10000%% (где n 0,1,2). Т.е можно располагать ядро и без webpages-6104k.bin (я так и не понял зачем он нужен), и без главного заголовка. | ||
+ | |||
+ | Когда ядро Linux получает управление, оно само находит embedded образ файловой системы //**ramdrive.img**// и монтирует его как /dev/ram0 . | ||
+ | |||
+ | Если выбрать пункт BootLoader-a **"b"** то у нас есть возможность загрузить собственное ядро в память DRAM и запустить на исполнение, не загружая его во FLASH. Загрузка происходит по протоколу X-Modem, данные размещаются по адресу %%0x80810000%%. После загрузки BootLoader декомпрессирует данные в область %%0x80020000%% и передает управление как обычно. Таким образом, для загрузки из пункта "b" образ ядра //**vmlinux.bin.gz**// должен быть без заголовка "CSYS header". | ||
+ | |||
+ | == Файловая система == | ||
+ | |||
+ | Файловая система присоединена (embedded) к ядру Linux. Данная технологи называется Embedded Init RAM Disk (initrd). Из себя она представляет образ корневой (root) файловой системы ''EXT2FS'', запакованный gzip или bzip2. | ||
+ | |||
+ | <code> | ||
+ | $ perl -e 'print 0x172000' | ||
+ | 1515520 | ||
+ | $ dd if=vmlinux.bin of=ramdrive.img.gz bs=1 skip=1515520 | ||
+ | $ unzip ramdrive.img.gz | ||
+ | </code> | ||
+ | |||
+ | Полученный образ можно смонтировать: | ||
+ | |||
+ | <code> | ||
+ | $ mount -o loop ramdrive.img /mnt/edimax_ramdisk | ||
+ | </code> | ||
+ | |||
+ | На диске мы увидим обычные файлы ELF для процессора MIPS и стартовые скрипты системы. После изменения и отмонтирования ''umount'' можно использовать новый ramdisk.img . Данный образ диска автоматически гененрируется утилитами ''buildroot'' которые описаны ниже. | ||
+ | |||
+ | ==== BootLoader ==== | ||
+ | При загрузке, на консоле появляется следующее сообщение: | ||
+ | <code> | ||
+ | ADM5120 Boot: | ||
+ | </code> | ||
+ | |||
+ | Если нажать 3 раза пробел в течении около 1 сек, то появится загрузочное меню: | ||
+ | <code> | ||
+ | ADM5120 Boot: <--- press space 3x times | ||
+ | |||
+ | Linux Loader Menu | ||
+ | ==================== | ||
+ | (a) Download vmlinuz to flash ... | ||
+ | (b) Download vmlinuz to sdram (for debug) ... | ||
+ | (c) Exit | ||
+ | |||
+ | Please enter your key : | ||
+ | </code> | ||
+ | |||
+ | * Пункт **"a"** предназначен для загрузки ''firmware'' в FLASH. Требуется прошивка с ''CSYS'' заголовком \\ | ||
+ | * Пункт **"b"** для загрузки в RAM. Передавать нужно //**vmlinux.bin.gz**// (запакованные ядро+ramdisk) \\ | ||
+ | Протокол передачи - ''XMODEM'' | ||
+ | |||
+ | Например, загружаем прошивку в FLASH: \\ | ||
+ | Создаем ''firmware.bin'' | ||
+ | <code bash> | ||
+ | ../bin/mksyshdr csys.bin vmlinux.bin.gz | ||
+ | cat csys.bin vmlinux.bin.gz >firmware.bin | ||
+ | </code> | ||
+ | |||
+ | Загружаем полученный файл в FLASH через XMODEM: | ||
+ | <code> | ||
+ | Linux Loader Menu | ||
+ | ==================== | ||
+ | (a) Download vmlinuz to flash ... | ||
+ | (b) Download vmlinuz to sdram (for debug) ... | ||
+ | (c) Exit | ||
+ | |||
+ | Please enter your key : a | ||
+ | Downloading...........PASS | ||
+ | |||
+ | Eraseing nor flash.......PASS | ||
+ | |||
+ | Programming nor flash...PASS | ||
+ | |||
+ | |||
+ | Linux Loader Menu | ||
+ | ==================== | ||
+ | (a) Download vmlinuz to flash ... | ||
+ | (b) Download vmlinuz to sdram (for debug) ... | ||
+ | (c) Exit | ||
+ | |||
+ | Please enter your key : c | ||
+ | jump to linux code!! | ||
+ | |||
+ | |||
+ | LINUX started... | ||
+ | </code> | ||
+ | **Tip:** передавать следует не сразу после выбора меню, а через 5-7 сек. | ||
+ | |||
+ | ==== MIPS toolchain ==== | ||
+ | Для того, чтобы иметь возможность собирать программы под MIPS архитектуру, Вам необходим кросс-компилятор и собранная uclibc(([[http://www.uclibc.org/|uClibc]] - библиотека языка ''C'', оптимизированная для микроконтроллеров и embedded систем.)) для этой архитектуры. Есть 4 способа использовать MIPS toolchain: | ||
+ | - Скачать и установить готовый пакет ( см Ссылки ) | ||
+ | - Скачать и собрать 'вручную' ''gcc'' и ''uclibc'' для платформы MIPS | ||
+ | - Использовать собранный ''MIPS toolchain'' из собранного ''buildroot'' | ||
+ | - Если у Вас замечательный дистрибутив Debian, то рекомендую использовать пакет ''toolchain-source'' ( см Ссылки ) | ||
+ | Я использую третий способ, так как все равно использую buildroot. | ||
+ | \\ | ||
+ | При использовании USB накопителей можно использовать и более тяжеловесный (но стандартный) вариант библиотеки C - ''glibc'' | ||
+ | |||
+ | ==== buildroot ==== | ||
+ | Buildroot - замечательный пакет, являющийся частью проекта [[http://www.uclibc.org/|uClibc]] специально предназначенный для сборки ramdisk'ов для встроенных и микро систем. Именно то, что нам необходимо!\\ | ||
+ | Задачи ''buildroot'': | ||
+ | * загрузить и скомпилировать пакеты необходимые для построения (''gcc'', ''binutils'', ''ccache'', etc) | ||
+ | * загрузить и скомпилировать пакеты которые войдут в состав ramdisk'а (''uclibc'', ''busybox'', etc) | ||
+ | * построить ramdisk требуемого формата (''ext2'', ''cramfs'', ''jffs'') | ||
+ | |||
+ | При первом построении ''buildroot'' загрузит с сети необходимые компоненты для построения (''gcc, binutils, etc''), а далее те пакеты которые Вы выбрали в ''TARGETS''. Отмечу, что список пакетов, которые ''buildroot'' собирает простым добавлением в достаточно велик, перечислю некоторые: | ||
+ | * bash, busybox | ||
+ | * bzip2, gzip | ||
+ | * coreutils, diffutils, findutils | ||
+ | * dropbear_sshd | ||
+ | * autoconf/automake, gcc, flex, gdb, gdbserver, ltrace, strace | ||
+ | * iproute2, iptables, mrouted, netsnmp, netkitbase, netkittelnet, openssh, openssl, vtun, links, ltp | ||
+ | \\ | ||
+ | Написать Makefile для другого пакета большой сложности не составляет. | ||
+ | |||
+ | Настройка и сборка buildroot крайне проста: | ||
+ | * в ''Makefile'' определяем архитектуру: ''ARCH:=mipsel'' | ||
+ | * далее по вкусу включаем определения ''TARGETS'' | ||
+ | \\ | ||
+ | Небольшое описание структуры каталогов ''buildroot'':\\ | ||
+ | * ''build_mipsel/package-name/'' лежат исходные тексты пакетов | ||
+ | * ''build_mipsel/root/'' - готовая файловая система, которая превратится в ramdisk | ||
+ | * ''build_mipsel/staging_dir/'' - скомпилированные утилиты для построения | ||
+ | * ''make/'' содержит ''Makefile's'' для загрузки, распаковки, конфигурации, компиляции, установки. | ||
+ | * ''sources/'' содержит патчи и конфиги. | ||
+ | * ''sources/dl/'' содержит загруженные с сети пакеты. | ||
+ | * ''sources/target_skeleton/'' скелет файловой системы | ||
+ | * ''sources/device_table.txt'' файл с описанием какие каталоги, файлы, устройства, сокеты нужно создать в готовой файловой системе | ||
+ | * ''root_fs_mipsel'' - готовый образ файловой системы ''ramdisk'а'' | ||
+ | \\ | ||
+ | Для конфигурации ''busybox'': | ||
+ | <code bash> | ||
+ | cd build_mipsel/busybox/ | ||
+ | make menuconfig | ||
+ | cp .config ../../sources/busybox.config | ||
+ | cd - | ||
+ | </code> | ||
+ | Аналогичная процедура для ''uClibc.config'' | ||
+ | |||
+ | ==== kernel ==== | ||
+ | Процесс компиляции ядра мало чем отличается от компиляции для платформы x86, конечно это должен быть ''MIPS'' кросс-компилятор и ядро специально для этого чипсета. \\ | ||
+ | Перед компиляцией я устанавливаю переменные окружения: | ||
+ | <code bash> | ||
+ | export ARCH=mips | ||
+ | export CC=mipsel-linux-gcc | ||
+ | export CPP=mipsel-linux-cpp | ||
+ | export CXX=mipsel-linux-g++ | ||
+ | export AR=mipsel-linux-ar | ||
+ | export CXXCPP=mipsel-linux-cpp | ||
+ | export RANLIB=mipsel-linux-ranlib | ||
+ | </code> | ||
+ | Если использовать компиляторы из buildroot: | ||
+ | <code bash> | ||
+ | export PATH=/path/to/buildroot/build_mipsel/staging_dir/bin/:$PATH | ||
+ | </code> | ||
+ | \\ | ||
+ | Замечу, что в этом случае нет смысла вручную 'собирать' образ ядра с ''initrd'' - пусть за Вас это сделает ''make vmlinux''. Для этого готовый ''ramdisk'' требуется положить в ''arch/mips/ramdisk/ramdisk_el.gz''((настраивается)) и установить ''[*] Embed root filesystem ramdisk into the kernel'' в меню конфигурации ядра. \\ | ||
+ | Подробности см. в ''arch/mips/ramdisk/Makefile''. Перед упаковкой gzip ядро из ELF преобразуется в бинарный формат. | ||
+ | |||
+ | В составе архива находящегося на сайте производителя (Linux-SC.zip) входят утилиты для построения образа для Flash и генерации заголовков CSYS. | ||
+ | |||
+ | === USB root === | ||
+ | Для того, чтобы иметь возможность распологать корневую файловую систему на USB носителе, требуется наложить [[http://www.lammerts.org/software/kernelpatches/usb-storage-root.patch|патч]] смысл которого сводится в некоторой задержке монтирования, чтобы USB подсистема увидела и проинициализировала носитель. | ||
+ | |||
+ | ===== Ссылки ===== | ||
+ | * http://midge.vlad.org.ua Linux mini distribution for ADM5120 routers | ||
+ | * [[http://www.norocketscience.com/forum/|NoRocketScience Forum]] | ||
+ | * http://vlad.org.ua/adm5120/firmware/ | ||
+ | * http://adm5120.narod.ru/ | ||
+ | * http://www.linux-mips.org/wiki/Adm5120 | ||
+ | * http://www.linux-mips.org/wiki/BR6104 | ||
+ | |||
+ | === Компании и устройства=== | ||
+ | [[http://edimax.ru/broadband.html|Edimax в России]] | ||
+ | [[http://www.infineon.com/|Infineon]], [[http://www.infineon.com/cgi/ecrm.dll/ecrm/scripts/prod_ov.jsp?oid=52748&cat_oid=-12483|Infineon ADM5120]], | ||
+ | [[http://www.infineon.com/cmc_upload/documents/010/6565/EASY5120P-ATAToolBrief.pdf|ADM5120P 2 Channel VoIP ATA]] \\ | ||
+ | [[http://www.canyon-tech.com/products/show.cfm/Net/Wireless_Products_IEEE_802.11g/CN-WF512/|Canyon CN-WF512]] \\ | ||
+ | [[http://www.ovislink.com.tw|OvisLink]] компания производящяя Linux устройство [[http://www.ovislink.com.tw/MU9000.htm|MU-9000VPN - Multimedia Server + VPN Router ]] на чипсете ADM5120 \\ | ||
+ | [[http://www.arcadyan.com/Products/Digital_Home.htm#mlr50|Home Media Server (64M RAM, 32M Flash, 40-80G HDD)]], [[http://www.arcadyan.com/PDF/DigitalHome/HMS300.pdf|HMS300 Datasheet]] \\ | ||
+ | http://www.dns120-linux.org - Linux устройство на чипсете Adm5120 | ||
+ | [[http://www.google.com.ua/search?hl=uk&q=D-Link+DNS-120&btnG=%D0%9F%D0%BE%D1%88%D1%83%D0%BA+%D1%83+Google&meta=|google search D-Link 120]] \\ | ||
+ | |||
+ | === Crosscompile === | ||
+ | * [[http://people.debian.org/~debacle/cross.html|Setting up a Cross Development Environment on Debian GNU/Linux]] | ||
+ | * [[http://www.mobilab.unina.it/Resources/crosscompilerHOWTO.html|Crosscompiler HOWTO]] | ||
+ | * [[http://www.jimbrooks.org/web/linux/docs/programming/SettingUpACrossDevelopmentEnvironmentOnDebianLinux.php| Setting up a Cross Development Environment on and for Debian GNU/Linux]] | ||
+ | * [[http://cac.engin.umich.edu/doc/txt/mips_perf_gd.pdf|MIPS Compiling and Performance Tuning Guide]] | ||
+ | * http://skaya.enix.org/wiki/ToolChain | ||
+ | * Toolchain для RPM based дистрибутивов ftp://ftp.realitydiluted.com/linux/MIPS/toolchains/uclibc/RPMS/ | ||
+ | |||
+ | === Kernel & firmware sources === | ||
+ | * [[http://joco.kezdionline.ro/linux-2.4.31-adm.diff.bz2|2.4.31 patch (to vanilla kernel)]] | ||
+ | * http://www.canyon-tech.com/products/show.cfm/Net/Wireless_Products_IEEE_802.11g/CN-WF512/down | ||
+ | * http://www.edimax.co.uk/download/Linux-SC.zip | ||
+ | * http://www.edimax.nl/download/Linux-SC.zip | ||
+ | * http://www.edimax.at/download/Linux-SC.zip | ||
+ | * http://www.ovislink.com.tw/routerfaq.htm#5000GPL | ||
+ | * [[http://eeek.borgchat.net/lists/mips/msg18313.html|Porting to 2.6.x kernel]] | ||
+ | * [[http://sharon.esrac.ele.tue.nl/users/pe1rxq/|2.6.10 patch]] | ||
+ | |||
+ | |||
+ | === Документы === | ||
+ | * [[http://stuff.sateh.com/ccc.pdf|Hacking Linux-Powered Devices]] | ||
+ | * [[http://www.infineon.com/cmc_upload/documents/010/6590/ADM5120_Product_Brief.pdf|ADM5120 Product Brief]] | ||
+ | * [[http://midge.vlad.org.ua/datasheet/ADM5120-1.14-22Dec03.pdf|ADM5120 Datasheet]] | ||
+ | * [[http://midge.vlad.org.ua/datasheet/MX29LV160T.pdf|MX29LV160T]] [[http://midge.vlad.org.ua/datasheet/MX29LV320T-B-1.4.pdf|MX29LV320T]] Flash | ||
+ | * [[http://midge.vlad.org.ua/datasheet/]] | ||
+ | == MIPS == | ||
+ | * IRC канал #mipsrus в сети freenode (CP-1251) | ||
+ | * http://user.it.uu.se/~johanb/kurser/DS-DV/HT02/Progman/hardware.html | ||
+ | * http://www.xtrj.org/smr/smr_chinese.htm | ||
+ | * http://vlad.org.ua/adm5120/datasheet/4Kc_SoftwareUsersManual_01.17.pdf | ||
+ | |||
+ | |||
+ | |||
+ | === Купить === | ||
+ | zft: http://flyrouter.net/ | ||
+ | |||
+ | ===== Благодарности ===== | ||
+ | Компании 'Агатис' http://www.agatis.biz , которая является официальным дистрибутором фирм SWEEX и EDIMAX в Украине. А особенно Шафаренко Дмитрию - менеджеру по сбыту\\ | ||
+ | Большое спасибо Андрею Ищенко и Адилю Изидинову за наводку, Воропай Александру, а также Игорю Залатову другу и "HAM'у". | ||
+ | |||
+ | ===== (с) ===== | ||
+ | Vladislav Moskovets (Владислав Московец)\\ | ||
+ | mail: adm5120 {at} vlad . org . ua\\ | ||
+ | icq: 3703834 \\ | ||
+ | Буду рад любым замечаниям, конструктивной критике, предложениям, дополнительной информации. |