
ๅพ๏ผไธคไธช UART ่ฎพๅคไน้ด็ๆฐๆฎไผ ่พ
ๅณๅฎไผ ่พๆๅ็ๅๆฐๅฆไธ๏ผ- ๆณข็น็
- ่ตทๅงไฝ
- ๅๆญขไฝ
- ๅฅๅถๆ ก้ชไฝ
- ๆฐๆฎไฝ
- ๆตๆง

ๅพ๏ผUART ๆฐๆฎๅ
UART ็นๆง
ไธ่กจๆ่ฟฐไบๅบ็จ็จๅบ็ UART ไผ ่พๆจกๅผใ่กจ๏ผUART ไผ ่พๆจกๅผ
| ๅญ็ณป็ป | ไผ ่พๆจกๅผ | ่ฏดๆ |
|---|---|---|
| Linux |
|
|
| Boot | FIFO |
|
| ADSP | FIFO |
|
UART ๆฅๅฃ็ปไปถ
ไธ่กจๆไพไบไธๅๅญ็ณป็ป็ UART ้ฉฑๅจ้ ็ฝฎ็่ทฏๅพใ ่กจ๏ผUART ๆฅๅฃ๏ผLinux| ๆไปถ็ฑปๅ | ่ฏดๆ |
|---|---|
| ่ฎพๅคๆ ๆบ |
|
| Pinctrl ่ฎพ็ฝฎ |
|
| Qualcomm TEE ่ฎพ็ฝฎ |
|
| ๆไปถ็ฑปๅ | ่ฏดๆ |
|---|---|
| QUP v3 ไธฒ่กๅผๆ้ ็ฝฎ |
|
| Qualcomm TEE ่ฎพ็ฝฎ |
|
| ๆไปถ็ฑปๅ | ่ฏดๆ |
|---|---|
| QUP v3 ไธฒ่กๅผๆ้ ็ฝฎ |
|
| ๅบไปถ้ ็ฝฎ่ฎพ็ฝฎ |
|
UART API
ๆฌ่ๅๅบไบไปฅไธๅญ็ณป็ป็ UART APIใ- Linux๏ผhttps://github.com/torvalds/linux/blob/master/include/linux/tty.h
- Boot๏ผQcomPkg/Include/HSUart.h
- ADSP๏ผadsp_proc/core/api/buses/uart.h
UART ่ฝฏไปถ่ฎพๅคๆ ้ ็ฝฎ
ๆฌ่ๆไพๆๅ ณ UART ่ฎพๅคๆ ้ ็ฝฎไปฅๅ่ฎพๅค่็นๆๆกฃ็ไฟกๆฏใLinux
ๆๅ ณๅ ๆ ธ่ฎพๅคๅฎไพ็ไฟกๆฏ๏ผ่ฏทๅ้ https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/serial/qcom%2Cserial-geni-qcom.yamlใ ๆๅ ณ UART ้ฉฑๅจๆไปถ็ไฟกๆฏ๏ผ่ฏทๅ้ https://github.com/torvalds/linux/blob/master/drivers/tty/serial/qcom_geni_serial.c- QCS6490 ๅ QCS5430๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/kodiak.dtsi
- Dragonwing IQ-9075๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/lemans.dtsi
- Dragonwing IQ-615๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/talos.dtsi
ๆณจๆๅฟ
้กปๅจ
QUPAC_Access.c ๆไปถไธญๅฏน้ฝ Qualcomm TEE ้
็ฝฎ๏ผไปฅ็กฎไฟ GPIO/QUP v3 ๅฏไปฅไฝฟ็จใๆจๅฏไปฅๅจ /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/qup_accesscontrol/qupv3/config/<chipset>/QUPAC_Access.c ่ฎฟ้ฎ Qualcomm TEE ้ๅใไฟฎๆนๆ้็่ฎพ็ฝฎ๏ผๆๆฅ็ไธบ QUP v3 ไธฒ่กๅผๆ็นๅฎๅฎไพๅ้
็้ป่ฎค่ฎพ็ฝฎใ- ไธบ SE7 ๅฏ็จ็้ป่ฎค้
็ฝฎไธบ HS UART
- SE5 ็ 2 ็บฟ UART ้
็ฝฎ
Boot
ๅฏไปฅไฝฟ็จ/firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/BOOT.MXF.1.0.c1/boot_images/boot/QcomPkg/SocPkg/<chipset>/Settings/UART/UartSettings.c ๆไปถๅจๅฏๅจ้ถๆฎตๅฐ QUP v3 ไธฒ่กๅผๆ้
็ฝฎไธบ UARTใ
| ไฝ | ๅๆฐ |
|---|---|
| [0:3] | GPIO ๅ่ฝ |
| [4:13] | GPIO ็ผๅท |
| [14] | ๆนๅ |
| [15:17] | ไธไธๆ็ฑปๅ |
| [18:21] | ้ฉฑๅจๅผบๅบฆ |
ADSP
ๅบไปถๅจ ADSP ๅญ็ณป็ป็ๅฏๅจๅบๅๆ้ดๅ ่ฝฝ SSC QUPใๅ ๆญค๏ผ้ ็ฝฎๆไปถไฝไบ ADSP ๆๅปบไธญ็/firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/ADSP.HT.5.5.c8/adsp_proc/core/settings/buses/qup_fw/config/<chipset>/fw_devcfg.cใ
ไปฅไธ้
็ฝฎๆฏๅจ FIFO ๆจกๅผไธๅ ่ฝฝไบ UART ๅบไปถ็ SSC QUP SE5/6 ็็คบไพใ
/firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/ADSP.HT.5.5.c8/adsp_proc/core/settings/buses/qup_common/config/<chipset>/adsp/ssc/qup_instance_mapping.c ไธญ่ทๅ GPIO ้
็ฝฎใ
ๅฏไปฅๆๅฆไธๆนๅผ่ฆ็้ป่ฎค GPIO ้
็ฝฎใ
UART ๅทฅๅ ท
ๆฌ่ๆไพๆๅ ณ UART ไธฒ่กๆฅๅฃ้ฉฑๅจ็ๅ็งๆต่ฏๅทฅๅ ทๅๆนๆณ็ไฟกๆฏ๏ผไปฅ็กฎ่ฎค UART ๆฐๆฎไผ ่พใLinux
ๆๅ ณๆดๅค่ฏฆ็ปไฟกๆฏ๏ผ่ฏทๅ้ https://docs.kernel.org/admin-guide/serial-console.htmlใๅจๅ ๆ ธไธญๅฏ็จ UART
ๆฌ่ๆไพๆๅ ณๅฆไฝๅจๅ ๆ ธไธญๅฏ็จ UART ็ไฟกๆฏใLinux
ๆฏๆ UART ๆฅๅฃ้่ฆไปฅไธ้ฉฑๅจๅ ๆ ธ้ ็ฝฎใ- UART ้ฉฑๅจ๏ผhttps://github.com/torvalds/linux/blob/master/drivers/tty/serial/qcom_geni_serial.c
- ๅ
ๆ ธ
defconfigๆไปถ่ทฏๅพ๏ผ<workspace_path_of_LINUX_kernel_image>/sources/kernel/kernel_platform/kernel/arch/arm64/configs/qcom_defconfig
CONFIG_QCOM_GENI_SE=yCONFIG_SERIAL_QCOM_GENI=y
/arch/arm64/boot/dts/qcom/<chipset>.dtsi ๆไปถไธญๅบ็จไปฅไธ่กฅไธใ
ๆณจๆๆจๅบๅฝ็ผ่ฏๅ
ๆ ธ้
็ฝฎๅ่ฎพๅคๆ ๆดๆนใ็ผ่ฏๅฎๆๅ๏ผๅฏไปฅๅฐ้ๅๅ ่ฝฝๅฐ่ฎพๅคไธไปฅ้ช่ฏๆฅๅฃใๆๅ
ณๆฅๅฃ้ช่ฏ็ไฟกๆฏ๏ผ่ฏทๅ้
Verify UART interface ้จๅใ
Boot/ADSP
ๆๅ ณ่ชๅฎไน๏ผ่ฏทๅ้ UART software device tree configuration ้จๅใUART ่ชๅฎไน
ๆๅ ณ่ชๅฎไน UART ่ฝฏไปถ็ไฟกๆฏ๏ผ่ฏทๅ้ QUP v3 access control customizationใ้ช่ฏ UART ๆฅๅฃ
ๆฌ่ไป็ป UART ้ฉฑๅจ็้ช่ฏ่ฟ็จไปฅๅ Qualcomm ้ฉฑๅจ็ๆต่ฏ็ปๆใLinux
่ฆๅฏ็จ UART ่็น๏ผ่ฏทๆง่กไปฅไธๆไฝๅนถ็ผ่ฏๅ ๆ ธ้ ็ฝฎใ-
่ฆๅฐ UART ็ถๆๆดๆนไธบ OK ๅนถไธบ็นๅฎ UART ่็นๆทปๅ ๅซๅ๏ผ่ฏท็ผ่พไปฅไธ DTSI ๆไปถใ
- QCS6490 ๅ QCS5430๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/kodiak.dtsi
- Dragonwing IQ-9075๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/lemans.dtsi
- Dragonwing IQ-615๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/talos.dtsi
ๆณจๆๅฏ็จ SSH shell ๆไฝฟ็จ ADB shell ่ฟ่กๅฝไปคๅนถๅจ SSH shell๏ผๆงๅถๅฐ๏ผ็ชๅฃไธญๆพ็คบ่พๅบใๆๅ ณๅฆไฝ่ฟ่ก SSH ็ๆดๅคไฟกๆฏ๏ผ่ฏทๅ้ Use SSH ้จๅใ -
ไธบ่ฟ่กๅ็ฏๆต่ฏ๏ผ่ฏทๅจ https://github.com/torvalds/linux/blob/master/drivers/tty/serial/qcom_geni_serial.c ๆไปถ็
qcom_geni_serial.cไธญ็ฆ็จifๆกไปถใ
- ๅจไปฅไธ DTSI ๆไปถไธญ็ฆ็จ UART ้ป่ฎค็จไพใ
- QCS6490 ๅ QCS5430๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/kodiak.dtsi
- Dragonwing IQ-9075๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/lemans.dtsi
- Dragonwing IQ-615๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/talos.dtsi
ๅฐๆพ็คบไปฅไธ่พๅบใ - ่ฆ้ช่ฏ UART ้ฉฑๅจ๏ผ่ฏทๆง่กไปฅไธๆไฝ๏ผ
- ไปฅๅฎฝๅฎน๏ผpermissive๏ผๆจกๅผๆๅผ SSH shell๏ผๆไฝฟ็จ ADB shellใ
- ๆณจๅ UARTใ
ไปฅไธๆฏ็คบไพ่พๅบใๆ นๆฎไธบ
serial1 = &uart7ๆทปๅ ็ๅซๅๆ ๅฐttyHS1็ซฏๅฃๅนถๅฏ็จไธฒ่กๅผๆใ
ๆณจๆๆๅผไธคไธช SSH shell ๆไฝฟ็จ ADB shell ๆฅๅๅ
ฅๅ่ฏปๅ UART ๅ็ฏ็ๆฐๆฎใๆๅ
ณๅฆไฝ่ฟ่ก SSH ็ๆดๅคไฟกๆฏ๏ผ่ฏทๅ้
Use SSH ้จๅใ
- ไปฅๅฎฝๅฎน๏ผpermissive๏ผๆจกๅผๆๅผ SSH shell๏ผๆไฝฟ็จ ADB shellใ
- ไฝฟ็จ
echoๅฝไปคไผ ่พๆฐๆฎใ - ๅจ UART ่ฎพๅค่็นไธญ่ฏปๅๆฐๆฎใ
่ฐ่ฏ UART ้ฎ้ข
ๆฌ่ๆไพๆๅ ณๅจ UART ่ฝฏไปถ้ฉฑๅจไธญๅฏ็จ่ฐ่ฏๆฅๅฟ็ไฟกๆฏใLinux
UART ้ฉฑๅจๆฅๅฟ่ฎฐๅฝ้่ฟๅจๆ่ฐ่ฏๆนๆณๅฏ็จใๅจ<workspace_path_of_LINUX_kernel_image>/sources/kernel/kernel_platform/kernel/arch/arm64/configs/qcom_defconfig ไธญๅฏ็จ CONFIG_DYNAMIC_DEBUG ไปฅๆฏๆๅ
ๆ ธ้ฉฑๅจ็ๅจๆ่ฐ่ฏใ
่ฆๅจๅ
ๆ ธๆฅๅฟ๏ผdmesg๏ผไธญๅฏ็จๅนถๆฅ็ UART ้ฉฑๅจๆฅๅฟ๏ผ่ฏท่ฟ่กไปฅไธๅฝไปคใ
UART ็คบไพ
ๆๅ ณไธๆธธ่ฎพๅคๆ ๅ่็ไฟกๆฏ๏ผ่ฏทๅ้ ไปฅไธ DTSI ๆไปถใ- QCS6490 ๅ QCS5430๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/kodiak.dtsi
- Dragonwing IQ-9075๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/lemans.dtsi
- Dragonwing IQ-615๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/talos.dtsi
- QCS6490 ๅ QCS5430๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
- Dragonwing IQ-9075๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/lemans.dtsi
- Dragonwing IQ-615๏ผhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/talos.dtsi

