Trm文档简写问题

image
图中4个简写分别是什么具体功能?

Hi,
The bits are about status of VI(Video Input) engine. Would suggest not to touch the bits.

ok

使用使用寄存器操作 GPIOP.04
配置如下:


控制如下:
image
但是不能输出高低电平

Hi,
Please configure the pins to GPIO in device tree, and control the status through

/sys/class/gpio

我不会在设备树下添加我要的gpio,添加之后无法和pinctrl和gpio子系统关联起来;我只能用寄存器的方式去控制

Hi,
Your method does not work. If the pin is configured to other function in device tree, it may not be changed. Would suggest check developer guide to use pinmux spreadsheet to generate the device tree.

我已经用pinmux spreadsheet 生成了dtsi 并且也替换了tegra234-mb1-bct-gpio-p3701-0000.dtsi 和
tegra234-mb1-bct-pinmux-p3701-0000.dtsi,我也添加了测试节点
image; 但是驱动中我就不知道做什么了,就不会控制这个gpio了,也没找到你们的demo

  1. 你的理解並沒有完全正確, mb1 bct pinmux/gpio都只是一個initial state. 開機之後kernel要做任何事情都是可以改掉的, 所以你改pinmux或是gpio只是代表說你設定了一個初始值
    比方說好了, mb1 bct gpio dts做的事情只是把gpio可能初始值設定成output high. 但你進kernel之後還是可以手動自己改成output low或是input

  2. 我不確定你到底要做什麼, 其實你也不用找我們什麼demo. 控制GPIO相關的東西我們全部都是跟著標準Linux kernel.
    你想要控制gpio就用 gpio sysfs 就可以控了 也就是上面的/sys/class/gpio.

我想作的事:

  1. 在/dev 下创建 /myled
  2. 上层应用 可以 open(/dev/myled) 并且 write(myled 1/0) 能使一个pin输出高低电平

我现在所有的事情基本都完了,就是控制不了硬件

image


image

就是不知道怎么操作你们的硬件,设备树不行,寄存器也不行,bsp的demo又没有,类似IO操作的源码也找不到。。。。

如果是单片机,芯片厂会提供hal库有具体的api,最不济操作寄存器也可以。但是你们这soc,无从下手阿

Hi,

  1. 你得先搞清楚一些背後的原理…
    首先是你自己有沒有什麼driver可以讓kernel幫你在/dev/myled建一個node出來
    比方說好了, 你那個 compatible = “if you, device led”; 一看就是沒有預設的kernel driver會跟這東西搭配.
    我認為你就是寫了一個沒有任何driver會去認領的node在device tree裡面. 當然不會有用

  2. GPIO sysfs上網搜尋就可以找到了
    Linux下用文件IO的方式操作GPIO(/sys/class/gpio)_/sys/class/gpio/-CSDN博客

ifyou_dev_led.txt (8.6 KB)
这是我的驱动

你第2点说的这种方式我之前试过,不管用的

444 就是GPIO_P.04

請你幫我抓

sudo -s
cat /sys/kernel/debug/gpio

1.log (7.0 KB)

不確定是不是你前面那個driver的影響. 我剛才找了一台Orin AGX devkit隨手試了一下
看來是正常運作

 gpio-441 (PP.01               )
 gpio-442 (PP.02               )
 gpio-443 (PP.03               )
 gpio-444 (PP.04               )
 gpio-445 (PP.05               )
 gpio-446 (PP.06               )
 gpio-447 (PP.07               )
 gpio-448 (PQ.00               )
 gpio-449 (PQ.01               |fixed-regulators:reg) out lo 
 gpio-450 (PQ.02               )
 gpio-451 (PQ.03               )
 gpio-452 (PQ.04               )
 gpio-453 (PQ.05               )
 gpio-454 (PQ.06               )
 gpio-455 (PQ.07               )
 gpio-456 (PR.00               )
 gpio-457 (PR.01               )
 gpio-458 (PR.02               )
 gpio-459 (PR.03               )
 gpio-460 (PR.04               )
 gpio-461 (PR.05               )
 gpio-462 (PX.00               )
 gpio-463 (PX.01               )
 gpio-464 (PX.02               )
 gpio-465 (PX.03               )
 gpio-466 (PX.04               )
 gpio-467 (PX.05               )
 gpio-468 (PX.06               )
 gpio-469 (PX.07               )
 gpio-470 (PY.00               )
 gpio-471 (PY.01               |phy_reset           ) out hi 
 gpio-472 (PY.02               )
 gpio-473 (PY.03               )
 gpio-474 (PY.04               )
 gpio-475 (PY.05               )
 gpio-476 (PY.06               )
 gpio-477 (PY.07               )
 gpio-478 (PZ.00               )
 gpio-479 (PZ.01               )
 gpio-480 (PZ.02               )
 gpio-481 (PZ.03               )
 gpio-482 (PZ.04               )
 gpio-483 (PZ.05               )
 gpio-484 (PZ.06               )
 gpio-485 (PZ.07               )
 gpio-486 (PAC.00              |camera-control-outpu) out lo 
 gpio-487 (PAC.01              |camera-control-outpu) out lo 
 gpio-488 (PAC.02              )
 gpio-489 (PAC.03              )
 gpio-490 (PAC.04              )
 gpio-491 (PAC.05              )
 gpio-492 (PAC.06              )
 gpio-493 (PAC.07              |fixed-regulators:reg) out hi 
 gpio-494 (PAD.00              )
 gpio-495 (PAD.01              )
 gpio-496 (PAD.02              )
 gpio-497 (PAD.03              )
 gpio-498 (PAE.00              )
 gpio-499 (PAE.01              )
 gpio-500 (PAF.00              )
 gpio-501 (PAF.01              )
 gpio-502 (PAF.02              )
 gpio-503 (PAF.03              )
 gpio-504 (PAG.00              )
 gpio-505 (PAG.01              )
 gpio-506 (PAG.02              )
 gpio-507 (PAG.03              )
 gpio-508 (PAG.04              )
 gpio-509 (PAG.05              )
 gpio-510 (PAG.06              )
 gpio-511 (PAG.07              )
root@tegra-ubuntu:/home/nvidia# echo 444 > /sys/class/gpio/export 
root@tegra-ubuntu:/home/nvidia# cd /sys/class/gpio/
root@tegra-ubuntu:/sys/class/gpio# ls
export  gpiochip316  gpiochip348  PP.04  unexport
root@tegra-ubuntu:/sys/class/gpio# 

我这个在没写驱动前就是这样的,就是应为这样,我才放弃了设备树,想用寄存器的方式去搞

那你可以試一下你是全部的gpio都被permission denied 還是只有這根gpio嗎?

我先 echo 443 > /sys/class/gpio/export 之后再# echo 444 > /sys/class/gpio/export, 现在就有了;但是这需要用户操作的,总不能上层open(fd)前,先手动树命令把