The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

ЧаВо

ЧаВо

Предыдущая  Содержание  Следующая  V*D*V

В интернете встречаются разные предложения по решению проблемы:

Поместить буфера TX во внутреннюю SRAM (CONFIG_MACB_TX_SRAM)

Изменить начальную настройку bus-matrix: EMACB с высоким приоритетом на SRAM & EBI (SDRAM)

Уменьшить скорость интерфейса Ethernet, например, так:
ethtool -s eth0 speed 10 autoneg off

 

В строке запуска Linux указать раздел для mmc/sd карты: root=/dev/mmcblk0p1(2,3,...) или для usb: root=/dev/sda1

Установить задержку подключения rootdelay=10

 

Опции MTD ядра:

CONFIG_MTD=y

CONFIG_MTD_PARTITIONS=y

CONFIG_MTD_CMDLINE_PARTS=y

CONFIG_MTD_CHAR=y

CONFIG_MTD_BLKDEVS=y

CONFIG_MTD_BLOCK=y

CONFIG_MTD_MAP_BANK_WIDTH_1=y

CONFIG_MTD_MAP_BANK_WIDTH_2=y

CONFIG_MTD_MAP_BANK_WIDTH_4=y

CONFIG_MTD_CFI_I1=y

CONFIG_MTD_CFI_I2=y

# Self-contained MTD device drivers

CONFIG_MTD_DATAFLASH=y

CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y

 

Командная строка Linux для подключения как корневой файловой системы:

rootwait root=/dev/mmcblk0p1(2,3...) mtdparts=spi0.0-AT45DB321x:<размер в байтах>@<смещение в байтах>(имя_раздела)

 

Размер и смещение должны быть кратны размеру страницы! Для AT45DB321 размер страницы 528 байт.

В ядре проверить аrch/arm/mach-at91/board-sam9260-ek.c, список spi устройств static struct spi_board_info ek_spi_devices[].

 

1-ый способ:

Создать файловую систему;

Запаковать ее в файл с помощью gzip;

Перед стартом ядра копировать образ в память;

В строке запуска Linux указать раздел: root=/dev/ram0 rw initd=стартовый адрес.

 

2-ой способ:

Создать файловую систему;

В файловой системе в корне создать скрипт запуска init или ссылку init на /sbin/init;

Включить в ядре поддержку initramfs
General setup  --->
   [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

Указать путь к файловой системе и собрать ядро.

 

Посмотреть структуру существующего initramfs:

mkdir /tmp/initramfs

cd /tmp/initramfs

gunzip -c -9 /boot/initrd.img | cpio -i -d -H newc --no-absolute-filenames

 

Запаковать обратно изменённый:

cd /tmp/initramfs

find . | cpio -o -H newc | gzip -9 > /boot/initrd.img

 

/proc/cmdline

 

http://www.gsp.com/cgi-bin/man.cgi?section=5&topic=ntp.conf#24

Секция Reference Clock Commands.

В конфиг NTP сервера добавить:

server 127.127.1.1

fudge 127.127.1.1 stratum 10

 

Используем socat как местный прокси и пропускаем трафик через него.

Пример для smtp:

socat -v TCP-LISTEN:2025 TCP:smtp.mail.ru:25 &

 

http://kerneltrap.org/node/2199

Используйте 'cat /proc/bus/input/devices' и 'dmesg'. Первая перечисляет все устройства, известные ядру ввода с их параметрами, а вторая показывает сообщения запуска. Они могут показать ошибки, которые произошли во время процесса проверки.

 

http://forum.sparkfun.com/viewtopic.php?p=52483&sid=7e96cab25f81c8a55946e881bd905b03

#include <stdio.h>

#include <unistd.h>

#include <fcntl.h>

#include <sys/mman.h>

#define GPIO_BASE 0x80840000

/* GPIO memory mapped registers */

volatile unsigned int *PEDR;

volatile unsigned int *PEDDR;

 

int main (void)

{

 //long delay=128000, delay2=100;

 unsigned char *gpio;

 int fd;

 fd = open("/dev/mem", O_RDWR);

 if (fd < 0)

 {

         perror("Failed to open /dev/mem");

         return fd;

 }

 gpio = mmap(0, getpagesize(), PROT_READ|PROT_WRITE, MAP_SHARED, fd, GPIO_BASE);

 

 PEDR = (unsigned int *)(gpio + 0x20);

 PEDDR = (unsigned int *)(gpio + 0x24);

 

 *PEDDR = 0xff;//set output

 *PEDR = 0x02;// turn ON Red LED (port E1)

 

 return 0;

}

также:

http://svn.arhuaco.org/svn/src/emqbit/tools/AT91-GPIO/user-space/

 

d = (d<<7)|((d<<5)&64)|((d<<3)&32)|((d<<1)&16)|((d>>1)&8)|((d>>3)&4)|((d>>5)&2)|(d>>7);

 

char conv[16] = {

0x00, 0x08, 0x04, 0x0C,

0x02, 0x0A, 0x06, 0x0E,

0x01, 0x09, 0x05, 0x0D,

0x03, 0x0B, 0x07, 0x0F};

d = conv[d >> 4] | (conv[d & 0xF] << 4);

 

Заменить имена функций init и exit на probe и remove (в конце добавить return 0; ):

 

//int __init my_init(void)

static int __init my_probe(struct platform_device *pdev)

{

    ...

}

 

//void __exit my_exit(void)

static int my_remove(struct platform_device *pdev)

{

    ...

    return 0;

}

 

Изменить функции probe и remove для получения данных из структуры входных данных pdev, если это необходимо. Заменить printk на dev_err, dev_info, dev_debug.

 

Добавить структуру драйвера платформы и написать функцию init, добавляющие устройство платформы и драйвер платформы, и exit, удаляющую их:

 

#define DRV_NAME "driver name"

 

static struct platform_driver my_driver = {

    .probe = my_probe,

    .remove = __devexit_p(my_remove),

    .driver = {

        .name = DRV_NAME,

    },

};

 

static struct platform_device my_device = {

    .name  = DRV_NAME,

    .id    = -1,

};

 

static int __init my_init(void)

{

    int err = platform_driver_register( &my_driver );

    if( !err )

    {

        err = platform_device_register( &my_device );

        if( err )

            platform_driver_unregister( &my_driver );

    }

    return err;

}

 

void __exit my_exit(void)

{

    platform_device_unregister( &my_device );

    platform_driver_unregister( &my_driver );

}

SCRIPTDIR=$(dirname $(readlink -f "$0"))

SCRIPTNAME=$(basename $(readlink -f "$0"))

или

LINK=`readlink -f "$0"`

SCRIPTDIR=$(dirname $LINK)

SCRIPTNAME=$(basename $LINK)

 

такое происходит, если в скрипте в качестве символа перевода строки используется \r\n вместо \n или/и в начале файла присутствуют невидимые символы кодировки, вставляемые текстовыми редакторами.

 

 

if( x < 0) { x += (1 << power2) - 1; }

x >>= power2;

 

Для чисел с фиксированной точкой и округлением (аналогично +0.5 для положительного и -0.5 для отрицательного):

 

x += 1 << (power2 - 1);

x >>= power2;

 

 

Предыдущая  Содержание  Следующая