展讯平台gpio 兼容调试方法------sc8830
2014-06-09 18:42
821 查看
在项目过程中经常需要通过判别gpio 的状态来对某些硬件实现兼容,如通过判别gpio口的状态来实现不同射频nv参数的下载,如采用gpio脚的拉高和拉低来实现屏的兼容!
以GPIO216为例,设置gpio口的状态
查找SC8830的spec
[b]
[/b]
1,设置引脚为gpio模式
IISD0管脚复用,mode3为gpio的状态
设置复用方式为gpio模式也就是mode3,参考spec
设置[5:4]位为0x11,这样就设置了管脚为gpio状态
2,配置gpio模式
1,设置gpio为输入模式
2,打开gpio的msk标志
3,读取gpio的状态
介绍几种调试方法
在写入代码之前,通过adb 写入寄存器数据,读取状态是否正确,然后在进行下一步动作
adb shell
root@android:/ # lookat 0x402a041c //获取引脚状态,[5:4]=0X11,说明已经是gpio状态,[7:6]=0X10,说明gpio为弱上拉状态
0x000021b8
root@android:/ # lookat 0x40280684 //MSK的值为11,说明216管脚的值是可读的
0x00000300
root@android:/ # lookat 0x40280688 //dir方向为0,说明设置为输入状态
0x00000000
root@android:/ # lookat 0x40280680 //读取gpio的值,此时的值为1,硬件上的状态为解高,vdd1.8v
0x00000100
root@android:/ # lookat -s 0x21780x402a041c
// 设置gpio的状态为弱下拉
root@android:/ # lookat 0x40280680
//在读取gpio的状态为1,说明外部已经生效,可以读成功
0x00000100
这是通过寄存器来查看gpio的状态,另外一种可以通过命令直接查看gpio的状态
root@android:/ # cd d
root@android:/d # cat gpio
GPIOs 0-255, sprd-d-gpio:
gpio-71 (sdio0_detect ) in hi
gpio-72 (USB OTG CABLE ) in hi
gpio-81 (ts_rst_pin ) out hi
gpio-188 (sub camera ) in hi
gpio-216 (gpio_lcd_diff ) in hi //此gpio即为我们配置的gpio的,需要在kernel中加入代码
gpio-217 (tmd2771_pls irq ) in lo
gpio-230 (wifi_pwd ) out lo
gpio-231 (bt_power ) out hi
gpio-232 (bt_host_wake ) in hi
gpio-233 (bt_reset ) out hi
gpio-234 (oob_irq ) in lo
gpio-235 (bt_ext_wake ) out hi
在代码中添加读取gpio的方法
如需在uboot中获取gpio的状态,可参考如下设置,此为gpio86
*(volatile u32 *) (0x8b000008) |=((1<<5)|(1<<13));
*(volatile u32 *) (0x8c000364) &= 0x0;
*(volatile u32 *) (0x8c000364) |=((3<<4)|(1<<7));
*(volatile u32 *) (0x8a000204) |=1<<6;
gpio86_value=*(volatile u32 *)(0x8a000200);
在kernel中添加gpio,可参考如下
ret = gpio_request(GPIO_LCD_DIFF,"gpio_lcd_diff");
if (ret < 0) {
printk("failed to requestGPIO_%d(gpio_lcd-diff)\n", GPIO_LCD_DIFF);
}
gpio_direction_input(GPIO_LCD_DIFF);
LCM_SLEEP(150);
ret = gpio_get_value(GPIO_LCD_DIFF);
printk(" GPIO_%d(gpio_lcd_diff) =%d\n", GPIO_LCD_DIFF,ret)
以GPIO216为例,设置gpio口的状态
查找SC8830的spec
[b]
[/b]
1,设置引脚为gpio模式
IISD0管脚复用,mode3为gpio的状态
设置复用方式为gpio模式也就是mode3,参考spec
设置[5:4]位为0x11,这样就设置了管脚为gpio状态
2,配置gpio模式
1,设置gpio为输入模式
2,打开gpio的msk标志
3,读取gpio的状态
介绍几种调试方法
在写入代码之前,通过adb 写入寄存器数据,读取状态是否正确,然后在进行下一步动作
adb shell
root@android:/ # lookat 0x402a041c //获取引脚状态,[5:4]=0X11,说明已经是gpio状态,[7:6]=0X10,说明gpio为弱上拉状态
0x000021b8
root@android:/ # lookat 0x40280684 //MSK的值为11,说明216管脚的值是可读的
0x00000300
root@android:/ # lookat 0x40280688 //dir方向为0,说明设置为输入状态
0x00000000
root@android:/ # lookat 0x40280680 //读取gpio的值,此时的值为1,硬件上的状态为解高,vdd1.8v
0x00000100
root@android:/ # lookat -s 0x21780x402a041c
// 设置gpio的状态为弱下拉
root@android:/ # lookat 0x40280680
//在读取gpio的状态为1,说明外部已经生效,可以读成功
0x00000100
这是通过寄存器来查看gpio的状态,另外一种可以通过命令直接查看gpio的状态
root@android:/ # cd d
root@android:/d # cat gpio
GPIOs 0-255, sprd-d-gpio:
gpio-71 (sdio0_detect ) in hi
gpio-72 (USB OTG CABLE ) in hi
gpio-81 (ts_rst_pin ) out hi
gpio-188 (sub camera ) in hi
gpio-216 (gpio_lcd_diff ) in hi //此gpio即为我们配置的gpio的,需要在kernel中加入代码
gpio-217 (tmd2771_pls irq ) in lo
gpio-230 (wifi_pwd ) out lo
gpio-231 (bt_power ) out hi
gpio-232 (bt_host_wake ) in hi
gpio-233 (bt_reset ) out hi
gpio-234 (oob_irq ) in lo
gpio-235 (bt_ext_wake ) out hi
在代码中添加读取gpio的方法
如需在uboot中获取gpio的状态,可参考如下设置,此为gpio86
*(volatile u32 *) (0x8b000008) |=((1<<5)|(1<<13));
*(volatile u32 *) (0x8c000364) &= 0x0;
*(volatile u32 *) (0x8c000364) |=((3<<4)|(1<<7));
*(volatile u32 *) (0x8a000204) |=1<<6;
gpio86_value=*(volatile u32 *)(0x8a000200);
在kernel中添加gpio,可参考如下
ret = gpio_request(GPIO_LCD_DIFF,"gpio_lcd_diff");
if (ret < 0) {
printk("failed to requestGPIO_%d(gpio_lcd-diff)\n", GPIO_LCD_DIFF);
}
gpio_direction_input(GPIO_LCD_DIFF);
LCM_SLEEP(150);
ret = gpio_get_value(GPIO_LCD_DIFF);
printk(" GPIO_%d(gpio_lcd_diff) =%d\n", GPIO_LCD_DIFF,ret)
相关文章推荐
- VS和IE或者360兼容模式简单调试js方法
- 关于浏览器不兼容,又不好调试时的方法
- Linux下的gpio调试方法
- JB的调试方法(欢迎补充)
- 远端调试方法(一):使用LocalConnection
- delphi跟踪调试vcl代码的方法
- linux内核调试的几种方法
- 逐段注释--最简单,最方便,最快速,最实用,最高效,最清晰,最直接,最好的调试方法
- COM组件调试方法
- 调试ASP.NET应用程序的方法和技巧(转,强烈建议初学者学习)
- 原型方法的不同写法居然会影响调试
- 大家来做linux调试日志 (tomcat jsp server 配置方法)
- Tomcat下Servlet的调试方法
- 项目调试时候,出现其中用到的一个组件“访问被拒绝”的解决方法(摘自博客堂)
- 存储过程调试过程中DATETIME参数的输入故障解决方法
- 调试方法和技巧,作者:非凡
- 对BCB进行发布编译或调试编译的设置方法
- 在PL/SQL 开发中调试存储过程和函数的一般性方法
- 调试ASP.NET应用程序的方法和技巧
- C/C++关于版本兼容的方法.txt