Примите это за правило и вы сэкономите себе много часов потраченных на отладку, если будете инициализировать участки памяти выделяемые для ваших контейнеров, перед работой с ними.
Обычно мы пользуемся как-то так:

MY_CLASS myClass
for (i=0;i<Len;i++)
     myClass.FeedData(i,szData[i]);

Но правильней сделать так:

MY_CLASS myClass
 
memset(&myClass,0,sizeof(myClass));
 
for (i=0;i&lt;Len;i++)
     myClass.FeedData(i,szData[i]);

Функция memset весьма проста в использовании:

void *memset(void *s, int c, size_t n);
 

Bash-скрипты — это мощнейший системный функционал, предоставленный пользователям всех современных версий Linux и UNIX. Написание скриптов предоставляет широкий спектр возможностей автоматизации работы операционной системы, там самым перекладывая большую часть повседневной консольной рутины на плечи компьютера. В данной статье раскрыты только лишь основные возможности Bash, что позволит использовать ее как отправную точку для дальнейшего изучения.

Первый Bash скрипт

В начале написания имеется необходимость явно указать интерпретатору команд директорию, из которой Bash будет вызван при запуске скрипта и сам его «загрузчик». Для этого наберем следующую команду в терминале:

$ which bash

Ответ должен быть примерно следующим:

linuxconfig.org:~$ which bash
/bin/bash/

Этот вывод может отличаться, в разных версиях Linux или UNIX. Теперь создайте новый файл с именем hello.sh и откройте его в своем любимом текстовом редакторе. Вставьте в него следующий код:
Continue reading »

 

Продолжение. Начало в первой части.
Bash-скрипты — это мощнейший системный функционал, предоставленный пользователям всех современных версий Linux и UNIX. Написание скриптов предоставляет широкий спектр возможностей автоматизации работы операционной системы, там самым перекладывая большую часть повседневной консольной рутины на плечи компьютера. В данной статье раскрыты только лишь основные возможности Bash, что позволит использовать ее как отправную точку для дальнейшего изучения.

Циклы

Циклы, как и в языках программирования, в Bash выполняют аналогичную функцию, то есть служат для перебора некоторого множества элементов. Типов цикла существует три: цикл с фиксированным количеством итераций (FOR), цикл с предусловием (WHILE) и цикл с постусловием (UNTIL). Разберем отдельно каждый из них.

Цикл FOR

#!/bin/bash
# bash for loop
for f in $( ls /var/ ); do
 echo $f
done

Continue reading »

 

На Debian / CentOS привязать несколько IP адресов к одной сетевой карте можно с помощью алиасов.
Достаточно прописать в файле /etc/network/interfaces следующую конфигурацию:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
        address XXX.YYY.ZZZ.AAA
        netmask 255.255.255.0
        network XXX.YYY.ZZZ.0
        broadcast XXX.YYY.ZZZ.255 Continue reading »
 

«Дуалистический принцип использования сельскохозяйственных орудий на
гидроповерхности» (Вилами по воде писано)

«Бинарный характер высказываний индивидуума утратившего социальную
активность» (Бабушка надвое сказала)

«Проблемы транспортировки жидкостей в сосудах с переменной структурой
плотности» (Носить воду в решете) Continue reading »

 

Появилась необходмость подключиться mplayer`ом к винеосерверу Axis M7001. Этот видеосервис раздает поток через RTSP поток.
Стандартная сборка mplayer которая была у меня не поддерживает подобного потокового вещания.

Для сборки новой версии mplayer нам понадобятся:
1) библиотека «LIVE555 Streaming Media»
2) сам mplayer Continue reading »

 

Если кому-то понадобится...
необходимые пакеты iptables, bind...
также необходимо настроить ядро для iptables...
Сделал файл со скриптом ниже, установив его в загрузку: Continue reading »

 

The LPC11xx IAP provides function to call the ISP in the BootROM from user code. Here's an example of how to use it. The code is based on UART example for LPC1114 (for LPCXpresso)

The first thing is that, if you have LPC11xx UART enabled, you need to disable it, including the interrupts

static void StopUART(void)
{
  uint32_t temp;

  /* Disable UART interrupts */
  LPC_UART->IER = 0;
  /* Disable UART interrupts in NVIC */
  NVIC_DisableIRQ(UART_IRQn);

  /* Ensure a clean start, no data in either TX or RX FIFO. */
  while (( LPC_UART->LSR & (LSR_THRE|LSR_TEMT)) != (LSR_THRE|LSR_TEMT) );
  while ( LPC_UART->LSR & LSR_RDR )
  {
temp = LPC_UART->RBR; /* Dump data from RX FIFO */
  }

  /* Read to clear the line status. */
  temp = LPC_UART->LSR;
}

Then, turn on Timer32B1, GPIO and IOCON block in the SYSAHBCLKCTRL, set the stack pointer to the BootROM's requirement, and execute the IAP command 57.

typedef void (*IAP)(unsigned int[], unsigned int[]);

static void ReinvokeISP(void) {
  IAP iap_entry = (IAP) 0x1fff1ff1;
  uint32_t command[5], result[4];

  /* make sure 32-bit Timer 1 is turned on before calling ISP */
  LPC_SYSCON->SYSAHBCLKCTRL |= 0x00400;
  /* make sure GPIO clock is turned on before calling ISP */
  LPC_SYSCON->SYSAHBCLKCTRL |= 0x00040;
  /* make sure IO configuration clock is turned on before calling ISP */
  LPC_SYSCON->SYSAHBCLKCTRL |= 0x10000;
  /* make sure AHB clock divider is 1:1 */
  LPC_SYSCON->SYSAHBCLKDIV = 1;

  /* Send Reinvoke ISP command to ISP entry point*/
  command[0] = 57;

  /* Set stack pointer to ROM value (reset default).
     This must be the last piece of code executed before calling ISP,
     because most C expressions and function returns will fail after
     the stack pointer is changed.
   */

  __set_MSP(*((uint32_t *) 0x1FFF0000)); /* inline asm */

  /* Invoke ISP. We call "iap_entry" to invoke ISP because the ISP entry
     is done through the same command interface as IAP. */

  iap_entry(command, result);

  // Code will never return!
}

Lastly, before you can run your new code (assuming you are upgrading / replacing the firmware using ISP), you will need to reset the MCU.

 

Номинальные ряды E6, E12, E24

Название ряда указывает общее число элементов в нём, т. е. ряд E24 содержит 24 числа в интервале от 1 до 10, E12 — 12 чисел и т. д.

Каждый ряд соответствует определённому допуску в номиналах деталей. Так, детали из ряда E6 имеют допустимое отклонение от номинала ±20 %, из ряда E12 — ±10 %, из ряда E24 — ±5 %. Собственно, ряды устроены таким образом, что следующее значение отличается от предыдущего чуть меньше, чем на двойной допуск.

Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью. Поэтому хорошие радиоинженеры помнят ряд E24 наизусть. Значения номиналов для некоторых рядов приведены в таблице: Continue reading »

 

В данной статье расмоорим расчет простого транзисторного ключа включенного по приведенной ниже схеме.

Рис.1

В нашем случае R1 это сопротивление в цепи базы, а R2 это сопротивлени нашей нагрузки. Continue reading »

© 2011 ADTL Blog Suffusion theme by Sayontan Sinha