导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. embfly
    E
    • 资料
    • 关注 0
    • 粉丝 0
    • 我的积分 1275
    • 主题 8
    • 帖子 23
    • 最佳 0
    • 群组 0

    embflyLV 5

    @embfly

    1275
    积分
    0
    声望
    12
    资料浏览
    23
    帖子
    0
    粉丝
    0
    关注
    注册时间 最后登录

    embfly 取消关注 关注

    embfly 发布的最新帖子

    • 回复: 一键生成可定制的Debian rootfs,支持riscv64

      @memory 在 一键生成可定制的Debian rootfs,支持riscv64 中说:

      么做debian roo

      请问有人用了这个工具了吗?做出来无法启动呢,出现错误信息如下:
      [ 4.469869] I2C communication ERROR!
      [ 4.469901] regulator-dummy: Underflow of regulator enable count
      [ 4.480911] gt9xxnew_ts: probe of 1-0014 failed with error -1
      [ 4.490050] OF: fdt: not creating '/sys/firmware/fdt': CRC check failed
      [ 4.497539] cfg80211: Loading compiled-in X.509 certificates for regulatory database
      [ 4.508814] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
      [ 4.516332] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
      [ 4.526089] clk: Not disabling unused clocks
      [ 4.530919] ALSA device list:
      [ 4.534249] #0: audiocodec
      [ 4.537490] alloc_fd: slot 0 not NULL!
      [ 4.541767] cfg80211: failed to load regulatory.db
      [ 4.558945] EXT4-fs (mmcblk0p5): recovery complete
      [ 4.564396] EXT4-fs (mmcblk0p5): mounted filesystem with ordered data mode. Opts: (null)
      [ 4.573566] VFS: Mounted root (ext4 filesystem) on device 179:5.
      [ 4.581999] Freeing unused kernel memory: 1024K
      [ 4.600127] Kernel init done
      [ 4.603355] Run /sbin/init as init process
      [ 4.704682] Kernel panic - not syncing: Requested init /sbin/init failed (error -2).
      [ 4.713373] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.61 #2
      [ 4.720003] Hardware name: Generic DT based system
      [ 4.725394] [<c010e308>] (unwind_backtrace) from [<c010a8ac>] (show_stack+0x10/0x14)
      [ 4.734078] [<c010a8ac>] (show_stack) from [<c089698c>] (dump_stack+0x7c/0x98)
      [ 4.742177] [<c089698c>] (dump_stack) from [<c011a014>] (panic+0x104/0x3dc)
      [ 4.749986] [<c011a014>] (panic) from [<c08ab694>] (kernel_init+0x98/0x118)
      [ 4.757792] [<c08ab694>] (kernel_init) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
      [ 4.766274] Exception stack(0xde43dfb0 to 0xde43dff8)
      [ 4.771934] dfa0: 00000000 00000000 00000000 00000000
      [ 4.781099] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      [ 4.790264] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000
      [ 4.797689] CPU1: stopping
      [ 4.800722] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.4.61 #2
      [ 4.807352] Hardware name: Generic DT based system
      [ 4.812725] [<c010e308>] (unwind_backtrace) from [<c010a8ac>] (show_stack+0x10/0x14)
      [ 4.821406] [<c010a8ac>] (show_stack) from [<c089698c>] (dump_stack+0x7c/0x98)
      [ 4.829504] [<c089698c>] (dump_stack) from [<c010c6b0>] (handle_IPI+0xc0/0x168)
      [ 4.837701] [<c010c6b0>] (handle_IPI) from [<c0431a80>] (gic_handle_irq+0x70/0x78)
      [ 4.846189] [<c0431a80>] (gic_handle_irq) from [<c01021cc>] (__irq_svc+0x6c/0xa8)
      [ 4.854572] Exception stack(0xde477f80 to 0xde477fc8)
      [ 4.860233] 7f80: 00000b68 deb416b4 00000000 c01153a0 00000002 de476000 c0e03e28 c0e03e68
      [ 4.869400] 7fa0: 4000406a 410fc075 00000000 00000000 00000000 de477fd0 c0107fb8 c0107fbc
      [ 4.878563] 7fc0: 60000113 ffffffff
      [ 4.882476] [<c01021cc>] (__irq_svc) from [<c0107fbc>] (arch_cpu_idle+0x2c/0x38)
      [ 4.890770] [<c0107fbc>] (arch_cpu_idle) from [<c013fae8>] (do_idle+0xb8/0x120)
      [ 4.898965] [<c013fae8>] (do_idle) from [<c013fdec>] (cpu_startup_entry+0x18/0x1c)
      [ 4.907452] [<c013fdec>] (cpu_startup_entry) from [<40102c0c>] (0x40102c0c)
      [ 4.915269] ---[ end Kernel panic - not syncing: Requested init /sbin/init failed (error -2). ]---

      发布在 MR Series
      E
      embfly
    • T113使用gt911竖屏(longan SDK),触摸坐标不对!

      大家有谁用过T113 longan系统,使用电容式触摸gt911的吗?
      我这边用的是竖屏,不是横屏,请问配置dts有什么特别的要求吗?
      目前使用的是800x1280分辨率的屏,发现坐标不对!dts如下:

      	ctp@14 {
      		compatible = "allwinner,goodix";
      		device_type = "ctp";
      		reg = <0x14>;
      		status = "okay";
      		ctp_name = "gt9xxnew_ts";
      		ctp_twi_id = <0x2>;
      		ctp_twi_addr = <0x14>;
      		/*mipi 800x1280*/
      		ctp_screen_max_x = <0x320>;/*Set according to screen parameters*/
      		ctp_screen_max_y = <0x500>;/*Set according to screen parameters*/
      		ctp_revert_x_flag = <0x0>;
      		ctp_revert_y_flag = <0x0>;
      		ctp_exchange_x_y_flag = <0x0>;
      		ctp_int_port = <&pio PE 16 GPIO_ACTIVE_HIGH>;
      		ctp_wakeup = <&pio PE 17 GPIO_ACTIVE_HIGH>;
      		/*ctp-supply = <&reg_aldo2>;*/
      		/*ctp_power_ldo = <&reg_aldo2>;*/
      		/*ctp_power_ldo_vol = <3300>;*/
      	};
      

      我是用QT做的测试程序,qt程序启动时候的脚本配置是:

      export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
      		export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event$TouchDeviceNum
      

      就是QT下获得坐标不对,而TSLIB进行校验,反而可以进行校正和工作。

      发布在 T Series
      E
      embfly
    • T527和A527的区别?pin对pin兼容吗?

      各位朋友,A527和T527是pin to pin兼容的吗?
      我查了官方原理,PMIC一个是AX717B,一个是使用AX717C

      发布在 T Series
      E
      embfly
    • T527关于AHD摄像头的咨询

      各位专业的T527开发的朋友,请问在android下,T527支持多少路摄像头?另外,T527满载的情况下,发热怎么样?坛子的朋友给说说

      发布在 T Series
      E
      embfly
    • 弱弱的问一句,T527是正式量产了吗?

      弱弱的问一句,T527是正式量产了吗?
      跑起来效果怎么样?速度可以达到1.8GHZ?

      发布在 T Series
      E
      embfly
    • 回复: T113的Tina 使用udev自动挂载U盘 就是挂载不上去

      您好,这个问题我也遇到了,我遇到的问题是udevd服务无法开启,既然这个服务都无法开启,那么肯定是不能实现自动挂载u盘的。

      发布在 其它全志芯片讨论区
      E
      embfly
    • t113-i板子编译openwrt,打包rootfs.img但是文件不全

      最近我们再编译tina 5.0中的openwrt系统(t113-i平台),发现了十分奇怪的问题。这个问题是:
      我们已经把openwrt中的某些组件选好,同时也编译出来了,这个组件在生成rootfs.img之前的rootfs目录下都是可以看到这些组件,是正常的,
      但是生成了rootfs.img后,再通过pack指令打包烧写到板子上去,发现这个组件(好几个库都不见了)

      同时,把这个生成的rootfs.img挂载到系统中,好几个库也是一样不见了。

      忘记说了,用的是spi nand启动,然后用的是squashfs文件系统。

      发布在 其它全志芯片讨论区
      E
      embfly
    • 全志T507核心板如何匹配您的应用主板-盈鹏飞嵌入式

      CoM-T507L核心板.png
      产品特性
      采用Allwinner公司Cortex-A53四核T507车规级处理器,运行最高速度为1.5GHZ;
      支持Mali-G31 MP2 GPU,支持OpenGL ES 3.2/2.0/1.0, Valkan 1.1,OpenCL 2.0
      支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;
      多格式4K/60fps视频解码 (H.265,H.264,VC-1, MPEG-1/2/4, VP8) ;
      支持双屏异显;支持RGB565/LVDS(未把RGB信号全部引出),分辨率最高1920x1080/60fps;支持HDMI 2.0A, 分辨率最高4K/60fps;支持TV CVBS OUT(NTSC/PAL);
      支持1-4G Bytes LPDDR4 SDRAM;支持EMMC 4G-64G大容量电子盘,可启动;
      支持SDIO3.0,USB2.0 HOST&OTG,6路I2C,6路UART,1路SPI,6路PWM,支持双路以太网,一路10/100M;一路10/100/1000M;
      稳定的操作系统的支持,可预装Android10.0或者LINUX 4.9/Ubuntu 20.04
      邮票孔174POS设计, 尺寸为:52.5*45MM

      AHD_T507L接口标示图修.png

      1、如何适配您的硬件平台

      为了适配用户新的硬件平台,首先需要了解盈鹏飞的AHD-T507开发板提供了哪些资源,具体的信息可以查看《AHD-T507 SDK1.0.0 发布说明》。除此之外用户还需要对CPU的芯片手册,以及COM-T507核心板的产品手册,管脚定义有比较详细的了解,以便于根据实际的功能对这些管脚进行正确的配置和使用。
      1.1、CoM-T507核心模块电源的供给

      一个核心模块产品,最关键的是电源供给的设计,特别是高端平台,为了实现电源的有效供应,并不是所有电源都同时输出的,而是有需要的时候才输出。同时,当系统进入休眠状态或者关机状态时,各个电源状态也不尽相同,需要用户根据实际用户得当配置。以下先介绍下核心模块上PMIC-AXP853各路电源是如何分配的,具体分配见下表:
      9d50b3fc-b721-40a8-8be5-6d475e7f389d-image.png

      1.2、如何配置您的sys_config.fex
      sys_config.fex是全志对T5定义的一套功能配置文件,此文件可用于定义各个节点的管脚,属性,电源等,使用户可快速配置资源的功能。为了让用户掌握sys_config.fex配置和使用方法。本章将讲解使用方法
      sys_config.fex 文件路径:
      PC$: device/config/chips/t507/configs/xxx/sys_config.fex (xxx 代表不同的配置)
      定义属性类方式:
      [product]
      version = "100" machine = "demo2"
      [platform]
      eraseflag = 1
      debug_mode = 0
      ;----------------------------------------------------------------------------------
      ;[target] system bootup configuration
      ;boot_clock = CPU boot frequency, Unit: MHz
      ;storage_type = boot medium, 0-nand, 1-card0, 2-card2, -1(defualt)auto scan
      ;advert_enable = 0-close advert logo 1-open advert logo (只有多核启动下有效)
      ;----------------------------------------------------------------------------------
      [target]
      boot_clock = 1008
      storage_type = -1
      advert_enable = 0
      burn_key = 1
      定义管脚类方式:
      [card0_boot_para]
      card_ctrl = 0
      card_high_speed = 1
      card_line = 4
      sdc_d1 = port:PF0<2><1><3><default>
      sdc_d0 = port:PF1<2><1><3><default>
      sdc_clk = port:PF2<2><1><3><default>
      sdc_cmd = port:PF3<2><1><3><default>
      sdc_d3 = port:PF4<2><1><3><default>
      sdc_d2 = port:PF5<2><1><3><default>
      ;sdc_type = "tm1"

      1.2.1、启动时PMIC电源的配置
      客户调试时重点需要知道PMIC-AXP853的配置,因为这个配置涉及到u-boot阶段电源的开关,比如说:你如果要开背光的话,那么使能背光的GPIO必须是有供电的,否则GPIO无法正常工作。T507不是启动后全部电源都要工作,有些电源是需要时才工作。例如:PE组GPIO,我们使用它接口了TP9930,这组GPIO在u-boot阶段可不工作;
      ;----------------------------------------------------------------------------------
      ; system configuration
      ; ?
      ;dcdc1_vol ---set dcdc1 voltage,mV,1500-3400,100mV/step
      ;dcdc2_vol ---set dcdc2 voltage,mV,500-1200,10mV/step
      ; 1220-1540,20mV/step
      ;dcdc3_vol ---set dcdc3 voltage,mV,500-1200,10mV/step
      ; 1220-1540,20mV/step
      ;dcdc4_vol ---set dcdc4 voltage,mV,500-1200,10mV/step
      ; 1220-1540,20mV/step
      ;dcdc5_vol ---set dcdc5 voltage,mV,800-1120,10mV/step
      ; 1240-1840,20mV/step
      ;dcdc6_vol ---set dcdc6 voltage,mV,500-3400,100mV/step
      ;aldo1_vol ---set aldo1 voltage,mV,700-3300,100mV/step
      ;aldo2_vol ---set aldo2 voltage,mV,700-3300,100mV/step
      ;aldo3_vol ---set aldo3 voltage,mV,700-3300,100mV/step
      ;aldo4_vol ---set aldo4 voltage,mV,700-3300,100mV/step
      ;aldo5_vol ---set aldo5 voltage,mV,700-3300,100mV/step
      ;bldo1_vol ---set bldo1 voltage,mV,700-3300,100mV/step
      ;bldo2_vol ---set bldo2 voltage,mV,700-3300,100mV/step
      ;bldo3_vol ---set bldo3 voltage,mV,700-3300,100mV/step
      ;bldo4_vol ---set bldo4 voltage,mV,700-3300,100mV/step
      ;bldo5_vol ---set bldo5 voltage,mV,700-3300,100mV/step
      ;cldo1_vol ---set cldo1 voltage,mV,700-3300,100mV/step
      ;cldo4_vol ---set cldo4 voltage,mV,700-4200,100mV/step
      ;----------------------------------------------------------------------------------
      [power_sply]
      dcdc1_vol = 1003300
      dcdc2_vol = 1001000
      dcdc4_vol = 1000900
      aldo1_vol = 1001800
      aldo2_vol = 1001800
      aldo4_vol = 1001800
      aldo5_vol = 3300
      bldo1_vol = 1001800
      bldo2_vol = 3300
      bldo3_vol = 1003300
      bldo4_vol = 1001200
      bldo5_vol = 1001200
      cldo1_vol = 1003300
      cldo2_vol = 3300
      cldo3_vol = 3300
      cldo4_vol = 1001800
      dc1sw_vol = 1003300

      以[power_sply]
      dcdc1_vol = 1003300

      作为范例进行解释:PMIC-AXP853一有6路DCDC,其中第一路是DCDC1,1003300表示的是该路电源输出3.3V(“3300”表示这个含义,如果是1.8V,那么是1800),启动开始输出(第一字符“1”的含义);
      同样道理cldo2的解释如下:
      cldo2_vol = 3300
      “3300”表示的是该路电源输出3.3V(3300表示这个含义),启动后不输出;那么说,这个电源什么时候输出呢?答案是:是在需要它的时候才输出。经过原理图确认,该电源是输出到了CoM-T507核心板上41脚(VCC-WIFI-IO),该电源在核心模块上供应给PG组IO,该组IO一般作为SDIO WIFI的接口,所以你在涉及到SDIO WIFI的dts(t507-board-com.dts中)上可以看到该电源的使用,见下面的dts:
      (wlan_io_regulator = "axp858-cldo2表示对cldo2的调用):
      wlan:wlan {
      compatible = "allwinner,sunxi-wlan";
      clocks = <&clk_losc_out>;
      pinctrl-0 = <&clk_losc_pins_a>;
      pinctrl-names = "default";
      wlan_busnum = <0x1>;
      wlan_power = "axp858-dcdc1";
      wlan_io_regulator = "axp858-cldo2";/checked by EMBFLY/ /wlan_regon = <&pio PC 3 1 2 0 1>;PC Port vol-level=1.8v,checked by EMBFLY/
      wlan_regon = <&pio PC 3 1 0xffffffff 0xffffffff 0>;/PC Port vol-level=3.3v,checked by EMBFLY/
      wlan_hostwake = <&pio PH 10 6 0xffffffff 0xffffffff 0>;/checked by EMBFLY/
      chip_en;
      power_en;
      status = "okay";
      };
      Note:在dts中也有电源的设置,但是电源电压的配置是sys_config.fex配置的。

      2.2.2、启动的EMMC相关参数配置

      Sys_config.fex中有EMMC相关参数需要配置,主要是控制启动阶段EMMC的读写速度。为了让系统启动时间更加短,工程师需要让EMMC的读写达到最大性能。但是有的时候为了满足其他功能的需求,工程师也不得不做出取舍,做出兼顾的抉择。以下是EMMC在sys_config.fex里面的配置:
      [card2_boot_para]
      card_ctrl = 2
      card_high_speed = 1
      card_line = 8
      sdc_clk = port:PC5<3><1><3><default>
      sdc_cmd = port:PC6<3><1><3><default>
      sdc_d0 = port:PC10<3><1><3><default>
      sdc_d1 = port:PC13<3><1><3><default>
      sdc_d2 = port:PC15<3><1><3><default>
      sdc_d3 = port:PC8<3><1><3><default>
      sdc_d4 = port:PC9<3><1><3><default>
      sdc_d5 = port:PC11<3><1><3><default>
      sdc_d6 = port:PC14<3><1><3><default>
      sdc_d7 = port:PC16<3><1><3><default>
      sdc_emmc_rst = port:PC1<3><1><3><default>
      sdc_ds = port:PC0<3><1><3><default>
      sdc_ex_dly_used = 2
      sdc_io_1v8 = 0
      ;sdc_type = "tm4"
      这里涉及到启动时EMMC io口的电压和EMMC的通信速度等配置。其他的配置需要改动的少,重点说明下sdc_io_1v8这个参数的配置;这个参数决定了EMMC芯片的io电平,同时也决定了EMMC的读写速度。设置sdc_io_1v8=0,表示EMMC的io电平是3.3V;设置sdc_io_1v8=1,表示EMMC的io电平是1.8V;根据CoM-T507的硬件设计,EMMC的IO供电主要是由AXP853-ALDO1供应,该LDO也供应了PC组IO口的电源。PC组的IO除了接口EMMC外,还有部分PC口的IO连接到核心板(PC3/PC4/PC7/PC12,具体见底板参考原理图),供给客户使用。所以,如果客户想把这些IO做3.3V的IO用,那么必须让ALDO1输出3.3V;而EMMC的本处配置必须是sdc_io_1v8=0。
      说明:由于全志资料需获得相关的授权,以上两类的配置定义详细含义请联系盈鹏飞的技术支持获取文档《T507_sys_config.fex 使用配置说明.pdf》

      1.3、如何创建您的设备树
      1.3.1、板载设备树
      用户可以在BSP源码里创建自己的设备树,一般情况下不需要修改Bootloader部分
      中的代码。用户只需要根据实际的硬件资源对Linux内核设备树进行适当的调整即可。在此将AHD-T507的BSP各个部分中的设备树列表罗列出来,方便用户开发参考,具体内容如下表所示:
      表6-1.AHD-T507设备树列表
      bd2c86ed-d95c-48e3-bbcd-910470e9af4e-image.png

      注:以上文件路径如下:
      sys_config.fex文件在SDK/device/config/chips/t507/configs/demo2.0/ (SDK代表SDK代码位置)
      Dts相关文件在SDK/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/

      1.3.2、设备树的添加
      Linux内核设备树是一种数据结构,它通过特有的语法格式描述片上片外的设备信息。由BootLoader传递给kernel,kernel进行解析后形成和驱动程序关联的dev结构供驱动代码使用。

      在内核源码下arch/arm64/boot/dts下可以看到大量的平台设备树。如适合AHD-T507的设备树,可在当前路径下增加自定义设备树,如:
      // Path:SDK/kernel/arch/arm64/boot/dts/sunxi //SDK表示你SDK代码的存放目录

      我们将COM-T507核心板相关的资源编写进sun50iw9p1-com.dtsi以及t507-board-com.dts和com-x507.dts。其它扩展的接口和设备可以对它们进行引用即可,如下所示(仅供参考):
      #include "t507-board-com.dts"
      //#include "rn6854m.dtsi"
      #include "tp9930.dtsi"

      //#include "lcd-lvds-7-1024-600.dtsi"
      // #include "lcd-lvds-21-1920-1080.dtsi"
      // #include "lcd-lvds-10.1-1024-600-st.dtsi"
      #include "lcd-hdmi-1080p60.dtsi"
      /{
      model = "com-t507";
      compatible = "allwinner,t507", "arm,sun50iw9p1";

      关于AHD RX驱动的支持:该示例dts的的内容是com-x507.dts,其中包括了tp9930.dtsi的支持,也包括了lcd-hdmi-1080p60.dtsi的支持;如果仅要支持rn6854m的RX,那么请把tp9930.dtsi这个包含注释掉,仅包含rm6854m.dtsi即可。如果需要同时支持那么请包含tp9930_rn6854m.dtsi;
      关于HDMI或者LVDS的支持:HDMI和LVDS是两个功能,buildroot linux仅支持一个显示,所以,当您是buildroot Linux的时候,请包含HDMI或者LVDS的单独一个文件即可。比如上面示例中包含了lcd-hdmi-1080p60.dtsi文件。

      1.4、设备树中电源PMIC的管理
      一个高端的核心模块产品使用过程中,PMIC的软件配置非常重要。配置不合适时,最严重的情况是烧毁处理器。为了有效的降低功耗,PMIC中的各路电源不一定是输出的,而是有需要的时候才输出。另外,当系统进入休眠状态或者关机状态时,各个电源状态也不尽相同,需要用户根据实际用户得当配置。以下通过T507平台的某一个特定功能(SDIO WIFI)介绍下DTS中PMIC的配置。

      1.4.1、SDIO wifi 模块的硬件原理
      要进行SDIO WIFI模块的DTS配置,我们首先要知道SDIO WIFI和PMIC以及处理器的联系,也就是硬件原理。AHD-T507采用的是RTL8723DS这个SDIO模块,原理如下:

      384208cd-edfa-4cd8-b540-8c2bab43a512-image.png

      我们可以看到wifi模块VW1的电源分为两路,一路是VBAT,这路电源供给是由VCC-3V3供应的,该电源来自于AXP853的DCDC1;另外一路是VDDIO,这路电源是由VCC-WIIF-IO,该电源来自于AXP853的CLDO2。除了电源外,我们也看到WIFI模块是通过PC4/PC3等几个GPIO来控制的。为了达到电平的匹配(WIFI模块的IO的电平和CPU供应的电平要一致,否则将逻辑错误),必须保证处理器PC组GPIO的供电电源要和WIFI模块的VDDIO电源一致。根据原理图查证得知,处理器的PC组的GPIO是由PMIC-ALDO1供电,WIFI模块的VDDIO供电电压由CLDO2供电,因此 CLDO2的输出电压要和ALDO1的输出电压一致;以下先查看DTS中涉及到的CLDO2和ALDO1的配置,另外,也要查看SDIO WIFI的DTS配置。

      1.4.2、PMIC和SDIO WIFI电源部分的dts

      a)以下是DTS中CLDO2和ALDO1配置
      pmu0: pmu@36{
      compatible = "x-powers,axp858";
      reg = <0x36>;
      interrupt-parent = <&nmi_intc>;
      interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
      interrupt-controller;
      #interrupt-cells = <1>;

      	wakeup-source;
      
      	powerkey0: powerkey@0{
      		status = "okay";
      		compatible = "x-powers,axp2101-pek";
      		pmu_powkey_off_time = <6000>;
      		pmu_powkey_off_func = <0>;
      		pmu_powkey_off_en = <1>;
      		pmu_powkey_long_time = <1500>;
      		pmu_powkey_on_time = <1000>;
      		wakeup_rising;
      		wakeup_falling;
      	};
      

      regulator0: regulators{
      reg_dcdc1: dcdc1 {
      regulator-name = "axp858-dcdc1";
      regulator-min-microvolt = <1500000>;
      regulator-max-microvolt = <3400000>;
      regulator-step-delay-us = <25>;
      regulator-final-delay-us = <50>;
      regulator-always-on;
      };
      reg_aldo1: aldo1 {
      regulator-name = "axp858-aldo1";
      regulator-min-microvolt = <700000>;
      regulator-max-microvolt = <3300000>;
      regulator-step-delay-us = <25>;
      regulator-final-delay-us = <50>;
      regulator-always-on;
      };
      reg_cldo2: cldo2 {
      regulator-name = "axp858-cldo2";
      regulator-min-microvolt = <700000>;
      regulator-max-microvolt = <3v300000>;
      regulator-step-delay-us = <25>;
      regulator-final-delay-us = <50>;
      regulator-always-on;
      };

      从以上PMIC的DTS中,我们可以看到,每个电源都是有一个regulator-always-on的参数配置,这个表示该电源在内核启动后(这里需要强调的是内核启动后,而不是处于一开始的BOOT阶段),该电源一直打开。那么在BOOT(U-BOOT)阶段,这个电源是否开呢?这个由6.2章节的sys_config.fex的配置来决定。

      另外,我们还分别看到了这两个参数regulator-min-microvolt/regulator-max-microvolt,而这两个参数其实并不相等。regulator-min-microvolt = <700000>;这个参数表示的是该LDO输出的最小电压是0.7V,regulator-max-microvolt = <3v300000>;这个参数表示的是该LDO输出的最大电压是3.3V。那么具体该LDO输出的电压是多少呢?
      这个电压的输出取决于sys_config.fex的配置。如果sys_config.fex中设定该LDO的电压是1.8V,那么该LDO输出的就是1.8V;

      如何决定电源的工作状态,这个取决于你的想要的工况。如果缺少regulator-always-on参数,那么LDO会有什么表现呢?
      先提供结论:
      结论1:缺少regulator-always-on参数,这路电源假如有特定驱动调用,那么特定驱动会对该电源进行控制,比如下面SDIO wifi的DTS中配置了两个参数
      wlan_power = "axp858-dcdc1";
      wlan_io_regulator = "axp858-cldo2";
      结论2:缺少regulator-always-on参数,这路电源假如没有驱动调用,那么该电源会关闭;关闭后,该电源供电的IO将不工作,这个调试的时候要特别注意。

      结论3:如果处理器某组GPIO要接收中断,那么这组电源必须一致开着,如果不开,那么该组IO就无法接受中断了。比如:我们本处使用了PC组的GPIO接受WIFI的中断,那么给PC组供电的ALDO1必须有regulator-always-on配置,保持电源一直供应;

      b)以下是DTS中SDIO WIFI配置
      wlan:wlan {
      compatible = "allwinner,sunxi-wlan";
      clocks = <&clk_losc_out>;
      pinctrl-0 = <&clk_losc_pins_a>;
      pinctrl-names = "default";
      wlan_busnum = <0x1>;
      wlan_power = "axp858-dcdc1";
      wlan_io_regulator = "axp858-cldo2";
      wlan_regon = <&pio PC 4 1 2 0 1>;
      wlan_hostwake = <&pio PC 2 6 0xffffffff 0xffffffff 0>;
      chip_en;
      power_en;
      status = "okay";
      };
      在以上SDIO WIFI的DTS中,我们看到如下两个参数,一个是wlan_power,一个是wlan_io_regulator。wlan_power实际上是WIFI模块的供电VBAT,而这个电源来自于 PMIC的DCDC1。wlan_io_regulator实际上是WIFI模块的供电的VDDIO,而这个电源来自于PMIC的CLDO2.
      wlan_power = "axp858-dcdc1";
      wlan_io_regulator = "axp858-cldo2";

      wifi模块的驱动中,会对这两个电源进行控制(具体如何控制,要看实际的驱动代码),假如这两个电源你不需要驱动进行控制,而是一直保持开着的状态(电源的dts中有regulator-always-on参数),那么你可以配置如下:
      wlan_power;
      wlan_io_regulator;

      以上把DTS中电源的配置进行了简单的介绍,不详或者错漏之处在所难免,如果发现问题,欢迎交流!

      1.5、如何根据您的硬件配置CPU功能管脚
      实现一个功能引脚的控制是一个较为复杂的系统开发过程之一,其中包含了引脚的配置,驱动的开发,应用的实现等等步骤,本节不具体分析每个部分的开发过程,而是以实例来讲解功能管脚的控制实现。

      1.5.1、设备树中GPIO输入、输出、中断的配置
      GPIO: General-purpose input/output,通用的输入输出口,在嵌入式设备中是一个十
      分重要的资源,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。
      T5封装大量的外设控制器,这些外设控制器与外部设备交户一般是通过控制GPIO来实现,而将GPIO被外设控制器使用我们称为复用(Alternate Function),给它们赋予了更多复杂的功能,如用户可以通过GPIO口和外部硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。所以GPIO口的使用非常广泛。

      以下通过一个简单的SPI扩展串口的案例进行说明,这个案例中包括了gpio的输出控制和gpio的中断控制。在没有开始软件阐述之前,先明确下spi-to-uart的原理图(采用wk2204方案),原理图如下:

      a28929dc-3e36-4aa7-9677-42a9e2fe57ca-image.png

      通过原理图可以确认的知道,WK2204的中断信号是接了T5的PH9,WK2204的复位信号是接了T5处理器的PI6。首先我们要确认这两个信号是否可以满足应用?因为在T5处理器上不是所有的GPIO都支持中断。查看规格书<T5_Series_Datasheet_V1.3.pdf>,PH9的参数如下:
      64ced331-20c3-450b-9f7b-94c77900a2fa-image.png

      在dts中引用一个GPIO要按照如下格式:
      /------i/o used--------
      gpio = <&pio PH 4 1 2 0 1>;
      /
      /* i/o fun drv_lev pull val*/
      /*
      <fun>:0:input;1:output;6:int;
      <pull>:是否使用上拉,0:不上下拉,1:上拉,2:下拉
      <drv_level>:驱动能力(上下拉力度),可取值 0~3,越高驱动能越高。
      <value>:io 的初始值。
      */
      Spi-to-uart wk2204的dts如下:
      /*spi-to-uart wk2204 driver,embfly */
      spi1: spi@05011000 {
      pinctrl-0 = <&spi1_pins_a &spi1_pins_b>;
      pinctrl-1 = <&spi1_pins_c>;
      spi_slave_mode = <0>;
      status = "okay";
      /wk2204 spi to 4uart,AHD-T507 V0.1,embly,22-11-22/
      spi_uart@0{
      status = "okay";
      pinctrl-0 = <&wk2xxx_int>;
      compatible = "wkmic,wk2xxx_spi";
      reg = <0x00>;
      spi-max-frequency = <10000000>;
      rst-gpio = <&pio PI 6 1 2 1 0>;/Checked ,note by embfly/
      irq-gpio = <&pio PH 9 6 0xffffffff 0xffffffff 0>; };

      1.5.2、设备树中特定功能的gpio配置
      1).开发板LCD资源重新分配实例
      AHD-T507 开发板定义和实现的众多丰富的功能,但同时也占有了大量的管脚资源,如用户直接使用AHD-T507基础上进行设计开发,将需要对管脚进行重新定义和配置。下列就以将LCD复用管脚(LCD-D0)功能,可先查表了解管脚的复用功能。

                                           表6-3.LCD-D0管脚复用列表
      

      7b188f1e-d33e-4004-8cf8-6a9cb4ab36e3-image.png

      AHD-T507开发板已经使用PD0两个管脚作为LVDS的数据信号管脚,管脚配置如下:
      //kernel/linux-4.9/arch/arm64/boot/dts/sunxi/ sun50iw9p1-pinctrl-com.dtsi
      如下dts文件中的allwinner,muxsel = <3>;表示使用的是PD0的function3;
      allwinner,muxsel = <7>;表示使用的是关闭PD0功能;

      lvds0_pins_a: lvds0@0 {
      allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", " PD8", "PD9", "PD6", "PD7";
      allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7";
      allwinner,function = "lvds0";
      allwinner,muxsel = <3>;
      allwinner,drive = <3>;
      allwinner,pull = <0>;
      };
      lvds0_pins_b: lvds0@1 {
      allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", " PD8", "PD9", "PD6", "PD7";
      allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD8", "PD9", "PD6", "PD7";
      allwinner,function = "lvds0_suspend";
      allwinner,muxsel = <7>;
      allwinner,drive = <3>;
      allwinner,pull = <0>;
      };
      以下的代码是7寸LVDS液晶屏的dts文件,我们看到lvds0_pins_a已经被dts文件调用,PD0的配置完毕。
      //linux-4.9/arch/arm64/boot/dts/sunxi/ embfly-lcd-lvds-7-1024-600.dtsi
      . . . &lcd0 {
      lcd_used = <1>;
      lcd_driver_name = "default_lcd";
      lcd_backlight = <200>;
      lcd_if = <3>;
      lcd_x = <1024>;
      lcd_y = <600>;
      lcd_width = <150>;
      lcd_height = <94>;
      lcd_dclk_freq = <50>; // <70>
      lcd_pwm_used = <1>;
      lcd_pwm_ch = <0>;
      lcd_pwm_freq = <50000>;
      lcd_pwm_pol = <1>;
      lcd_pwm_max_limit = <255>;
      lcd_hbp = <160>;
      lcd_ht = <1324>;
      lcd_hspw = <116>;
      cd_vbp = <24>;
      lcd_vt = <629>;
      lcd_vspw = <3>;
      lcd_lvds_if = <0>;
      lcd_lvds_colordepth = <0>;
      lcd_lvds_mode = <0>;
      lcd_frm = <0>;
      lcd_hv_clk_phase = <0>;
      lcd_hv_sync_polarity= <0>;
      lcd_gamma_en = <0>;
      lcd_bright_curve_en = <0>;
      lcd_cmap_en = <0>;
      lcd_fsync_en = <0>;
      lcd_fsync_act_time = <1000>;
      lcd_fsync_dis_time = <1000>;
      lcd_fsync_pol = <0>;
      deu_mode = <0>;
      lcdgamma4iep = <22>;
      smart_color = <90>;
      lcd_pin_power = "bldo1";
      lcd_power = "dc1sw";
      //lcd_bl_en = <&pio PD 28 1 0 3 1>;
      //lcd_gpio_0 = <&pio PH 4 1 0 3 1>;

      pinctrl-0 = <&lvds0_pins_a>;
      pinctrl-1 = <&lvds0_pins_b>;

      当不使用此lcd0接口时,也可以将lcd设备树节点状态配置为禁用态“disabled”。
      &lcd0 {
      status = "disabled";
      };

      发布在 其它全志芯片讨论区
      E
      embfly
    • T507 SDK中有一个测试程序CSITEST-GPU,无法测试1080P的摄像头

      使用T507,在SDK中有一个测试程序CSITEST-GPU,这个程序测试720p的摄像头无问题,但是测试1080p的摄像头总是报错!

      感觉是无法分配内存,而且全志官方所有的说明也都是针对720p的,请问有谁用过这个测试1080p的摄像头,欢迎交流!

      发布在 其它全志芯片讨论区
      E
      embfly
    • 回复: T507的LINUX下的多屏显示,DISP2_SUNXI_MUTI_SCREEN

      @whycanservice

      我们用的就是官方下载的LINUX版本的,AUTO-SDK2.0这个版本。

      发布在 其它全志芯片讨论区
      E
      embfly