关于DM9000在ARM总线上的地址

/*
DM9000 采用地址数据复用,访问一般存储器时,有地址线、数据线,地址线选中目标,然后数据值写到目标中。
但是对于 DM9000 来说,分两次进行,第一次数据线写 DM9000 的寄存器地址,第二次写寄存器数据。
也就是说,DM_ADDR这个值只要保证处于 0x30000000 ~ 0x3FFFFFFF 之间且不同于DM9K_DATA就可以,目的是选中 DM9000。
*/

#define DM9K_ADDR			0x30000000
#define DM9K_DATA			0x30000004
#define DM_ADDR			*(volatile u16_t *) DM9K_ADDR
#define DM_DATA			*(volatile u16_t *) DM9K_DATA

#pragma optimize=none
inline static u16_t ior(u16_t reg_addr)
{   
    DM_ADDR = reg_addr;
    return DM_DATA;
}


#pragma optimize=none
inline static void iow(u16_t reg_addr, u16_t reg_data)
{
    DM_ADDR = reg_addr;
    DM_DATA = reg_data;
}

如图,与地址相关的总线,只使用了 NCS2 和 A2,




关于IAR jlink调试时,运行的位置与代码不对应,首先clean一下工程,rebuild,如果还是这样,看一下当前的文件是不是该工程中的文件。

有时,把一个工程目录复制一个备份,用 iar 打开备份时,有可能出现运行的位置与代码不对应,在iar中把鼠标放在source browse窗口中文件名上面,发现工程的文件不是在该目录下,而是在原来的目录。把原来的目录修改一个名字,rebuild,就可以了。


Jlink 调试时,经常出现 BAD jtag communication : write to Expected 0x1,got 0x0 ……

可以尝试将option -->debugger -->J-link-->setup  -->speed 改为adaptive;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值