全志平台Tina系统对寄存器进行读写的方法

cd sys/class/sunxi_dump

把要读写的地址写到dump里

root@TinaLinux:/sys/class/sunxi_dump# echo 0x07010310 > dump

读出来看一下

root@TinaLinux:/sys/class/sunxi_dump# cat dump
0x00330000

改一个数写进去

root@TinaLinux:/sys/class/sunxi_dump# echo 0x07010310 0x00330001 > write

读出来看一下

root@TinaLinux:/sys/class/sunxi_dump# cat dump
0x00330001

修改引发的变动

root@TinaLinux:/sys/class/sunxi_dump# echo 0x0701031c > dump
root@TinaLinux:/sys/class/sunxi_dump# cat dump
0x0000003f

传一张眼图

 

记一个有趣的修改

static void set_circuits_analog(void)
{
	/* calibration circuits analog enable */
	/* sunxi_clear_bit(RES_CAL_CTRL_REG, BIT(1)); */
	//setbits_le32(VDD_SYS_PWROFF_GATING_REG, 1 << 9);
	//clrbits_le32(RES_CAL_CTRL_REG, 0<<0);

	//读出默认值
	u32 value_0x310;
	u32 value_0x31c;
	printf("RES_CAL_CTRL:%x\n",RES_CAL_CTRL_REG);
	value_0x310 = readl(RES_CAL_CTRL_REG);
	printf("value_0x310 default:%x\n",value_0x310);
	value_0x31c = readl((RES_CAL_CTRL_REG+0xc));
	printf("value_0x31c default:%x\n",value_0x31c);

	//bit0清0后读出值
	value_0x310 &= ~(0x1 << 0);
	//writel(value_0x310, RES_CAL_CTRL_REG);
	clrbits_le32(RES_CAL_CTRL_REG, 1 << 0);
	value_0x310 = readl(RES_CAL_CTRL_REG);
	printf("value_0x310 after clean:%x\n",value_0x310);
	value_0x31c = readl((RES_CAL_CTRL_REG+0xc));
	printf("value_0x31c after clean:%x\n",value_0x31c);

	//延迟20us后置1
	udelay(20);
	value_0x310 |= (0x1 << 0);
	//writel(value_0x310, RES_CAL_CTRL_REG);
	setbits_le32(VDD_SYS_PWROFF_GATING_REG, 1 << 0);
	value_0x310 = readl(RES_CAL_CTRL_REG);
	printf("value_0x310 value  after set1:%x\n",value_0x310);
	value_0x31c = readl((RES_CAL_CTRL_REG+0xc));
	printf("value_0x31c after set1:%x\n",value_0x31c);
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值