linux kernel4版本 am335x gpmc 总线 dtb编写

&gpmc {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&nandflash_pins_default>;
pinctrl-1 = <&nandflash_pins_sleep>;
ranges = <0 0 0x08000000 0x2000000>,/* CS0: NAND */
<2 0 0x10000000 0x1000000>,/* CS2: DUART */
<3 0 0x11000000 0x1000000>;/* CS3: DUART */
 
nand@0,0 {
reg = <0 0 0>; /* CS0, offset 0 */
ti,nand-ecc-opt = "bch8";
ti,elm-id = <&elm>;
nand-bus-width = <8>;
gpmc,device-width = <1>;
gpmc,sync-clk-ps = <0>;
gpmc,cs-on-ns = <0>;
gpmc,cs-rd-off-ns = <44>;
gpmc,cs-wr-off-ns = <44>;
gpmc,adv-on-ns = <6>;
gpmc,adv-rd-off-ns = <34>;
gpmc,adv-wr-off-ns = <44>;
gpmc,we-on-ns = <0>;
gpmc,we-off-ns = <40>;
gpmc,oe-on-ns = <0>;
gpmc,oe-off-ns = <54>;
gpmc,access-ns = <64>;
gpmc,rd-cycle-ns = <82>;
gpmc,wr-cycle-ns = <82>;
gpmc,wait-on-read = "true";
gpmc,wait-on-write = "true";
gpmc,bus-turnaround-ns = <0>;
gpmc,cycle2cycle-delay-ns = <0>;
gpmc,clk-activation-ns = <0>;
gpmc,wait-monitoring-ns = <0>;
gpmc,wr-access-ns = <40>;
gpmc,wr-data-mux-bus-ns = <0>;
/* MTD partition table */
/* All SPL-* partitions are sized to minimal length
* which can be independently programmable. For
* NAND flash this is equal to size of erase-block */
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "rootfs";
reg = <0x00000000 0x20000000>;
};
};
uart@3,0 {
                compatible = "ns16550a";
                reg = <3 0 8>;  /* CS3, offset 0, IO size 8 */
                bank-width = <2>;
                reg-shift = <1>;
                reg-io-width = <1>;
                interrupt-parent = <&gpio0>;
                interrupts = <8 8>;  /* gpio102 */
                clock-frequency = <1843200>;
                current-speed = <115200>;
                 gpmc,mux-add-data = <0>;
                  gpmc,device-width = <1>;
                  gpmc,wait-pin = <1>;
                  gpmc,cycle2cycle-samecsen = <1>;
                  gpmc,cycle2cycle-diffcsen = <1>;
                  gpmc,cs-on-ns = <5>;
                 gpmc,cs-rd-off-ns = <155>;
                  gpmc,cs-wr-off-ns = <155>;
                  gpmc,adv-on-ns = <15>;
                  gpmc,adv-rd-off-ns = <40>;
                 gpmc,adv-wr-off-ns = <40>;
                  gpmc,oe-on-ns = <45>;
                  gpmc,oe-off-ns = <145>;
                  gpmc,we-on-ns = <45>;
                  gpmc,we-off-ns = <145>;
                  gpmc,rd-cycle-ns = <155>;
                  gpmc,wr-cycle-ns = <155>;
                  gpmc,access-ns = <145>;
                  gpmc,page-burst-access-ns = <20>;
                  gpmc,bus-turnaround-ns = <20>;
                  gpmc,cycle2cycle-delay-ns = <20>;
                  gpmc,wait-monitoring-ns = <0>;
                  gpmc,clk-activation-ns = <0>;
                  gpmc,wr-data-mux-bus-ns = <45>;
                  gpmc,wr-access-ns = <145>;
        };
        uart@3,1 {
                compatible = "ns16550a";
                reg = <3 0x8 8>;      /* CS3, offset 0x100, IO size 8 */
                bank-width = <2>;
                reg-shift = <1>;
                reg-io-width = <1>;
                interrupt-parent = <&gpio0>;
                interrupts = <9 8>;  /* gpio102 */
                clock-frequency = <1843200>;
                current-speed = <115200>;
        };
        uart@3,2 {
                compatible = "ns16550a";
                reg = <3 0x10 8>;      /* CS3, offset 0x200, IO size 8 */
                bank-width = <2>;
                reg-shift = <1>;
                reg-io-width = <1>;
                interrupt-parent = <&gpio0>;
                interrupts = <10 8>;  /* gpio102 */
                clock-frequency = <1843200>;
                current-speed = <115200>;
        };
        uart@3,3 {
                compatible = "ns16550a";
                reg = <3 0x18 8>;      /* CS3, offset 0x300, IO size 8 */
                bank-width = <2>;
                reg-shift = <1>;
                reg-io-width = <1>;
                interrupt-parent = <&gpio0>;
                interrupts = <11 8>;  /* gpio102 */
                clock-frequency = <1843200>;
                current-speed = <115200>;
        };

ethernet@2,0 {
compatible = "davicom,dm9000";
reg = <2 0x08 2
  2 0x400028 2>;

bank-width = <2>;
interrupt-parent = <&gpio2>;
interrupts = <23 2>;   /* gpio158 */
local-mac-address = [00 00 00 00 00 00];
davicom,no-eeprom; 

gpmc,mux-add-data = <0>;
gpmc,device-width = <1>;
gpmc,wait-pin = <0>;
gpmc,cycle2cycle-samecsen = <1>;
gpmc,cycle2cycle-diffcsen = <1>;


gpmc,cs-on-ns = <6>;
gpmc,cs-rd-off-ns = <180>;
gpmc,cs-wr-off-ns = <180>;
gpmc,adv-on-ns = <0>;
gpmc,adv-rd-off-ns = <18>;
gpmc,adv-wr-off-ns = <48>;
gpmc,oe-on-ns = <54>;
gpmc,oe-off-ns = <168>;
gpmc,we-on-ns = <54>;
gpmc,we-off-ns = <168>;
gpmc,rd-cycle-ns = <186>;
gpmc,wr-cycle-ns = <186>;
gpmc,access-ns = <144>;
gpmc,page-burst-access-ns = <24>;
gpmc,bus-turnaround-ns = <90>;
gpmc,cycle2cycle-delay-ns = <90>;
gpmc,wait-monitoring-ns = <0>;
gpmc,clk-activation-ns = <0>;
gpmc,wr-data-mux-bus-ns = <0>;
gpmc,wr-access-ns = <0>;
        };

};

本dts主要是对am335x 的gpmc 外扩 nand 串口16554 网口dm9000 进行配置。

希望对做335x开发的朋友有所帮助。



ARM GPMC总线(General Purpose Memory Controller)是一种用于连接处理器和外设的总线控制器。ARM GPMC总线具有高性能和灵活性,广泛用于嵌入式系统中。 GPMC总线支持多种不同类型的存储器和外设设备,如SRAM、NOR FlashNAND Flash、SDRAM等。它通过提供统一的、灵活的接口和控制,方便处理器与这些设备之间的数据交换和通信。通过使用GPMC总线,处理器可以直接访问这些设备中的数据,从而提高系统性能和响应速度。 GPMC总线具有以下几个重要的特点和功能: 1. 高效性能:GPMC总线提供了高带宽和低延迟的数据传输,可以满足处理器和外设设备之间大量数据的快速传输需求。 2. 灵活性:GPMC总线支持多种存储器和外设设备,并且可以根据具体应用需求进行配置和扩展。 3. 多通道:GPMC总线支持多个通道,可以同时与多个设备进行数据交换,提高系统的并发处理能力。 4. 内存映射:GPMC总线提供了内存映射的功能,可以将外设设备映射到处理器的地址空间中,方便处理器对这些设备的访问和操作。 5. 控制信号:GPMC总线通过提供丰富的控制信号,如读写使能信号、片选信号、地址信号等,实现对外设设备的各种操作控制。 总之,ARM GPMC总线是一种高性能、灵活的总线控制器,可以方便地连接处理器和外设设备,提供高速数据传输和通信能力,广泛应用于嵌入式系统中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

solomon_大卫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值