Jump to content

    

Oops

Участник
  • Content Count

    128
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Oops

  • Rank
    Частый гость
  • Birthday 07/06/1987

Информация

  • Город
    г.Омск
  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 загружаю программу на плату, запускаю ее: Цитата/usr# ls /usr# tftp -g -r hello 192.168.224.205 tftp: using blksize 512 using server '192.168.224.205:69', remote_file 'hello',local_file 'hello' /usr# ls hello /usr# ./hello /bin/sh: ./hello: Permission denied /usr# chmod +x ./hello /usr# ./hello /bin/sh: ./hello: not found /usr# ls -all drwxr-xr-x 2 0 0 0 Jan 1 04:45 . drwxrwxrwx 12 10042 2223 0 Jan 1 04:33 .. -rwxr-xr-x 1 0 0 6868 Jan 1 04:45 hello Почемуто система не видит исполняемые файлы (. Скрипты запускаются и выполняются нормально. Может кто сталкивался с такой проблемой, подскажите как быть...
  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!

    Спасибо!!!
  5. Develop board on STM32F2xx!

    Здравствуйте! Посоветуйте, пожалуйста отладочную плату(develop board) на базе микроконтроллера STM32F2xx! Спасибо.
  6. Здравствуйте!!! Установил SNMPd, написал динамическую библиотеку, которая загружается когда нужно обработать необходимое SNMP сообщение. Все работает нормально. Вот только не знаю как сделать так чтобы всем хостам которые прошли аутентификацию на моем SNMP отправлялись TRAP сообщения. Понятно что нужно запоминать IP адреса хостов, которые прошли аутентификацию. Но как узнать адрес хоста от которого пришло SNMP сообщение? Подскажите пожалуйста кто знает!!! Спасибо!
  7. Здравствуйте!!! Нашел стандарты https://www.vita.com/online-store.html Может кто знает, где подобную информацию можно бесплатно почитать? Спасибо!
  8. Здравствуйте! Разбираюсь со стандартом VPX VITA - 46, но не могу найти полного описания стандарта или сам стандарт. Может кто разбирался с этим, подскажите где взять нормальную информацию? На сайте: http://vita.com нашел только это : http://vita.com/specifications.html . PS: Вопрос наверное не в тему этой ветки форума, не знак куда его написать, написал здесь потому что система на ПЛИС . Переместите если что. Спасибо!!!
  9. Цитата(faa @ Dec 27 2010, 13:32) Стесняюсь спросить, а зачем? Одной программе достаточно одного такого девайса. А у других программ будет у каждой свой экземпляр. Посмотрите исходник devmem.c - все сразу станет ясно. Или так Кодif((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) FATAL; ... map_bram = mmap(NULL, MAP_RAM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, RAM_ADDR); map_regs = mmap(NULL, MAP_REG_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, REG_ADDR); /* и т.д. */ В общем чтобы получить доступ к физическим адресам Девайса и работать с ним, я использовал устрйство /dev/mem. Затем появился еще один нестандартный Девайс*, думал может можно будет создать еще одно устройство /dev/mem* и используя его тоже организовать работу с этим Девайсом. (опыта в разработке драйверов пока нету и времени мало чтобы освоить, проблема собственно в получении доступа к физическим адресам устройства ) Спасибо!!!
  10. Здравствуйте!!! Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам. Используется Операционная Система Linux 2.6 Подскажите как это сделать? Спасибо!!!
  11. Интересно, много информации в интернете, где uCLinux ставится на процессоры с поддержкой MMU. Возникает вопрос, зачем он там нужен? Когда можно и нормальный Linux на такие процессоры собрать.
  12. Цитата(PrSt @ Nov 30 2010, 17:13) от amw - http://code.google.com/u/amwsoft/ вот то что вам нужно http://code.google.com/p/developer-console/ Мистер PrSt спасибо Вам большое за помощь. И все таки мне надо к своей программке такой функционал прикрутить, конечно можно разобраться как реализован перехват в тех программках, которые указал мистер PrSt. Но не хватает времени, даже чтобы разобраться. Буду благодарен за пример, или информацию используя которую можно быстренько освоить перехват. Спасибо Всем!!! PS: Моя программка работает под встраиваемым Linux, на железке
  13. Здравствуйте!!! Нужно написать программку-демон, которая работает так: Открываем терминал, запускаем в фоне эту программку-демон и она работая в фоне, считывая все что выводится на консоль, предпринимает какие либо действия. Как сделать так чтобы программка перехватывала все что выводится в терминал? Спасибо!!!
  14. Здравствуйте!!! Пытаюсь скомпилировать 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. Спасибо!!!