修改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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM