2016-09-20 8 views
0

У меня встроенная система с некоторыми устройствами MTD и добавлено еще одно устройство MTD (SPI flash). Это новое устройство теперь mtd0, а число для всех предыдущих устройств MTD - +1. Как я могу назначить номер устройства MTD для этого нового драйвера, чтобы сохранить номера предыдущих устройств MTD без изменений?Как изменить серийный номер устройства MTD?

До:

# cat /proc/mtd 
dev: size erasesize name 
mtd0: 00100000 00020000 "u-boot" 
... 

После:

# cat /proc/mtd 
dev: size erasesize name 
mtd0: 00100000 00001000 "spi-nor-flash" 
mtd1: 00100000 00020000 "u-boot" 
... 

Я хочу добиться:

# cat /proc/mtd 
dev: size erasesize name 
mtd0: 00100000 00020000 "u-boot" 
... 
mtd5: 00100000 00001000 "spi-nor-flash" 

ответ

1

Вы можете указать номера разделов МПД в устройстве исходного дерева файла (или в файле .c платы, если ваш ядро не использует DTB). Вам нужно что-то вроде этого:

&spi0{ 
    status = "okay"; 
    pinctrl-names = "default"; 
    pinctrl-0 = <&spi0_pins>; 
    /* DO is MOSI, D1 is MISO */ 
    /*ti,pindir-d0-out-d1-in = <0>;*/ 
    [email protected] { 
      #address-cells = <1>; 
      #size-cells = <1>; 
      compatible = "st,m25pe80"; 
      reg = <0>; 
      spi-max-frequency = <1000000>; 
      /*m25p,fast-read;*/ 
      [email protected] { 
          label = "spi-nor-spl1"; 
          reg = <0x0 0x20000>; /* 128k */ 
        }; 

    }; 
}; 

(пример взят из here) для SPI флэш-памяти и других устройств с МПД перегородками.

1

Я предлагаю взглянуть на эту статью https://wiki.archlinux.org/index.php/persistent_block_device_naming. Udev может помочь вам назвать блокирующие устройства, не полагаясь на порядок обнаружения устройств.

+0

Это близко, но нет сигары. Вопрос касается устройств MTD, а не блоков. И я не собирался разбивать разбиение разделов, где используются имена файлов устройств. Мне нужно сделать этот новый драйвер последним устройством, а решение - в дереве файлов устройств или в файлах make. Я надеюсь, что кто-то столкнется с подобной проблемой и точно знает, как это сделать. – Aivars

0

Возможные обходной путь: сделать драйвер SPI флэш, как загружаемый модуль и загрузить его после загрузки системы:

/ # cat /proc/mtd 
dev: size erasesize name 
mtd0: 00800000 00020000 "u-boot" 
... 
mtd4: 0c8c0000 00020000 "ubipart" 

/# insmod m25p80.ko 
[ 365.735184] m25p80 spi0.0: n25q256a (32768 Kbytes) 
[ 365.739903] 1 ofpart partitions found on MTD device spi0.0 
[ 365.745396] Creating 1 MTD partitions on "spi0.0": 
[ 365.750133] 0x000000000000-0x000000800000 : "spi-flash" 

/# cat /proc/mtd 
dev: size erasesize name 
mtd0: 00800000 00020000 "u-boot" 
... 
mtd4: 0c8c0000 00020000 "ubipart" 
mtd5: 00800000 00001000 "spi-flash" 
Смежные вопросы