完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
环境:RK3399-JD4 ubuntu18.04
SDK提供了一个io工具可以很方便的控制所有gpio口,但是当我想控制gpio3_d时却发现控制不了。DR,DDR寄存器不管怎么写都没有变化 root@firefly:/usr/bin# io -4 -w 0xff788000 0xffffffff root@firefly:/usr/bin# io -4 -r 0xff788000 ff788000: 00008400 root@firefly:/usr/bin# io -4 -w 0xff788000 0x0 root@firefly:/usr/bin# io -4 -r 0xff788000 ff788000: 00008400 root@firefly:/usr/bin# io -4 -r 0xff788004 ff788004: 00008400 iomux对应的寄存器0xff77e01c可以写成功,我把gpio3_d的8个gpio都设成了gpio模式。(要写这个寄存器必须要把高16bit的对应位置1才能生效。) root@firefly:/usr/bin# io -4 -r 0xff77e01c ff77e01c: 00005555 root@firefly:/usr/bin# io -4 -w 0xff77e01c 0xffff0000 root@firefly:/usr/bin# io -4 -r 0xff77e01c ff77e01c: 00000000 看wiki这个io操作也没什么特别的啊,read是没问题的,因为我用/sys/class/gpio节点操作某个gpio是可以的,设成输出之后通过io读发现确实设成了输出。 于是研究了一下io的实现,其实也没什么,就是通过dev/mem设备把输入的寄存器地址mmap成对应的用户空间可以操作的地址。这样在用户空间可以对gpio的寄存器进行直接赋值操作。加了一些log,看流程没有任何问题,所有的操作都成功。问题肯定在别的地方。 折腾了半天,发现可能是因为GPIO的clk没有使能导致。搜了一下,果然,gpio2,3,4的clk都没有使能。 cat clk_summary |grep gpio pclk_gpio4 0 1 100000000 0 0 pclk_gpio3 0 1 100000000 0 0 pclk_gpio2 0 1 100000000 0 0 使能之后果然可以设置成功了,量电平也有变化,主要还是对这个平台不熟悉,之前没弄过。 root@firefly:/sys/kernel/debug/clk/pclk_gpio3# io -4 -w 0xff788004 0xffff8400 root@firefly:/sys/kernel/debug/clk/pclk_gpio3# io -4 -r 0xff788004 ff788004: ffff8400 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2031 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
2571 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
5346 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 13:18 , Processed in 0.830261 second(s), Total 75, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号