|
我在设备树中添加了一个新的GPMC,使用的是片选6,基地址是0x1000_0000,大小是0x0100_0000,当我在程序中对为这段空间申请内存的时候,申请的虚拟空间地址是f4d28000,并没有落在GPMC的地址空间内,这正常吗?
而且不可以对这段空间进行写和读,会报错并崩溃
读写的代码和设备树的修改如下
- request_mem_region((unsigned int)0x10000000, 0x1000000, "mygpmc");
- VPC3C_BASE = ioremap((unsigned int)0x10000000, 0x1000000);
- VPC3_ASIC_ADDRESS=(unsigned char *)VPC3C_BASE ;
- p_Vpc3 = (VPC3_STRUC VPC3_PTR)VPC3_ASIC_ADDRESS;
- VPC3_UNSIGNED8_PTR vpc3_ptr;
- vpc3_ptr = &p_Vpc3->slave_addr;
- printk("%x\n", (volatile u32*)vpc3_ptr);
- *((UBYTE VPC3_PTR)vpc3_ptr) = 0x44;
- printk("%8x\n", readb(vpc3_ptr[0]));
复制代码- mygpmc {
- compatible = "mtd-ram";
- pinctrl-names = "default";
- //linux,mtd-name= "intel,pf48f6000m0y1be";
- #address-cells = <1>;
- #size-cells = <1>;
- status = "okay";
- reg = <6 0 0x1000000>;
- #if(0)
- /* CONFIG 1 */
- bank-width = <1>; /* GPMC_CONFIG1_DEVICESIZE(1) 2: 16bits */
- gpmc,mux-add-data = <0>; /* GPMC_CONFIG1_MUXTYPE(0) 2: address-data multiplexing mode */
- /* CONFIG 2 */
- gpmc,cs-on-ns = <5>;
- gpmc,cs-rd-off-ns = <108>;
- gpmc,cs-wr-off-ns = <108>;
- /* CONFIG 3 */
- gpmc,adv-on-ns = <3>;
- gpmc,adv-rd-off-ns = <11>;
- gpmc,adv-wr-off-ns = <11>;
- /* CONFIG 4 */
- gpmc,oe-on-ns = <15>;
- gpmc,oe-off-ns = <37>;
- gpmc,we-on-ns = <15>;
- gpmc,we-off-ns = <33>;
- /* CONFIG 5 */
- gpmc,rd-cycle-ns = <37>;
- gpmc,wr-cycle-ns = <37>;
- gpmc,access-ns = <33>;
- gpmc,page-burst-access-ns = <0>;
- /* CONFIG 6 */
- gpmc,bus-turnaround-ns = <0>;
- gpmc,cycle2cycle-delay-ns = <0>;
- gpmc,wr-data-mux-bus-ns = <15>;
- gpmc,wr-access-ns = <26>;
- gpmc,cycle2cycle-samecsen;
- gpmc,cycle2cycle-diffcsen;
- #endif
- };
复制代码
|
|