前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全志平台Tina系统启动阶段改设备DTS的方法

全志平台Tina系统启动阶段改设备DTS的方法

作者头像
阿志小管家
发布2024-02-02 15:17:25
2460
发布2024-02-02 15:17:25
举报
文章被收录于专栏:全志嵌入式那些事

原文链接:https://bbs.aw-ol.com/topic/276

更多信息,欢迎来全志在线开发者社区看~

在设备BSP调试的过程中,经常会出现需要修改DTS的情况,比如调试一个新的屏幕、传感器或者wifi模组,传统的方法是: 在源码中直接修改board.dts文件->重新编译&打包->烧写到设备里 这种方法繁杂,编译和烧写都要花费时间,严重影响开发效率。 因此,全志(其实是uboot提供的)提供了一个启动阶段DTS调试的方法,可以让我们在启动阶段就把DTS改掉,这次启动加载的就是改后的DTS。 *注:这种修改是一次性的,不可以保存的,只限这次启动的时候生效,断电或者重启就不生效了1.设备上电过程中串口按住电脑键盘的"s"按键,让设备进入boot: *注:是真的按住调试的电脑的键盘的s按键,和按住2另设备跳烧录的操作一样(参考:[https://d1.docs.aw-ol.com/study/study_4compile/#pc2](https://d1.docs.aw-ol.com/study/study_4compile/#pc2)) 如果进入boot成功,就会有如下log,这时就可以在串口对设备进行DTS修改操作。 (详细log如下)

代码语言:javascript
复制
[188]HELLO! BOOT0 is starting!
[191]BOOT0 commit : 27369ab
[194]set pll start
[196]periph0 has been enabled
[199]set pll end
[200][pmu]: bus read error
[203]board init ok
[205]DRAM only have internal ZQ!!
[208]get_pmu_exist() = -1
[210]DRAM BOOT DRIVE INFO: V0.24
[213]DRAM CLK = 792 MHz
[215]DRAM Type = 3 (2:DDR2,3:DDR3)
[219]DRAMC ZQ value: 0x7b7bfb
[221]DRAM ODT value: 0x42.
[224]ddr_efuse_type: 0x0
[227]DRAM SIZE =1024 M
[231]DRAM simple test OK.
[233]dram size =1024
[235]key press : s
[237]spinand UBOOT_START_BLK_NUM 8 UBOOT_LAST_BLK_NUM 32
[242]block from 8 to 32
[318]Check is correct.
[320]dma 0x2f9f8 int is not used yet
[323]dma 0x2f9f8 int is free, you do not need to free it again
[329]Entry_name        = opensbi
[332]Entry_name        = u-boot
[335]Entry_name        = dtb
[338]Jump to second Boot.

 

 

OpenSBI v0.6
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name          : T-HEAD Xuantie Platform
Platform HART Features : RV64ACDFIMSUVX
Platform Max HARTs     : 1
Current Hart           : 0
Firmware Base          : 0x40000400
Firmware Size          : 75 KB
Runtime SBI Version    : 0.2

MIDELEG : 0x0000000000000222
MEDELEG : 0x000000000000b1ff
PMP0    : 0x0000000040000000-0x000000004001ffff (A)
PMP1    : 0x0000000040000000-0x000000007fffffff (A,R,W,X)
PMP2    : 0x0000000080000000-0x00000000bfffffff (A,R,W,X)
PMP3    : 0x0000000000020000-0x0000000000027fff (A,▒

U-Boot 2018.05-g0a88ac9 (Apr 30 2021 - 11:23:28 +0000) Allwinner Technology

[00.421]DRAM:  1 GiB
[00.423]Relocation Offset is: 3def0000
[00.427]secure enable bit: 0
[00.429]CPU=1008 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz  MBus=300Mhz
[00.436]flash init start
[00.438]workmode = 0,storage type = 0
[00.444]sunxi-spinand-phy: not detect any munufacture from id table
[00.450]sunxi-spinand-phy: get spi-nand Model from fdt fail
[00.456]sunxi-spinand-phy: get phy info from fdt fail

device nand0 <nand>, # parts = 4
 #: name                size            offset          mask_flags
 0: boot0               0x00100000      0x00000000      1
 1: uboot               0x00300000      0x00100000      1
 2: secure_storage      0x00100000      0x00400000      1
 3: sys                 0x0fb00000      0x00500000      0

active partition: nand0,0 - (boot0) 0x00100000 @ 0x00000000

defaults:
mtdids  : nand0=nand
mtdparts: mtdparts=nand:1024k@0(boot0)ro,3072k@1048576(uboot)ro,1024k@4194304(secure_storage)ro,-(sys)
[00.794]ubi0: attaching mtd4
[01.190]ubi0: scanning is finished
[01.200]ubi0: attached mtd4 (name "sys", size 251 MiB)
[01.204]ubi0: PEB size: 262144 bytes (256 KiB), LEB size: 258048 bytes
[01.211]ubi0: min./max. I/O unit sizes: 4096/4096, sub-page size 2048
[01.217]ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[01.223]ubi0: good PEBs: 1004, bad PEBs: 0, corrupted PEBs: 0
[01.228]ubi0: user volume: 9, internal volumes: 1, max. volumes count: 128
[01.235]ubi0: max/mean erase counter: 2/1, WL threshold: 4096, image sequence number: 0
[01.243]ubi0: available PEBs: 0, total reserved PEBs: 1004, PEBs reserved for bad PEB handling: 40
[01.251]sunxi flash init ok
[01.254]line:714 init_clocks
__clk_init: clk pll_periph0x2 already initialized
register fix_factor clk error
[01.264]drv_disp_init
request pwm success, pwm2:pwm2:0x2000c00.
[01.281]drv_disp_init finish
[01.283]boot_gui_init:start
[01.286]set disp.dev2_output_type fail. using defval=0
[01.478]boot_gui_init:finish
[01.891]LCD open finish
partno erro : can't find partition bootloader
54 bytes read in 0 ms
[02.052]bmp_name=bootlogo.bmp size 3072054
3072054 bytes read in 126 ms (23.3 MiB/s)
[02.402]Loading Environment from SUNXI_FLASH... OK
[02.435]out of usb burn from boot: not need burn key
[02.460]update bootcmd
[02.482]change working_fdt 0x7eaafda8 to 0x7ea8fda8
[02.503]update dts
Hit any key to stop autoboot:  0
=> sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
Unknown command 'sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss' - try 'help'
=>
=>

2.要看哪个DTS节点的参数,就输入 *fdt list +节点名称*

代码语言:javascript
复制
=> fdt list /soc/
soc@3000000 {
        #address-cells = <0x00000002>;
        #size-cells = <0x00000002>;
        compatible = "simple-bus";
        ranges;        sram_ctrl@3000000 {
        };
        rtc_ccu@7090000 {
        };
        clock@2001000 {
        };
        clock@7010000 {
        };
        interrupt-controller@10000000 {
        };
        uart@2500000 {
        };
        uart@2500400 {
        };
        uart@2500800 {
        };
        uart@2500c00 {
        };
        uart@2501000 {
        };
        uart@2501400 {
        };
        ce@03040000 {
        };
        s_cir@7040000 {
        };
        ir@2003000 {
        };
        deinterlace@5400000 {
        };
        eth@4500000 {
        };
        rtc@7090000 {
        };
        dma-controller@3002000 {
        };
        timer@2050000 {
        };
        watchdog@6011000 {
        };
        mbus-comtroller@3102000 {
        };
        pmu {
        };
        idle {
        };
        pinctrl@2000000 {
        };
        spi@4025000 {
        };
        spi@4026000 {
        };
        twi@2502000 {
        };
        twi@2502400 {
        };
        twi@2502800 {
        };
        twi@2502c00 {
        };
        ledc@2008000 {
        };
        pwm@2000c00 {
        };
        keyboard@2009800 {
        };
        sid@3006000 {
        };
        gpadc@2009000 {
        };
        ths@02009400 {
        };
        rtp@2009c00 {
        };
        codec@2030000 {
        };
        dummy_cpudai@203034c {
        };
        sound@2030340 {
        };
        rpaf-dsp@203034c {
        };
        dmic@2031000 {
        };
        sound@2031050 {
        };
        sounddmic@2031060 {
        };
        daudio@2032000 {
        };
        sounddaudio0@20320a0 {
        };
        daudio@2033000 {
        };
        sounddaudio1@20330a0 {
        };
        daudio@2034000 {
        };
        sounddaudio2@20340a0 {
        };
        hdmiaudio@20340a4 {
        };
        spdif@2036000 {
        };
        soundspdif@2036040 {
        };
        g2d@5410000 {
        };
        disp@5000000 {
        };
        ve@1c0e000 {
        };
        msgbox@0601f000 {
        };
        lcd0@1c0c000 {
        };
        sdmmc@4022000 {
        };
        sdmmc@4020000 {
        };
        sdmmc@4021000 {
        };
        hdmi@5500000 {
        };
        usbc0@0 {
        };
        udc-controller@0x04100000 {
        };
        ehci0-controller@0x04101000 {
        };
        ohci0-controller@0x04101400 {
        };
        usbc1@0 {
        };
        ehci1-controller@0x04200000 {
        };
        ohci1-controller@0x04200400 {
        };
        pwm0@2000c10 {
        };
        pwm1@2000c11 {
        };
        pwm2@2000c12 {
        };
        pwm3@2000c13 {
        };
        pwm4@2000c14 {
        };
        pwm5@2000c15 {
        };
        pwm6@2000c16 {
        };
        pwm7@2000c17 {
        };
        vind@5800800 {
        };
        tvd@05c00000 {
        };
        tvd0@05c01000 {
        };
        card0_boot_para@2 {
        };
        card2_boot_para@3 {
        };
        rfkill@0 {
        };
        btlpm@0 {
        };
        addr_mgt@0 {
        };
};

比如查看整个/soc/的DTS:

再比如看pwm0的设置则为:

代码语言:javascript
复制
=> fdt list /soc/pwm0
pwm0@2000c10 {
        compatible = "allwinner,sunxi-pwm0";
        reg = <0x00000000 0x02000c10 0x00000000 0x00000004>;
        reg_base = <0x02000c00>;
        pinctrl-names = "active", "sleep";
        pinctrl-0 = <0x00000056>;
        pinctrl-1 = <0x00000057>;
        status = "okay";
        phandle = <0x00000030>;
};

3.如果要修改某个节点的参数,则使用 *fdt set 节点名称 参数名称 要修改的数值* 如 *fdt set /soc/disp dev0_do_hpd <0>*

4.改好后输入 *boot* 启动设备即可。

*注:如果参数值是数字的话,要用"<>"阔起来,如:

代码语言:javascript
复制
fdt set /soc/disp/ screen0_output_type <4>

如果是字符串的话要用引号引起来,如:

代码语言:javascript
复制
dt set /soc/disp/ boot_fb0 "000000007eb4d680,780,438,20,1e00,348,17c,438,2bc"
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档