Quais são os dois valores dentro de colchetes angulares em um arquivo .dts da árvore de dispositivos?

4

A seguir, o snippet de código em um arquivo de árvore de dispositivos:

flash@0 {
                compatible = "n25q128";
                reg = <0x0>;
                spi-max-frequency = <50000000>;
                #address-cells = <1>;
                #size-cells = <1>;
                partition@qspi-fsbl-uboot {
                    label = "qspi-fsbl-uboot";
                    reg = <0x0 0x100000>;
                };
                partition@qspi-linux {
                    label = "qspi-linux";
                    reg = <0x100000 0x500000>;
                };
                partition@qspi-device-tree {
                    label = "qspi-device-tree";
                    reg = <0x600000 0x20000>;
                };
                partition@qspi-rootfs {
                    label = "qspi-rootfs";
                    reg = <0x620000 0x5E0000>;
                };
                partition@qspi-bitstream {
                    label = "qspi-bitstream";
                    reg = <0xC00000 0x400000>;
                };
            };

Minha pergunta simples é quais são os dois valores em < & gt ;? por exemplo, em reg = < 0x600000 0x20000 & gt ;;

Eu pensei que é o endereço inicial e final, mas isso vai significar menos aqui, pois final não pode ser menor do que inicial.

    
por gpuguy 25.03.2014 / 10:17

3 respostas

2

Parênteses angulares (< >) indicam uma "matriz de números inteiros sem sinal de 32 bits" e acredito que eles sejam frequentemente chamados de "células". No caso da propriedade reg , o primeiro valor é o endereço (offset) e o segundo, o comprimento do (s) registrador (es). Observe que também é possível ter vários intervalos, ou seja,

reg = <addr1 addr1_length addr2 addr2_length  ... addrN addrN_length>

Fontes:

por 25.09.2017 / 15:01
1

Não precisa ser apenas dois números em geral

Além disso, conforme explicado em: link , ele não precisa ter apenas dois números cada.

Por exemplo, em dispositivos de 64 bits, geralmente temos:

#address-cells = <2>;
#size-cells = <2>;

que implica endereço e offset são do tipo:

reg = <0x1 0x2 0x3 0x4>

que representa uma região com:

  • endereço base: 00000001 00000002 (composto por 2 números de 32 bits devido a #address-cells = <2>; )
  • comprimento: 00000003 00000004 (composto por 2 números de 32 bits devido a #size-cells = <2>; )

Isso ocorre porque cada número na árvore de dispositivos é de 32 bits por definição, então precisamos de dois para cada valor de 64 bits.

    
por 07.06.2018 / 15:27
0

Sim, o reg<0xxxx 0xxxx> representa reg<offset length> .

offset é o endereço base do dispositivo e o comprimento determinará o intervalo de endereços do dispositivo em questão.

    
por 26.06.2014 / 08:12