02.02.2017, 05:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Знакомство с Microchip TCP/IP+pic18f67j60
Здравствуйте.
Думаю поделюсь небольшим опытом в работе с TCP/IP , так как для новичков это тяжело для изучения.Хотя волков боятся,то в лес не ходить.
С чего начать ? Думаю для чего это все(мое мнение,никому не навязываю):
1) Удобство работы через браузер,контроль и установка переменных.
2) RTOS примитивная сделана на стек
3) Научится работать с кучей модулей файлов
4) Опыт о работе сетевых технологий
5) В наличии 10 штук pic18f67j60 лежат с давних времен
Также хочу сказать что стек разработан уже давно,но разрастался с каждой версией и в какой то момент tcp/ip вобще вырезали из mla библиотек. Пользуюсь не самой новой,но понятной для меня.
Версия стека v5.20, компилятор mcc18 v3.47, MPLAB IDE v8.88
Я думал о переносе на xc8 и не стал заморачиваться.
Что такое стек? Это модель OSI,в которой пакет собирает в другой пакет и так до прикладного уровня программ или браузера.
Что такое протокол? Это общение двух устройств по определенному договору обмена информацией.
Скачать компилятор mcc18 v3.47 можно отсюда http://rutracker.org/forum/viewtopic.php?t=3900715
Microchip TCP/IP v5.2 отсюда можно слить http://www.microchip.com/mplab/micro...r-applications Хотя позже выложу свой проект.
Также у меня завалялась платка с тритона http://www.trt.ru/design/solutions/trt-ethernet.htm
Там и схему можно скачать принциапиальную.
По поводу MPLAB IDE v8.88 скачать можно отсюда http://www.microchip.com/development...nloads-archive
Также желательно установить Wireshark для просмотра пакетов и обмена данных по ethernet порт.
Также выкладываю архивом лабораторные работы по стеку на русском.
Есть и противники,что это старо и т.д. , у каждого свое личное мнение.
Выкладывать информацию не так быстро буду.
Пожалуйста негативные мнения и пообщаться в ветку Отвлекитесь, эмбеддеры! ,личное пишите мне в личный кабинет. По делу прошу спрашивать и поправлять.
__________________
Глаза боятся,а руки делают.
Последний раз редактировалось CERGEI1982; 02.02.2017 в 06:37.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо CERGEI1982 за это сообщение:
|
|
|
02.02.2017, 07:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Знакомство с Microchip TCP/IP+pic18f67j60
Вообще весь стек TCP/IP я в двух словах рассказать не смогу,но попытаюсь.
Сам читал много вникая и то забывается кое что.
Представьте стек это как конфета с несколькими обертками(слои мас-arp или ip) и на каждой обертке написано какому человеку передать по цепочке. То есть,чтоб создать такую конфету каждый человек оборачивает обертку на конфету сверху и получается несколько слоев оберток отправляют куда то в подарок и там где то каждый человек(слой программного обеспечения) забирает обертку одну и в конце остается конфета(информация). Обертки конфеты(информации) и нужны для отправки и доставки кому то определенному. Вот так образно.
Что такое MAC и IP- это адреса удаленного компьютера или устройства с которым мы желаем обмениваться информацией.
Что такое сокет: Это адресация уже в самом компьютере,к IP адресу добавляется порт на котором работает приложение ожидающее информацию с сети( например браузер начинает работать по 80 порту).Так как приложений может быть много на одном компьютере,так и портов много чтобы обратится к определенному приложению.
То есть чтоб адресовать информацию от одного устройства к другому нужно знать мас,IP,порт и все это запихивается в пакет для отправки,с информацией о удаленном хосте,так и свои мас,IP,порт.
Буду обозначать уровни стека снизу верх цифрами и описывая их:
------------------------------------------------------------------------------------
1) Физический- это провода,по простому где меняется сигнал по протоколу физического уровня,бывают разные в зависимости от скорости. У нас работает на скорости 10 Мбит/с,по протоколу 10-BaseT
------------------------------------------------------------------------------------
2) МАС уровень- уже работает с мас адресацией,каждый компьютер или устройство имея порт ethernet-имеет свой уникальный мас адрес. То есть чтоб послать пакет другому компьютеру надо знать как минимум мас адрес.
Физически этот уровень сделан в pic18f67j60, то есть не нужно писать отдельную программу обработки пакетов мас уровня,а просто ложим пакет в определенный регистр и отправляем определенным битом управления. Если по простому
-------------------------------------------------------------------------------------
3) ARP протокол уже упаковывается в пакеты мас уровня. Для чего нужен- чтоб узнать мас адрес удаленного компьютера или устройства для отправки сообщения,при этом зная тока его IP.
3) IP протокол- это протокол дейтаграмм,то есть адресованных определенному компьютеру или устройству пакетов в которых лежит пакет ICMP или TCP или UDP.
-------------------------------------------------------------------------------------
4) ICMP это пинг проще сказать,хотя по этому протоколу передается и служебная информация от роутеров или недоступности порта. Пакет ложиться в пакет IP-›MAC
4) UDP протокол- вот уже можно ложить в него нужную информации для отправки.Вот тут то и появляется еще и порт приложения.
4) TCP протокол- это гарантированная доставка информации,до этого все остальные протоколы не гарантировали доставку,даже если пакет потеряется в сети.
-------------------------------------------------------------------------------------
5) HTTP протокол уже для обмена информацией между сервером и вашим браузером.
Почему вы спросите в интернете не видите IP адресов,все просто есть протокол DNS который преобразует на удаленном сервере ваше название сайта в IP и по этому IP вы уже начинаете обмениваться информацией.
К тому же на рисунке стека ICMP неправильно нарисован. UDP и TCP пакет используют IP пакет для отправки своего сообщения(тела).
Написал много,надеюсь кратко будет понятно.
__________________
Глаза боятся,а руки делают.
Последний раз редактировалось CERGEI1982; 02.02.2017 в 07:55.
|
|
|
|
11.02.2017, 05:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Знакомство с Microchip TCP/IP+pic18f67j60
Сам проект тестовый мой TCPIP Demo App-C18.mcp,как же без него будем.
По настройке находим и открываем файлик TCPIPConfig.h и начинаем настраивать нужные опции,для сервера http:
Код:
|
// ================================================== =====================
// Application Options
// ================================================== =====================
/* Application Level Module Selection
* Uncomment or comment the following lines to enable or
* disabled the following high-level application modules.
*/
//#define STACK_USE_UART // Application demo using UART for IP address display and stack configuration
//#define STACK_USE_UART2TCP_BRIDGE // UART to TCP Bridge application example
//#define STACK_USE_IP_GLEANING
#define STACK_USE_ICMP_SERVER // Ping query and response capability
//#define STACK_USE_ICMP_CLIENT // Ping transmission capability
//#define STACK_USE_HTTP_SERVER // Old HTTP server
#define STACK_USE_HTTP2_SERVER // New HTTP server with POST, Cookies, Authentication, etc.
//#define STACK_USE_SSL_SERVER // SSL server socket support (Requires SW300052)
//#define STACK_USE_SSL_CLIENT // SSL client socket support (Requires SW300052)
//#define STACK_USE_AUTO_IP // Dynamic link-layer IP address automatic configuration protocol
//#define STACK_USE_DHCP_CLIENT // Dynamic Host Configuration Protocol client for obtaining IP address and other parameters
//#define STACK_USE_DHCP_SERVER // Single host DHCP server
//#define STACK_USE_FTP_SERVER // File Transfer Protocol (old)
//#define STACK_USE_SMTP_CLIENT // Simple Mail Transfer Protocol for sending email
//#define STACK_USE_SNMP_SERVER // Simple Network Management Protocol v2C Community Agent
//#define STACK_USE_TFTP_CLIENT // Trivial File Transfer Protocol client
//#define STACK_USE_GENERIC_TCP_CLIENT_EXAMPLE // HTTP Client example in GenericTCPClient.c
//#define STACK_USE_GENERIC_TCP_SERVER_EXAMPLE // ToUpper server example in GenericTCPServer.c
//#define STACK_USE_TELNET_SERVER // Telnet server
//#define STACK_USE_ANNOUNCE // Microchip Embedded Ethernet Device Discoverer server/client
//#define STACK_USE_DNS // Domain Name Service Client for resolving hostname strings to IP addresses
//#define STACK_USE_NBNS // NetBIOS Name Service Server for repsonding to NBNS hostname broadcast queries
//#define STACK_USE_REBOOT_SERVER // Module for resetting this PIC remotely. Primarily useful for a Bootloader.
//#define STACK_USE_SNTP_CLIENT // Simple Network Time Protocol for obtaining current date/time from Internet
//#define STACK_USE_UDP_PERFORMANCE_TEST // Module for testing UDP TX performance characteristics. NOTE: Enabling this will cause a huge amount of UDP broadcast packets to flood your network on the discard port. Use care when enabling this on production networks, especially with VPNs (could tunnel broadcast traffic across a limited bandwidth connection).
//#define STACK_USE_TCP_PERFORMANCE_TEST // Module for testing TCP TX performance characteristics
//#define STACK_USE_DYNAMICDNS_CLIENT // Dynamic DNS client updater module
//#define STACK_USE_BERKELEY_API // Berekely Sockets APIs are available |
Далее для заливки в память странички браузера раскомментируем только:
Код:
|
#define STACK_USE_MPFS2 |
Спускаемся ниже,тут настраиваем наш МАС адрес платы и IP,также маску сети,шлюз,днс сервер:
Код:
|
#define MY_DEFAULT_HOST_NAME "MCHPBOARD"
#define MY_DEFAULT_MAC_BYTE1 (0x00) // Use the default of
#define MY_DEFAULT_MAC_BYTE2 (0x04) // 00-04-A3-00-00-00 if using
#define MY_DEFAULT_MAC_BYTE3 (0xA3) // an ENCX24J600 or ZeroG ZG2100
#define MY_DEFAULT_MAC_BYTE4 (0x00) // and wish to use the internal
#define MY_DEFAULT_MAC_BYTE5 (0x00) // factory programmed MAC
#define MY_DEFAULT_MAC_BYTE6 (0x02) // address instead.
#define MY_DEFAULT_IP_ADDR_BYTE1 (192ul)
#define MY_DEFAULT_IP_ADDR_BYTE2 (168ul)
#define MY_DEFAULT_IP_ADDR_BYTE3 (0ul)
#define MY_DEFAULT_IP_ADDR_BYTE4 (10ul)
#define MY_DEFAULT_MASK_BYTE1 (255ul)
#define MY_DEFAULT_MASK_BYTE2 (255ul)
#define MY_DEFAULT_MASK_BYTE3 (255ul)
#define MY_DEFAULT_MASK_BYTE4 (0ul)
#define MY_DEFAULT_GATE_BYTE1 (192ul)
#define MY_DEFAULT_GATE_BYTE2 (168ul)
#define MY_DEFAULT_GATE_BYTE3 (0ul)
#define MY_DEFAULT_GATE_BYTE4 (1ul)
#define MY_DEFAULT_PRIMARY_DNS_BYTE1 (192ul)
#define MY_DEFAULT_PRIMARY_DNS_BYTE2 (168ul)
#define MY_DEFAULT_PRIMARY_DNS_BYTE3 (0ul)
#define MY_DEFAULT_PRIMARY_DNS_BYTE4 (1ul)
#define MY_DEFAULT_SECONDARY_DNS_BYTE1 (0ul)
#define MY_DEFAULT_SECONDARY_DNS_BYTE2 (0ul)
#define MY_DEFAULT_SECONDARY_DNS_BYTE3 (0ul)
#define MY_DEFAULT_SECONDARY_DNS_BYTE4 (0ul) |
Ниже идут настройки сколько можно портов открывать на нужный сокет по протоколу и размеры выделяемой памяти под определенный протокол,оставил по умолчанию.
Как создать веб страничку?
Нужно написать в любом блокноте страничку на html,потом открываем утилиту MPFS2.exe, выбираем где лежит сайт,также выбираем в каком виде наш образ сайта будет(нам во внутреннюю память контроллера C18/C32 Image). Ну и сам где проект лежит,где будет образ лежать.
Будет регенерирован файл MPFSImg2.с и нужно обязательно пересобрать проект и залить его в микроконтроллер.
Да и сразу дам уточнение,после написания странички сайта сделайте файл index.htm, в настройках TCPIPConfig.h указан какой файл странички веб сервера подгружать. Ошибетесь то не увидите страничку вообще...
Простите я так кратко описываю,но думаю у кого будут вопросы спросят. Пытался задавать вопросы на microchip.su , но местные гуру там не очень то хотят общаться по этим вопросам.
__________________
Глаза боятся,а руки делают.
Последний раз редактировалось CERGEI1982; 11.02.2017 в 06:02.
|
|
|
|
11.02.2017, 16:42
|
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 434
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: Знакомство с Microchip TCP/IP+pic18f67j60
CERGEI1982, а сколько флеши из 128к остается от этой библиотеки для юзера, то бишь для бизнес-логики?
|
|
|
|
12.02.2017, 15:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,001
Сказал спасибо: 0
Сказали Спасибо 4,946 раз(а) в 2,373 сообщении(ях)
|
Re: Знакомство с Microchip TCP/IP+pic18f67j60
Сообщение от CERGEI1982
|
Буду обозначать уровни стека снизу верх цифрами и описывая их
|
здесь стоит упомянуть "краеугольный камень" - OSI и вики
кроме того, есть немало книг по освоению сетевых протоколов, TCP/UDP в частности
|
|
|
|
13.02.2017, 02:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Знакомство с Microchip TCP/IP+pic18f67j60
Сообщение от ampy
|
CERGEI1982, а сколько флеши из 128к остается от этой библиотеки для юзера, то бишь для бизнес-логики?
|
Хорошый вопрос.
Да в pic18f67j60 128k флеша,посмотрел сколько применяется в мплабе: почему то он показывает мне общая память 65532,использовано 20418. Посмотрел готовый hex файл,весит 113 кб. Сам в этом еще не понял почему так.
__________________
Глаза боятся,а руки делают.
|
|
|
Сказали "Спасибо" CERGEI1982
|
|
|
13.02.2017, 02:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Знакомство с Microchip TCP/IP+pic18f67j60
Сообщение от jump
|
здесь стоит упомянуть "краеугольный камень" - OSI и вики
кроме того, есть немало книг по освоению сетевых протоколов, TCP/UDP в частности
|
Понять OSI не так и легко с первого раза.Что такое OSI: Несколько кубиков один на другом ? Абстракция уровней,легче объяснить для чего это все делается и как передается и принимается информация.
__________________
Глаза боятся,а руки делают.
|
|
|
|
13.02.2017, 02:57
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,197
Сказал спасибо: 11,131
Сказали Спасибо 3,843 раз(а) в 2,920 сообщении(ях)
|
Re: Знакомство с Microchip TCP/IP+pic18f67j60
CERGEI1982, ну с моделью OSI все достаточно просто, а вот с ее урезаниями до меньшего числа уровней уже все сложнее.
Тут бы неплохо тексты делать в содружестве с людьми, разбирающимися в конкретной тематике.
Куда будет стучаться браузер, если написать https вместо http в строке адреса?
Лучше писать таки правильный текст, а не с точностью до и с оговорками.
У кого-то может возникнуть ложное понимание/уверенность и потом будут проблемы в процессе.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
06.06.2017, 22:59
|
|
Прохожий
Регистрация: 06.06.2017
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Знакомство с Microchip TCP/IP+pic18f67j60
CERGEI1982,
Добрый день. Заинтересовала ваша тема на форуме. Год назад писал для тритоновской платы небольшой TCP/IP стек с нуля. Получилось сделать PING, UDP, ARP, TCP. За основу взял цикл статей: http://we.easyelectronics.ru/electro...lnoy-seti.html
Но потом всё-таки решил освоить микрочиповский стек - довольно сложно писать с нуля HTTP-странички. К PIC18 подключил ENC424j600. Пинги идут, но HTTP страничка не загружается - страница не найдена. 12 пакетов по TCP проходят, но вместо страницы - страница не найдена. Причём при компиляции во Flash МК страница заливается - в чём может быть проблема?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:07.
|
|