树莓派通过配置config.txt文件使用片上外设

参考:https://www.raspberrypi.org/documentation/hardware/computemodule/cm-peri-sw-guide.md

 

config.txt的说明文档:https://www.raspberrypi.org/documentation/configuration/config-txt/README.md

树莓派是使用一个配置文件config.txt代替pc机中的BIOS的功能。这个配置文件会在arm_cpu以及Linux初始化之前被GPU读取。如果相对应的外设使用到了gpio接口,那么gpio的引脚复用的功能,可以先通过gpio readall读取相应的引脚的复用信息。以cm3+的40 41两个引脚输出双通道的pwm为例。

 

比如:通过https://www.raspberrypi.org/documentation/hardware/computemodule/datasheets/rpi_DATA_CM3plus_1p0.pdf

 

得知引脚40和41的ALT0具有pwm0和pwm1的功能。如果想启用这个功能,可以根据/boot/overlay/README文件:

 

在/boot/overlay/目录下确实使用这个设备树文件的:

 

修改/boot/config.txt文件的内容:

 

现将3.5 jack 耳机接口连接到树莓派的40和41引脚的时候就可以通过这一对pwm对输出音频。


可以使用gpio readall查看gpio的状态,40和41引脚已经变成ALT0的了,也就是pwm的双通道输出功能。

(也可以使用raspi-gpio get)

 

 

注意笔者使用的是cm3+板子,如果是Pi 3B+的话,gpio readall是如下输出(PI 3b+ 没有引出40 41引脚,所以就不可见):

 

gpio的引脚复用功能:https://www.raspberrypi.org/documentation/hardware/computemodule/datasheets/rpi_DATA_CM3plus_1p0.pdf

树莓派的设备树的介绍:https://www.raspberrypi.org/documentation/configuration/device-tree.md


可以通过参考文档中的命令查看gpu启动时对config.txt的解析过程:

sudo vcdbg log msg

pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ sudo vcdbg log msg
002620.643: brfs: File read: /mfs/sd/config.txt
002621.994: brfs: File read: 2147 bytes
002626.412: brfs: File read: /mfs/sd/dt-blob.bin
002635.469: HDMI:EDID error reading EDID block 0 attempt 0
002636.771: HDMI:EDID error reading EDID block 0 attempt 1
002638.064: HDMI:EDID error reading EDID block 0 attempt 2
002639.359: HDMI:EDID error reading EDID block 0 attempt 3
002640.652: HDMI:EDID error reading EDID block 0 attempt 4
002641.946: HDMI:EDID error reading EDID block 0 attempt 5
002643.239: HDMI:EDID error reading EDID block 0 attempt 6
002644.533: HDMI:EDID error reading EDID block 0 attempt 7
002645.826: HDMI:EDID error reading EDID block 0 attempt 8
002647.121: HDMI:EDID error reading EDID block 0 attempt 9
002648.178: HDMI:EDID giving up on reading EDID block 0
002648.539: HDMI:EDID error reading EDID block 0 attempt 0
002649.837: HDMI:EDID error reading EDID block 0 attempt 1
002651.136: HDMI:EDID error reading EDID block 0 attempt 2
002652.434: HDMI:EDID error reading EDID block 0 attempt 3
002653.733: HDMI:EDID error reading EDID block 0 attempt 4
002655.031: HDMI:EDID error reading EDID block 0 attempt 5
002656.329: HDMI:EDID error reading EDID block 0 attempt 6
002657.627: HDMI:EDID error reading EDID block 0 attempt 7
002658.925: HDMI:EDID error reading EDID block 0 attempt 8
002660.223: HDMI:EDID error reading EDID block 0 attempt 9
002661.284: HDMI:EDID giving up on reading EDID block 0
002671.878: brfs: File read: 42666 bytes
002675.578: brfs: File read: /mfs/sd/config.txt
002676.930: gpioman: gpioman_get_pin_num: pin LEDS_PWR_OK not defined
002685.059: gpioman: gpioman_get_pin_num: pin BT_ON not defined
002685.119: gpioman: gpioman_get_pin_num: pin WL_ON not defined
002719.794: gpioman: gpioman_get_pin_num: pin DISPLAY_DSI_PORT not defined
002976.802: gpioman: gpioman_get_pin_num: pin LEDS_PWR_OK not defined
002976.889: *** Restart logging
002976.952: brfs: File read: 2147 bytes
002980.816: hdmi: HDMI:EDID error reading EDID block 0 attempt 0
002982.127: hdmi: HDMI:EDID error reading EDID block 0 attempt 1
002983.429: hdmi: HDMI:EDID error reading EDID block 0 attempt 2
002984.731: hdmi: HDMI:EDID error reading EDID block 0 attempt 3
002986.034: hdmi: HDMI:EDID error reading EDID block 0 attempt 4
002987.337: hdmi: HDMI:EDID error reading EDID block 0 attempt 5
002988.640: hdmi: HDMI:EDID error reading EDID block 0 attempt 6
002989.943: hdmi: HDMI:EDID error reading EDID block 0 attempt 7
002991.247: hdmi: HDMI:EDID error reading EDID block 0 attempt 8
002992.550: hdmi: HDMI:EDID error reading EDID block 0 attempt 9
002993.616: hdmi: HDMI:EDID giving up on reading EDID block 0
002993.984: hdmi: HDMI:EDID error reading EDID block 0 attempt 0
002995.286: hdmi: HDMI:EDID error reading EDID block 0 attempt 1
002996.581: hdmi: HDMI:EDID error reading EDID block 0 attempt 2
002997.877: hdmi: HDMI:EDID error reading EDID block 0 attempt 3
002999.173: hdmi: HDMI:EDID error reading EDID block 0 attempt 4
003000.469: hdmi: HDMI:EDID error reading EDID block 0 attempt 5
003001.765: hdmi: HDMI:EDID error reading EDID block 0 attempt 6
003003.062: hdmi: HDMI:EDID error reading EDID block 0 attempt 7
003004.358: hdmi: HDMI:EDID error reading EDID block 0 attempt 8
003005.654: hdmi: HDMI:EDID error reading EDID block 0 attempt 9
003006.714: hdmi: HDMI:EDID giving up on reading EDID block 0
003007.046: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead
003007.119: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead
003013.360: brfs: File read: /mfs/sd/bcm2710-rpi-cm3.dtb
003013.429: Loading 'bcm2710-rpi-cm3.dtb' to 0x100 size 0x62ce
003205.184: brfs: File read: 25294 bytes
003211.387: brfs: File read: /mfs/sd/overlays/rpi-ft5406.dtbo
003230.815: Loaded overlay 'rpi-ft5406'
003282.614: brfs: File read: 1018 bytes
003287.733: brfs: File read: /mfs/sd/overlays/rpi-backlight.dtbo
003306.245: Loaded overlay 'rpi-backlight'
003347.892: brfs: File read: 489 bytes
003350.479: brfs: File read: /mfs/sd/config.txt
003351.038: dtparam: i2c_arm=on
003375.626: dtparam: spi=on
003396.761: dtparam: audio=on
003425.460: brfs: File read: 2147 bytes
003429.497: brfs: File read: /mfs/sd/overlays/i2c-rtc.dtbo
003458.607: Loaded overlay 'i2c-rtc'
003458.672: dtparam: ds3231=true
003459.930: dtparam: uart1=on
003514.142: brfs: File read: 4761 bytes
003520.552: brfs: File read: /mfs/sd/overlays/uart1.dtbo
003539.571: Loaded overlay 'uart1'
003539.627: dtparam: txd1_pin=32
003540.111: dtparam: rxd1_pin=33
003588.768: brfs: File read: 980 bytes
003594.982: brfs: File read: /mfs/sd/overlays/pwm-2chan.dtbo
003614.554: Loaded overlay 'pwm-2chan'
003614.610: dtparam: pin=40
003614.940: dtparam: func=4
003615.284: dtparam: pin2=41
003615.617: dtparam: func2=4
003660.673: brfs: File read: 1096 bytes
003668.674: brfs: File read: /mfs/sd/overlays/w1-gpio.dtbo
003681.158: Loaded overlay 'w1-gpio'
003750.509: brfs: File read: 1036 bytes
003751.730: brfs: File read: /mfs/sd/cmdline.txt
003751.838: Read command line from file 'cmdline.txt':
003751.908: 'console=tty1 console=serial0,115200 root=PARTUUID=5e3da3da-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles logo.nologo 8250.nr_uarts=1'
005877.552: gpioman: gpioman_get_pin_num: pin WL_ON not defined
005893.184: brfs: File read: 194 bytes
006389.120: brfs: File read: /mfs/sd/kernel7.img
006389.186: Loading 'kernel7.img' to 0x8000 size 0x52c4f8
006389.260: Device tree loaded to 0x2eff9500 (size 0x6adb)
006391.370: gpioman: gpioman_get_pin_num: pin SDCARD_CONTROL_POWER not defined
007642.519: vchiq_core: vchiq_init_state: slot_zero = 0xf7980000, is_master = 1
011418.569: camsubs: Looking for camera 0: i2c_port = 0, led gpio = 44, power enable gpio = 45
011720.169: camsubs: Camera not found
011720.276: camsubs: Looking for camera 0: i2c_port = 0, led gpio = 44, power enable gpio = 45
012021.851: camsubs: Camera not found
012021.940: camsubs: Looking for camera 0: i2c_port = 0, led gpio = 44, power enable gpio = 45
012023.625: camsubs: Camera found OK
012030.936: camsubs: Looking for camera 1: i2c_port = 0, led gpio = 30, power enable gpio = 31
012332.234: camsubs: Camera not found
012332.324: camsubs: Looking for camera 1: i2c_port = 0, led gpio = 30, power enable gpio = 31
012633.090: camsubs: Camera not found
012633.166: camsubs: Looking for camera 1: i2c_port = 0, led gpio = 30, power enable gpio = 31
012634.655: camsubs: Camera not found
012634.732: camsubs: Looking for camera 1: i2c_port = 0, led gpio = 30, power enable gpio = 31
012635.494: camsubs: Camera not found
012635.568: camsubs: Looking for camera 1: i2c_port = 0, led gpio = 30, power enable gpio = 31
012636.335: camsubs: Camera not found
012638.432: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
012638.501: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
012638.591: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
012638.667: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
478727.461: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
478727.531: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
478894.827: Using RPI AWB
485034.077: mmalsrv: on_bulk_event: bulk tx aborted b
2130904.608: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2130904.685: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2130912.775: Using RPI AWB
2180220.824: mmalsrv: on_bulk_event: bulk tx aborted 7
2245190.885: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2245190.954: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2245199.093: Using RPI AWB
2338221.863: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2338221.932: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2338230.235: Using RPI AWB
1466657.450: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
1466657.519: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
1466665.657: Using RPI AWB
1770573.077: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
1770573.146: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
1770581.276: Using RPI AWB
1790033.387: mmalsrv: on_bulk_event: bulk tx aborted 7
1883293.153: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
1883293.229: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
1883301.327: Using RPI AWB
1923250.934: mmalsrv: on_bulk_event: bulk tx aborted b
2092940.507: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2092940.579: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2092948.713: Using RPI AWB
2095292.425: mmalsrv: on_bulk_event: bulk tx aborted 3f7256a0
2095292.493: mmalsrv: on_bulk_event: bulk tx aborted 7
2149355.013: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2149355.089: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2149363.907: Using RPI AWB
2164276.374: mmalsrv: on_bulk_event: bulk tx aborted b
2260204.155: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2260204.223: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2260212.334: Using RPI AWB
2410370.922: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2410370.990: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2410379.137: Using RPI AWB
2909389.278: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2909389.347: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2909397.510: Using RPI AWB
3093039.458: mmalsrv: on_bulk_event: bulk tx aborted 7
3096280.553: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
3096280.630: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
3096288.755: Using RPI AWB
3110476.849: mmalsrv: on_bulk_event: bulk tx aborted 3f725ce0
3110476.929: mmalsrv: on_bulk_event: bulk tx aborted b
3186213.020: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
3186213.092: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
3186221.948: Using RPI AWB
3209965.567: mmalsrv: on_bulk_event: bulk tx aborted 3f7259c0
3209965.636: mmalsrv: on_bulk_event: bulk tx aborted 7
3216779.458: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
3216779.533: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
3216787.633: Using RPI AWB
3352450.487: mmalsrv: on_bulk_event: bulk tx aborted b
3355392.597: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
3355392.668: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
3355401.650: Using RPI AWB
3494334.284: mmalsrv: on_bulk_event: bulk tx aborted 3f7259c0
3494334.353: mmalsrv: on_bulk_event: bulk tx aborted 7
3543971.238: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
3543971.319: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
3543979.461: Using RPI AWB
4085964.264: mmalsrv: on_bulk_event: bulk tx aborted b
4135978.659: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
4135978.732: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
4135986.872: Using RPI AWB
1066842.199: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
1066842.271: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
1066850.343: Using RPI AWB
1080635.341: mmalsrv: on_bulk_event: bulk tx aborted b
1084487.270: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
1084487.345: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
1084495.496: Using RPI AWB
1093754.112: mmalsrv: on_bulk_event: bulk tx aborted 7
1239423.370: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
1239423.438: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
1239431.549: Using RPI AWB
1267069.335: mmalsrv: on_bulk_event: bulk tx aborted b
1675299.687: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
1675299.772: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
1675307.922: Using RPI AWB
1696631.467: mmalsrv: on_bulk_event: bulk tx aborted 7
2148031.924: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2148031.995: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2148040.209: Using RPI AWB
2152463.644: mmalsrv: on_bulk_event: bulk tx aborted 3f725ce0
2152463.716: mmalsrv: on_bulk_event: bulk tx aborted b
2233967.914: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2233967.989: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2233976.189: Using RPI AWB
2324546.559: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
2324546.634: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
2324554.759: Using RPI AWB
2328964.393: mmalsrv: on_bulk_event: bulk tx aborted 3f725ce0
2328964.468: mmalsrv: on_bulk_event: bulk tx aborted b
pi@raspberrypi:~ $ 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值