修改rv1126/1109内核设备树流程
修改rv1126/1109内核设备树流程:
以修改串口2(调试串口ttyFIQ0)为例:
1,打开内核设备树所在目录路径为:SDK/kernel/arch/arm/boot/dts目录下:
主要有关的本设备RV1126的有关设备树为rv1126.dtsi,rv1126-firefly-rk809.dtsi,rv1126-pinctrl.dtsi,rv1126-firefly-jd4.dtsi,rv1126-firefly-jd4.dts
2,与串口2有关的设备树文件为,rv1126-firefly-jd4.dtsi,其中启动参数有:
chosen {
bootargs = "earlycon=uart8250,mmio32,0xff570000 console=ttyFIQ0 ro root=PARTLABEL=rootfs rootfstype=ext4 rootwait overlayroot=device:dev=PARTLABEL=userdata,fstype=ext4,mkfs=1 cgroup_enable=memory swapaccount=1 snd_aloop.index=7";
};
其中0xff570000就是uart2的地址
uart2: serial@0xff570000
设置了console使用节点ttyFIQ0
console=ttyFIQ0
而ttyFIQ0的节点对应的设备树文件为:rv1126.dtsi,其中
fiq_debugger: fiq-debugger {
compatible = "rockchip,fiq-debugger";
rockchip,serial-id = <2>;
rockchip,wake-irq = <0>;
rockchip,irq-mode-enable = <0>;
rockchip,baudrate = <1500000>; /* Only 115200 and 1500000 */
interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
其中的第3,6行为关注的重点,意义如下:
rockchip,serial‐id = <2>; /*设置串口id,想换不同的串口就改这个ID*/
rockchip,baudrate = <xxx>; /* 波特率,只能115200或者1500000 */
该节点驱动加载后会注册/dev/ttyFIQ0设备,需要注意的是rockchip,serial-id即便改了,注册的也是ttyFIQ0;所以如果要将调试串口改成其它串口,比如uart4,只需要fiq的dts和bootargs,内核日志就将在uart4上输出
#rv1126.dtsi
rockchip,serial-id = <4>;
pinctrl-0 = <&uart4m0_xfer>;
#rv1126-firefly-jd4.dtsi
bootargs = "earlycon=uart8250,mmio32,ff590000";
并且在文件rv1126-firefly-rk809.dtsi中可以看到使能了该节点:
&fiq_debugger {
status = "okay";
};
因此修改调试串口波特率即修改fiq节点中的rockchip,baudrate即可,改为115200.
注意,调用修改其他串口或I2C驱动可以直接在rv1126-firefly-jd4.dts下追加节点即可,如下如示:
&i2c1 {
//clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>;
//pinctrl-0 = <&i2c1_xfer>;
status = "okay";
ssd1306: ssd1306@3c {
compatible = "ssd1306";
reg = <0x3c>;
screen_max_x = <128>;
screen_max_y = <64>;
};
};
&uart1 {
current-speed = <9600>;
no-loopback-test;
status = "okay";
};
修改完毕后,保存设置。进入sdk目录下,
cd sdk
然后编译内核即可,输入命令:
./build.sh kernel
注意,若是只修改设备树,则编译内核将十分迅速。
然后,在目录sdk/kernel下找到zboot.img,此即为编译完成的内核及设备树文件。拷贝在window某一目录下即可。
打开瑞芯微下载工具AndroidTool中Androidtool.exe,将开发板与电脑同时以双USB公对公线连接后运行,若是打开开发工具后,最下面显示是发现一个ADB设备,则点击切换按扭,切换设备到发现一个Loader设备。
之后,右键空白区域,输入导入设备分区表,找到原厂给的一个设备分区表文件aio-rv1126-jd4-ipc,一般rv1126的设备分区表设置基本一致。
只点击boot,并输入Boot所在的文件夹的地址路径即可。
之后点击执行按扭。
在打开串口工具,找到CH340注册的端口,并输入波特率为115200,即可打开终端调试。
注:有两个小问题,1,打开串口后,其中的uboot打印参数是乱码,推测是uboot启动串口2波特率1500000与改后的内核串口2波特率115200不一致.
2.每次输入reboot重启后,当快要进入终端时,总是会卡在一个ntp同步时间的指令上,可以关闭打开的窗口再重新打开,但是这个问题根本问题仍没有解决。
问题解决方法:
推测为更改波特率为1500000时所带来的系统重新启动未知bug,可以重新改回1500000波特率解决。
参考文章:
https://github.com/54shady/kernel_drivers_examples/blob/Firefly_RK3399/debug/uart/README.md