PI 3 因為BT 的關係,所以原來的 uart console 被拿去給 bt 用了,
所以有一堆..
PI3 有兩個 uart:
- PL011 : /dev/ttyAMA0 -- BT
- mini UART : /dev/ttyS0 --console
所以指定 誰是 /dev/serial0,誰就會變 console。
miniUART 有些問題。
他的 baurate 是從 VPU 的 clk 除的。
所以跟 VPU 的頻率相關。
當使用 dvfs時,VPU 的頻率是會變的,有時候甚至會關閉,
這樣就導致 miniUART 的 baudrate 無法固定,關閉時甚至無法是用。
可以在 config.txt 中加上 enable_uart=1,
這樣,VPU 的 core_freq 就會固定 250MHz,
如果加上 force_turbo 就會固定 400MHz。
enable_uart 只跟 miniUART 有關,不會影響到 PL011
UART 和 GPIO
pi 的 kernel 是用 devicetree overlay 來處理不同 device tree 配置問題。
有兩個:
- pi3-disable-bt : 這個會 關掉 ttyAMA0,並且把 tx, rx 接到 GPIO 14, 15 pin 上
- pi3-miniuart-bt : 這個會讓 bt 使用 miniuart (ttyS0),一樣把 ttyAMA0 的 tx, rx 接到 GPIO 14, 15 pin 上
dtoverlay=pi3-disable-bt就可以用 最旁邊的第3(GND), 4(TX), 5(RX) 做 console uart 了。
在 yocto project 中
在自己增加的 layer 中...
recipes-bsp/bootfiles/rpi-config_git.bbappend:
SRCREV = "648ffc470824c43eb0d16c485f4c24816b32cd6f" do_deploy_append() { if [ -n "${ENABLE_RPI3_SERIAL_CONSOLE}" ]; then echo "" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo "## Disable RPi3 bluetooth to enable serial console on UART0" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo "dtoverlay=pi3-disable-bt" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt fi }
沒有留言:
張貼留言