背景 :
rk3288 默认调试串口为uart2, 项目需要将uart2 修改为普通串口,理论知识不多说了, 本人也是接触android底层不久,理论知识没那么扎实,写出来也是复制别人的.主要记录一下自己调试过程,方便以后翻阅
1、 修改 dts文件(或者dtsi文件)
关掉FIQ debugger,Disable以下节点
fiq-debugger {
compatible = "rockchip,fiq-debugger";
interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
rockchip,serial-id = <2>;
rockchip,wake-irq = <0>;
rockchip,irq-mode-enable = <0>; /* If enable uart uses irq instead of fiq */
rockchip,baudrate = <115200>; /* Only 115200 and 1500000 */
pinctrl-names = "default";
pinctrl-0 = <&uart2_xfer>;
status = "disabled";
};
2、注释 bootargs = “earlycon=uart8250,mmio32,0xff690000 vmalloc=496M”;
chosen {
// bootargs = "earlycon=uart8250,mmio32,0xff690000 vmalloc=496M";
};
3、重写parameter.txt
commandline:androidboot.console=ttyFIQ0,去掉ttyFIQ0。
4、修改 android/device/rockchip/common/recovery/etc/init.rc
service recovery /sbin/recovery
#console 这个注释掉
seclabel u:r:recovery:s0
以上四步修改之后 实现了 关闭串口2日志输出
下面修改为普通串口使用
5、修改 MakeFile ./kernel/arch/arm/configs/xxxxx_defconfig
找到DEBUGGER 相关的开关
CONFIG_FIQ_DEBUGGER=y
CONFIG_FIQ_DEBUGGER_NO_SLEEP=y
CONFIG_FIQ_DEBUGGER_CONSOLE=y
CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y
全部注释掉
#CONFIG_FIQ_DEBUGGER=y
#CONFIG_FIQ_DEBUGGER_NO_SLEEP=y
#CONFIG_FIQ_DEBUGGER_CONSOLE=y
#CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y
否则在 设备在开机过程中 dmesg不会显示 串口2 注册信息
6、修改DTS文件
&uart2 {
status = "okay";
};
7、ueventd.rockchip.rc 中添加
/dev/ttyS2 0666 system system
修改之后 编译镜像,烧录 通过adb 测试
adb shell
/ # dmesg |grep ttyS*
串口输出:
echo aaaaaa > /dev/ttyS2
串口读取:
cat /dev/ttyS2
写之后读:
echo 0 > /dev/ttyS2 | cat /dev/ttyS2
测试结果可以发送和接收,
安装串口调试APK,发现开启存在权限.待查