Jump to content

    

gopher

Участник
  • Posts

    13
  • Joined

  • Last visited

Reputation

0 Обычный
  1. как активировать tcp keepalive на встроенном TCP/IP стеке SIM900R? Для telit 862 keepalive включался через "AT#SCFGEXT=1,0,0,5", а вот как это сделать на SIM900 что-то не нахожу.
  2. lto таки заработало :yeah: . как оказывается в LDFLAGS кроме -flto надо еще и флаги оптимизации добавлять. добавил в makefile LDFLAGS += -flto $(OPTIMIZATION) CFLAGS += -flto и вот оно, счастье. с -Os -combine -fwhole-program (gcc version 4.5.0 20091115 т.к. в 4.7 -combine убрали): text data bss 16665 40 4232 c -Os -flto (gcc gcc version 4.7.0 20110328) text data bss 16113 40 4240
  3. спасибо! смеха ради сравнил время сборки проекта на win2008x64: kgp-arm-eabi_x86-32 собарает за ~25 сек, kgp-arm-eabi_x86_64 за ~28 сек. В обоих случаях размер бинаря на выходе идентичен. А lto так и не заработало :crying:, падает с ошибкой 'internal compiler error: in insert_value_copy_on_edge, at tree-outof-ssa.c:242'
  4. обычная буферизация. попробуйте так printf("Something string"); fflush(stdout);
  5. можно еще 'AT+CMGD=?' попробовать. команда возвращает список занятых ячеек. AT+CMGD=? +CMGD: (1,2,3,6,7,17,18,19,20,37,38,39,47),(0-4) OK
  6. я так настраиваю: FIO0DIR |= 1UL << 29; // P0.29 FIO0DIR |= 1UL << 30; // P0.29 IODIR0 |= 1UL << 29; // P0.29 IODIR0 |= 1UL << 30; // P0.29 user.manual.lpc23xx.pdf, GPIO port Direction register IODIR and FIODIR(IO[0/1]DIR - 0xE002 80[0/1]8 and FIO[0/1/2/3/4]DIR - 0x3FFF C0[0/2/4/6/8]0) Remark: GPIO pins P0.29 and P0.30 are shared with the USB D+/− pins and must have the same direction. If either P0DIR bits 29 or 30 are configured LOW in the IO0DIR or FIO0DIR registers, both, P0.29 and P0.30, are inputs. If both, P0DIR bit 29 and bit 30 are HIGH, both, P0.29 and P0.30, are outputs.
  7. :bb-offtopic: может покажите как правильно объявлять указатель на volatile, а как указатель с квалификатором volatile. Недавно столкнулся с этим вопросом, ничего толкового не нашел (( :bb-offtopic:
  8. попробуйте делать typedef отдельно от packed. Проверил на gcc version 3.3.1, sizeof(param) дает 94 struct param_t { unsigned short Version; unsigned short Hi_Addr; unsigned short Lo_Addr; unsigned short CtlReg; unsigned short H_size; unsigned short V_size; unsigned short AccBin; unsigned short XDelay; unsigned short CCDTemp; unsigned short GainDark; unsigned short Period; unsigned short Tint; unsigned short DualRatio; unsigned short FIFOState; unsigned short InfoReg; unsigned short Data[32]; } __attribute__((packed)); typedef struct param_t param;
  9. делал нечто похожее, но на lpc2378. Проблема была в том, что startup от первого приложения переводил процессор в user mode, соответственно startup от второго приложения уже не мог переключиться в supervisor mode (нужно для инициализации стеков в каждом их режимов). Все заработало после того, как я убрал перевод первого приложения в user mode из startup.
  10. lpc2378 и ETHERNET RAM

    вот я и спрашиваю, как это объяснить линкеру.
  11. lpc2378 и ETHERNET RAM

    В проекте используется lpc2378. Ни ETHERNET ни USB не используется. Возможно ли использовать ETHERNET RAM (16 kB) и USB RAM (8 KB) как обычную ОЗУ? Если да, то как это сделать? Для разработки используется keil + GCC, как я понимаю надо править LinkerScript.ld, но я не понял как указать для секции DATA два участка памяти. Какие будут мысли по этому поводу?