在线时间0 小时
UID3076201
注册时间2014-11-20
NXP金币0
该用户从未签到
新手上路

- 积分
- 5
- 最后登录
- 2014-11-20
|
本帖最后由 bruce_lol 于 2014-11-20 15:23 编辑
本人是刚接触IMX25的菜鸟,现想做一个WEIM(外部内存接口)跟FPGA进行同步的16位位宽的通讯(地址为14位),FPGA当作外部内存读写。
如下为自己的配置:
/*1.IO引脚配置*/
/* 000: Select mux mode: ALT0 mux port: EIM_DA_H[13] of instance: emi.
101: Select mux mode: ALT5 mux port: GPIO[1] of instance: gpio4.
111: Select mux mode: ALT7 mux port: LCDC_CLS of instance: lcdc.
....*/
mxc_request_iomux(MX25_PIN_A10, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_A13, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D0, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D1, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D2, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D3, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D4, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D5, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D6, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D7, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D8, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D9, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D10, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D11, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D12, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D13, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D14, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_D15, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_EB0, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_EB1, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_OE, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_CS1, MUX_CONFIG_FUNC);
mxc_request_iomux(MX25_PIN_RW, MUX_CONFIG_FUNC);
/*2 WEIM Register*/
void __iomem *ram_reg = IO_ADDRESS(WEIM_BASE_ADDR);//WEIM BASE ADDR 0xB800_2000
void __iomem *ccm_reg = IO_ADDRESS(CCM_BASE_ADDR);//CCM(Clock Control Module) 0x53F8_0000
unsigned int reg;
struct clk *clk;
unsigned int rate;
clk = clk_get(NULL,"ahb_clk");
if(IS_ERR(clk))
printk("ahb_clk not found\n");
rate = clk_get_rate(clk);
printk("emi_clk set to %d\n",rate);
/* WEIM config-CS5 init -- CPLD */
//DCDGEN( 1, 4, 0xB8002050, 0x0000D843) /* CS5_CSCRU */
//DCDGEN( 2, 4, 0xB8002054, 0x22252521) /* CS5_CSCRL */
//DCDGEN( 3, 4, 0xB8002058, 0x22220A00) /* CS5_CSCRA */
writel(0x0000D843,ram_reg + 0x10);//cscr1u
reg = readl(ccm_reg + 0x10);
printk("cscr1u = %08x\n",reg);
writel(0x22252521,ram_reg + 0x14);//cscr1l
reg = readl(ccm_reg + 0x14);
printk("cscr1l = %08x\n",reg);
writel(0x22220A00,ram_reg + 0x18);//cscr1a
reg = readl(ccm_reg + 0x18);
printk("cscr1a = %08x\n",reg);
if(NULL == request_mem_region (WEIM_CS1_BASE_ADDR,0x4000,"FPGA_MEM"))//WEIM_CS1_BASE_ADDR: 0xA8000000
{
printk("request_mem_region error\n");
return 0;
}
/****************************/
void *eim_mem= ioremap_nocache(WEIM_CS1_BASE_ADDR, 0x4000);
if( NULL == eim_mem)
{
printk("Failed to ioremap eim_mem\n");
return 0;
}
大家能帮忙看下还有什么漏掉了,现在问题是写寄存器写不进去,打印出来的值跟原来是一样的,本人菜鸟一枚,望指导,谢谢!
|
|