Перейти к содержанию
    

Oops

Участник
  • Постов

    128
  • Зарегистрирован

  • Посещение

Весь контент Oops


  1. Здравствуйте! Хорошо погуглив нашел решение проблемы тут: http://forums.xilinx.com/t5/Embedded-Linux...pile/td-p/39594 просто добавил опцию --static
  2. Здравстуйте! Пользуясь руководством http://xilinx.wikidot.com/microblaze-linux , скомпилировал Linux ( http://git.xilinx.com/ ) для процессора Microblaze на плату ml505. Linux стартует и работает нормально. Использую тотже кросскомпилятор, которым компилирова ядро Linux для компиляции программы: #include <stdio.h> #include <stdlib.h> int main ( void ) { printf("Hello world!!!\n"); return 0; } Программа компилируется без ошибок, делее используя tftp загружаю программу на плату, запускаю ее: Почемуто система не видит исполняемые файлы (. Скрипты запускаются и выполняются нормально. Может кто сталкивался с такой проблемой, подскажите как быть...
  3. Здрасти, здрасти!!! Имеется ОС Linux на которой поднят SNMP демон ( snmpd ). Я пишу библиотеку, которую подключает snmpd при старте и используя которую реагирует на команды. Библиотеку пишу на обычном С, пользуюсь помощью тут: http://www.net-snmp.org/wiki/index.php/TUT...oding_Tutorials . Понадобилось написать SNMP таблицу в кторой надо менять переменные. Работать с таблицей состоящей из одной строки - просто, вот пример: static oid ipConfTable_registration_oid[] = { 1, 3, 6, 1, 4, 1, 1958, 7, 2, 2, 3 }; // прикрепляем к таблици OID. int ipConfTable_handler (netsnmp_mib_handler *handler,netsnmp_handler_registration *reginfo,netsnmp_agent_request_info *reqinfo,netsnmp_request_info *requests); // объявляем функцию-обработчик обытий таблицы /// TABLE /// { netsnmp_table_data_set *table_set; netsnmp_table_row *row; table_set = netsnmp_create_table_data_set("Table"); table_set->allow_creation = 1; netsnmp_table_dataset_add_index(table_set, ASN_OCTET_STR); netsnmp_table_set_multi_add_default_row(table_set, // таблица из 5 колонок 1, ASN_IPADDRESS, 1, NULL, 0, 2, ASN_INTEGER, 1, NULL, 0, 3, ASN_IPADDRESS, 1, NULL, 0, 4, ASN_OCTET_STR, 1, NULL, 0, 5, ASN_IPADDRESS, 1, NULL, 0, 0 ); netsnmp_register_table_data_set(netsnmp_create_handler_registration ("Table",//NULL, ipConfTable_handler // прикрепляем фукцию обработчик, ipConfTable_registration_oid, OID_LENGTH(ipConfTable_registration_oid), HANDLER_CAN_RWRITE), table_set, NULL); row = netsnmp_create_table_data_row(); int index; index = 0; netsnmp_table_row_add_index(row, ASN_INTEGER, &index, sizeof(index)); ipConfAddress = 0x00000000; netsnmp_set_row_column(row, 1, ASN_IPADDRESS,(char*)&ipConfAddress, sizeof(ipConfAddress)); netsnmp_mark_row_column_writable(row, 1, 1); unsigned int num = 1; netsnmp_set_row_column(row, 2, ASN_INTEGER,(char*)&num, sizeof(num)); netsnmp_mark_row_column_writable(row, 2, 1); u_long ipConfNetMask = 0x00000000; netsnmp_set_row_column(row, 3, ASN_IPADDRESS, (char*)&ipConfNetMask,sizeof(ipConfNetMask)); netsnmp_mark_row_column_writable(row, 3, 1); netsnmp_set_row_column(row, 4, ASN_OCTET_STR, "eth0",strlen("eth0")); netsnmp_mark_row_column_writable(row, 4, 1); u_long gateway = 0x00000000; netsnmp_set_row_column(row, 5, ASN_IPADDRESS, (char*)&gateway,sizeof(gateway)); netsnmp_mark_row_column_writable(row, 5, 1); netsnmp_table_dataset_add_row(table_set, row); netsnmp_register_auto_data_table(table_set, NULL); } Далее в функции обработчике производим запись и чтение значений таблицы. int ipConfTable_handler(netsnmp_mib_handler *handler,netsnmp_handler_registration *reginfo,netsnmp_agent_request_info *reqinfo,netsnmp_request_info *requests) { u_long *ipConfAddress_cache = NULL; u_long *ipConfNetMask_cache = NULL; u_long *gateway_cache = NULL; netsnmp_variable_list *var; long int ret; netsnmp_request_info *request; netsnmp_table_request_info *table_info; long int variable; char i; for (request=requests; request; request=request->next) { var = request->requestvb; netsnmp_extract_iterator_context(request); table_info = netsnmp_extract_table_info(request); switch (reqinfo->mode) { case MODE_GET: if(key == 0){ readConfigEthernet(); key = 1;} switch (table_info->colnum) { case 1: snmp_set_var_typed_value(var, ASN_IPADDRESS,(u_char *) &ipConfAddress,sizeof( TYPE )); break; case 2: break; case 3: snmp_set_var_typed_value(var, ASN_IPADDRESS,(u_char *) &ipConfNetMask,sizeof( TYPE )); break; case 4: break; case 5: snmp_set_var_typed_value(var, ASN_IPADDRESS,(u_char *) &gateway,sizeof( TYPE )); break; default: break; } break; case MODE_SET_RESERVE1: switch (table_info->colnum) { case 1: if (requests->requestvb->type != ASN_IPADDRESS) { netsnmp_set_request_error(reqinfo, requests,SNMP_ERR_WRONGTYPE); return SNMP_ERR_WRONGTYPE; } break; case 3: if (requests->requestvb->type != ASN_IPADDRESS) { netsnmp_set_request_error(reqinfo, requests,SNMP_ERR_WRONGTYPE); return SNMP_ERR_WRONGTYPE; } break; case 5: if (requests->requestvb->type != ASN_IPADDRESS) { netsnmp_set_request_error(reqinfo, requests,SNMP_ERR_WRONGTYPE); return SNMP_ERR_WRONGTYPE; } break; default: break; } break; case MODE_SET_RESERVE2: switch (table_info->colnum) { case 1: memdup((u_char **) & ipConfAddress_cache, (u_char *) & ipConfAddress, sizeof(ipConfAddress)); if (ipConfAddress_cache == NULL) { netsnmp_set_request_error(reqinfo, requests,SNMP_ERR_RESOURCEUNAVAILABLE); return SNMP_ERR_RESOURCEUNAVAILABLE; } netsnmp_request_add_list_data(requests,netsnmp_create_data_list(DELAYED_INSTANCE_SET_NAME,ipConfAddress_cache, free)); break; case 3: memdup((u_char **) & ipConfNetMask_cache, (u_char *) & ipConfNetMask, sizeof(ipConfNetMask)); if (ipConfNetMask_cache == NULL) { netsnmp_set_request_error(reqinfo, requests,SNMP_ERR_RESOURCEUNAVAILABLE); return SNMP_ERR_RESOURCEUNAVAILABLE; } netsnmp_request_add_list_data(requests,netsnmp_create_data_list(DELAYED_INSTANCE_SET_NAME,ipConfNetMask_cache, free)); break; case 5: memdup((u_char **) & gateway_cache, (u_char *) & gateway, sizeof(gateway)); if (gateway_cache == NULL) { netsnmp_set_request_error(reqinfo, requests,SNMP_ERR_RESOURCEUNAVAILABLE); return SNMP_ERR_RESOURCEUNAVAILABLE; } netsnmp_request_add_list_data(requests,netsnmp_create_data_list(DELAYED_INSTANCE_SET_NAME,gateway_cache, free)); break; default: break; } break; case MODE_SET_ACTION: variable = 0; switch (table_info->colnum) { case 1: ipConfAddress = *(requests->requestvb->val.integer); break; case 3: ipConfNetMask = *(requests->requestvb->val.integer); break; case 5: gateway = *(requests->requestvb->val.integer); break; default: break; } break; case MODE_SET_UNDO: switch (table_info->colnum) { case 1: ipConfAddress = *((u_long *) netsnmp_request_get_list_data(requests,DELAYED_INSTANCE_SET_NAME)); break; case 3: ipConfNetMask = *((u_long *) netsnmp_request_get_list_data(requests,DELAYED_INSTANCE_SET_NAME)); break; case 5: gateway = *((u_long *) netsnmp_request_get_list_data(requests,DELAYED_INSTANCE_SET_NAME)); break; default: break; } break; case MODE_SET_COMMIT: case MODE_SET_FREE: break; } } return SNMP_ERR_NOERROR; } Подскажите как создать таблицу из нескольких строк? Как определить индекс строки к которой обратились из вне? Как создавать и удалять строки в таблице? Буду благодарен за простой понятный для новичка код на С. Помогите пожалуйста...
  4. Develop board on STM32F2xx!

    Здравствуйте! Посоветуйте, пожалуйста отладочную плату(develop board) на базе микроконтроллера STM32F2xx! Спасибо.
  5. Здравствуйте!!! Установил SNMPd, написал динамическую библиотеку, которая загружается когда нужно обработать необходимое SNMP сообщение. Все работает нормально. Вот только не знаю как сделать так чтобы всем хостам которые прошли аутентификацию на моем SNMP отправлялись TRAP сообщения. Понятно что нужно запоминать IP адреса хостов, которые прошли аутентификацию. Но как узнать адрес хоста от которого пришло SNMP сообщение? Подскажите пожалуйста кто знает!!! Спасибо!
  6. Здравствуйте!!! Нашел стандарты https://www.vita.com/online-store.html Может кто знает, где подобную информацию можно бесплатно почитать? :rolleyes: Спасибо!
  7. Здравствуйте! Разбираюсь со стандартом VPX VITA - 46, но не могу найти полного описания стандарта или сам стандарт. Может кто разбирался с этим, подскажите где взять нормальную информацию? На сайте: http://vita.com нашел только это : http://vita.com/specifications.html . :( PS: Вопрос наверное не в тему этой ветки форума, не знак куда его написать, написал здесь потому что система на ПЛИС :). Переместите если что. Спасибо!!!
  8. В общем чтобы получить доступ к физическим адресам Девайса и работать с ним, я использовал устрйство /dev/mem. Затем появился еще один нестандартный Девайс*, думал может можно будет создать еще одно устройство /dev/mem* и используя его тоже организовать работу с этим Девайсом. (опыта в разработке драйверов пока нету и времени мало чтобы освоить, проблема собственно в получении доступа к физическим адресам устройства ) Спасибо!!!
  9. Здравствуйте!!! Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам. Используется Операционная Система Linux 2.6 Подскажите как это сделать? Спасибо!!!
  10. Интересно, много информации в интернете, где uCLinux ставится на процессоры с поддержкой MMU. Возникает вопрос, зачем он там нужен? Когда можно и нормальный Linux на такие процессоры собрать. :05:
  11. Мистер PrSt спасибо Вам большое за помощь. И все таки мне надо к своей программке такой функционал прикрутить, конечно можно разобраться как реализован перехват в тех программках, которые указал мистер PrSt. Но не хватает времени, даже чтобы разобраться. :( Буду благодарен за пример, или информацию используя которую можно быстренько освоить перехват. Спасибо Всем!!! PS: Моя программка работает под встраиваемым Linux, на железке :)
  12. Здравствуйте!!! Нужно написать программку-демон, которая работает так: Открываем терминал, запускаем в фоне эту программку-демон и она работая в фоне, считывая все что выводится на консоль, предпринимает какие либо действия. Как сделать так чтобы программка перехватывала все что выводится в терминал? :) Спасибо!!!
  13. Здравствуйте!!! Пытаюсь скомпилировать uClinux на AT91 с ARM7TDMI и запустить под эмулятором Skyeye, в инете облазил все но так и не удалось найти нормального мануала все чтото типа такого: http://sourceforge.net/apps/trac/skyeye/wi...nux#tocuClinux0 http://mailman.uclinux.org/pipermail/uclin...une/001013.html во первых написано совсем мало, во вторых не компилится вообще. На самом сайте uClinux.org тоже нет нормально мануала, а именно интересует установка uClinux на проц ARM7TDMI без MMU. Спасибо!!!
  14. Непоставится Linux потому что у процессора нет MMU ? Вот нашел ссылку : http://www.ovpworld.org/download_ARM.php , попробую скачать симулятор и запустить там Linux / UcLinux. :rolleyes:
  15. Большое всем спасибо. Понятно, только я больше расположен к NetBeans. Я просто думал может есть прям специально заточеный под ARM софт, с отладчиком для Linux. Как вы думаете, хватит ли ресурсов процессора Сortex-3M ARMv7 для декодирования mp3 потока из под Linux ? Скорость потока 100 КБит/с
  16. Здравствуйте!!! Нужно научиться работать с процессором Сortex-3M ARMv7. Посоветуйте пожалуйста: 1) Какой отладочный модуль выбрать, чтобы на нем было много всего и относительно не дорого. 2) Какие среды разработки лучше использовать для работы с этим процессором (хотелось бы чтобы среда разработки работала на ОС Ubuntu). 3) Также нужно будет на данный отладочный набор установить Linux. Работать с ARMом начинаю с нуля, поэтому буду благодарен любой информации. Спасибо!!!
  17. Здравствуйте!!! Разбираюсь с SNMP кодированием, есть 2 вопроса. Используется хост операционная система Linux. 1) Нужно написать программку на С, которая будет генерировать и отправлять SNMP TRAP сообщения. Разбираюсь как это сделать, буду рад хорошему простому для начала примеру. 2) Можно ли используя программу NetSNMP snmptrap передать в TRAP сообщении несколько переменных? Пример генерации TRAP с одной переменной, типа string "Hello": snmptrap -v 1 -c public 192.168.104.71:162 1.3.3 192.168.104.251 0 1 '' 1.3.6.1.2.1.1.1.0 s 'Hello' А можно ли несколько переменных передать в одном TRAP сообщении, может через запятую или еще как? Пробовал так : snmptrap -v 1 -c public 192.168.104.71:162 1.3.3 192.168.104.251 0 1 '' 1.3.6.1.2.1.1.1.0 s 'Hello' , i 123 но ругается. Спасибо. :rolleyes:
  18. Спасибо, посмотрим. Вот нашел книгу по Linux API : http://kernelbook.sourceforge.net/kernel-api.pdf думаю там можно кое чего посмотреть.
  19. Здравствуйте!!! Пишу программку, в которой нужно работать с сетью. Тоесть через эту программку можно менять IP адрес сетевого интерфейса, маску, путь, также она работает в фоне и отслеживает состояние сети. Тоесть если сеть упала (выдернули сетевой кабель) программка сообщает об этом, если сеть заработала снова (подключили сетевой кабель) она также сообщает. Я думаю есть специальные API функции для работы с сетевым оборудованием в Linux. Посоветуйте кто знает, как это лучше сделать, где и что почитать? Спасибо!!!
×
×
  • Создать...