Здравствуйте.
Микроконтроллерами начал заниматься совсем недавно, опыт программирования есть, хочу сделать следующее:
плату которая берет значение с АЦП и шлет в Ethernet (с небольшой обработкой), задачу решать хочу на линуксе, те обязательно хочу чтобы там линукс стоял (uClinux) мало ли, что то добавить нужно будет, отсюда следующий вопрос:
Какой микроконтроллер выбрать и что дополнительно может потребоваться?
остановился на микроконтроллере STM32F107RCT6 и отладочной плате STM3210C-EVAL, но засомневался что uClinux на нем будет работать тк не удалось выяснить поддерживает ли uClinux данный Ethernet встроенный в микроконтроллер. Смотрел в Application notes но так и не понял что за Ethernet там встроен. Может кто знает хороший микроконтроллер под линукс и Ethernet ?
Также думаю над следующим вариантом:
Процессор SAM9XE128
Отладочная плата SAM9XE-EK
тогда нужно еще внешнии SDRAM и Flash, соответственно какого объема должно хватить для нормальной работы?
Микроконтроллер под linux + Ethernet
- Реклама
Re: Микроконтроллер под linux + Ethernet
Для твоей задачи линукса и близко не нужна.
Задача вобще не 5 копеек.
Рекомендую без глупостей взять МК ламинаримикро с встроенными MAC + PHY Ethernet, сделать простешиую плату, буквально RJ45 разьем, кварц, чуть рассыпухи и на базе StellarisWare за пару вечеров все закодить до полной работоспособности.
Задача вобще не 5 копеек.
Рекомендую без глупостей взять МК ламинаримикро с встроенными MAC + PHY Ethernet, сделать простешиую плату, буквально RJ45 разьем, кварц, чуть рассыпухи и на базе StellarisWare за пару вечеров все закодить до полной работоспособности.
Re: Микроконтроллер под linux + Ethernet
scio me nihil scire...
_______________________
<= Жалобная кнопка в правом нижнем углу... )
_______________________
Re: Микроконтроллер под linux + Ethernet
В микроэлектроннике 3-4 года - революция и новая эпоха.
Сколько можно с ENC28J60 на 10мегабит, тормозным интерфейсом наружу и за такие деньги сидеть ?
Автор темы в личку писал, но отвечу лучше тут, надо прогресс нести в массы
Есть весьма интересное семейство МК у Texas Instruments - Stellaris. В нем несколько МК с встроенными всеми компонентами 100 мегабитного Ethernet, наруже только согласующие трансформатор и сопротивления.
Я брал lm3s6432 - средненький по жирности, ног не слишком много, без проблем покупается в Москве.
Вот минимум, достаточный для запуска МК с работающим Езернетом и отладки Дальше навешивать по вкусу
К семеству есть замечательная библиотека StellarisWare, с которой все за 5 минут с полпинка запускается.
Практически вся программа, не считая моих драйверов под 1-wire и "cgi-скрипта", для формирования странички.
int main()
{
unsigned long ulIPAddr = 0;
unsigned char pucMACAddr[6] = { 0x10, 0x20, 0x30, 0x40, 0x50, 0x61};
IntMasterDisable();
// Configure main clock 50MHz
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);
FlashUsecSet(50);
// Configure SysTick for a 100Hz interrupt.
SysTickPeriodSet(SysCtlClockGet() / TICKS_PER_SECOND);
SysTickEnable();
SysTickIntEnable();
// Enable and Reset the Ethernet Controller.
SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);
// Enable Port F for Ethernet LEDs. PortF_2, PortF_3
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3);
// User LEDs PortG_0, PortG_1
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
GPIOPinTypeGPIOOutput(GPIO_PORTG_BASE, GPIO_PIN_0 | GPIO_PIN_1);
GPIOPadConfigSet(GPIO_PORTG_BASE, GPIO_PIN_0 | GPIO_PIN_1, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);
// User jumpers PortC_4, PortF_1
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
// SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4);
GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_4, 1, GPIO_PIN_TYPE_STD_WPU);
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_1, 1, GPIO_PIN_TYPE_STD_WPU);
// debug uart
UART1Init();
OneWire_Init();
// Enable Interrupts
IntMasterEnable();
UART1Write("HW Started.\n");
// Initialize the lwIP TCP/IP stack.
lwIPInit(pucMACAddr, 0, 0, 0, IPADDR_USE_DHCP); // глючит в длинке dhcp по черному
httpd_init();
http_set_cgi_handlers(&MyCGIList, 1);
http_set_ssi_handler(MySSIHandler, MySSITags, 2);
OneWireScanBus();
OneWireStart();
while(1)
{
if(ulIPAddr == 0)
{
// What is our current IP address?
ulIPAddr = lwIPLocalIPAddrGet();
// If it's non zero, update the display.
if(ulIPAddr)
{
LED_GREEN_ON();
// printf("IP %d.%d.%d.%d\n", ulIPAddr & 0xff, (ulIPAddr >>
& 0xff, (ulIPAddr >> 16) & 0xff, ulIPAddr >> 24);
}
}
}
return 0;
}
Результат примерно такой - http://satyr666.dyndns.org:20000/
Сколько можно с ENC28J60 на 10мегабит, тормозным интерфейсом наружу и за такие деньги сидеть ?
Автор темы в личку писал, но отвечу лучше тут, надо прогресс нести в массы
Есть весьма интересное семейство МК у Texas Instruments - Stellaris. В нем несколько МК с встроенными всеми компонентами 100 мегабитного Ethernet, наруже только согласующие трансформатор и сопротивления.
Я брал lm3s6432 - средненький по жирности, ног не слишком много, без проблем покупается в Москве.
Вот минимум, достаточный для запуска МК с работающим Езернетом и отладки Дальше навешивать по вкусу
К семеству есть замечательная библиотека StellarisWare, с которой все за 5 минут с полпинка запускается.
Практически вся программа, не считая моих драйверов под 1-wire и "cgi-скрипта", для формирования странички.
int main()
{
unsigned long ulIPAddr = 0;
unsigned char pucMACAddr[6] = { 0x10, 0x20, 0x30, 0x40, 0x50, 0x61};
IntMasterDisable();
// Configure main clock 50MHz
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);
FlashUsecSet(50);
// Configure SysTick for a 100Hz interrupt.
SysTickPeriodSet(SysCtlClockGet() / TICKS_PER_SECOND);
SysTickEnable();
SysTickIntEnable();
// Enable and Reset the Ethernet Controller.
SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);
// Enable Port F for Ethernet LEDs. PortF_2, PortF_3
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3);
// User LEDs PortG_0, PortG_1
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
GPIOPinTypeGPIOOutput(GPIO_PORTG_BASE, GPIO_PIN_0 | GPIO_PIN_1);
GPIOPadConfigSet(GPIO_PORTG_BASE, GPIO_PIN_0 | GPIO_PIN_1, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);
// User jumpers PortC_4, PortF_1
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
// SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4);
GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_4, 1, GPIO_PIN_TYPE_STD_WPU);
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_1, 1, GPIO_PIN_TYPE_STD_WPU);
// debug uart
UART1Init();
OneWire_Init();
// Enable Interrupts
IntMasterEnable();
UART1Write("HW Started.\n");
// Initialize the lwIP TCP/IP stack.
lwIPInit(pucMACAddr, 0, 0, 0, IPADDR_USE_DHCP); // глючит в длинке dhcp по черному
httpd_init();
http_set_cgi_handlers(&MyCGIList, 1);
http_set_ssi_handler(MySSIHandler, MySSITags, 2);
OneWireScanBus();
OneWireStart();
while(1)
{
if(ulIPAddr == 0)
{
// What is our current IP address?
ulIPAddr = lwIPLocalIPAddrGet();
// If it's non zero, update the display.
if(ulIPAddr)
{
LED_GREEN_ON();
// printf("IP %d.%d.%d.%d\n", ulIPAddr & 0xff, (ulIPAddr >>
}
}
}
return 0;
}
Результат примерно такой - http://satyr666.dyndns.org:20000/
Re: Микроконтроллер под linux + Ethernet
Развязочные конденсаторы где то обрезались -)))
Расставить у каждого vcc.
Кварц на 8Мгц не обязателен, есть встроенный RC генератор, если стабильность частоты не нужна для общения с переферией.
Расставить у каждого vcc.
Кварц на 8Мгц не обязателен, есть встроенный RC генератор, если стабильность частоты не нужна для общения с переферией.
- Реклама
Re: Микроконтроллер под linux + Ethernet
Если что
цены в Москве
lm3s6432 - 338р
atmega128 (и ее меньше минимума, делать на меньшем - просто наивно) - 172р
+
ENC28J60 - 128р
Только в первом случае у вас 32кб ОЗУ, 50Мгц, 32 бита, сеть 100 мегабит и крошечная примитивная плата,
а во втором 4кб ОЗУ, 20Мгц, 8 бит, сеть 10мегабит и плата, с которой еще повозиться за те же деньги )))
цены в Москве
lm3s6432 - 338р
atmega128 (и ее меньше минимума, делать на меньшем - просто наивно) - 172р
+
ENC28J60 - 128р
Только в первом случае у вас 32кб ОЗУ, 50Мгц, 32 бита, сеть 100 мегабит и крошечная примитивная плата,
а во втором 4кб ОЗУ, 20Мгц, 8 бит, сеть 10мегабит и плата, с которой еще повозиться за те же деньги )))
Re: Микроконтроллер под linux + Ethernet
Всем большое спасибо за ответы, вариант с lm3s6432 заманчив, но думаю устройство будет многопрофильным, поэтому думаю доплатить и поставить процессор SAM9XE128 на котором будет работать linux соответственно, но вот не знаю сколько необходимо SDRAM и Flash, может кто-нибудь собирал такую систему?
Re: Микроконтроллер под linux + Ethernet
Если уж так приспичило с линухом поиграть - купи за 2500р такую чтуку и экспериментируй http://starterkit.ru/html/index.php?nam ... view&id=32 Все уже есть + BSP прилагается.
Но, опять же, с большой вероятностью ты переоцениваешь "многопрофильность" своей задачи -)))
Но, опять же, с большой вероятностью ты переоцениваешь "многопрофильность" своей задачи -)))
Re: Микроконтроллер под linux + Ethernet
Могу до кучи сказать, что в китайских GPS навигаторах на WinCE обычно 32/64Mb RAM и 64Mb флеша, который занят меньше чем на половину.
Так что делай прикидки.
Так что делай прикидки.


