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

Oops

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

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

  • Посещение

Репутация

0 Обычный

Информация о Oops

  • Звание
    Частый гость
    Частый гость
  • День рождения 06.07.1987

Информация

  • Город
    Array
  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. Спасибо!!!
×
×
  • Создать...