导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. q1215200171
    3. 帖子
    • 资料
    • 关注 0
    • 粉丝 36
    • 我的积分 27597
    • 主题 319
    • 帖子 512
    • 最佳 159
    • 群组 1

    q1215200171 发布的帖子

    • 【FAQ】全志V853芯片 tina+v853+audio+dvr如何实现多路mic采集和回声消除?

      1.主题

      tina+v853+audio+dvr多路mic采集和回声消除方案

      2.问题背景

      产品:
      硬件:主控 + audio +tp9930
      软件:tina + audio/ai
      其他:客户需要调试6路mic,其中2路为v853内部audio codec mic,四路为tp9930 外部i2s mic,且其中一路audio mic与lineout硬件相连,作为aec回声消除。

      3.复现步骤

      1.搭建客户硬件环境。
      2.配置tp9930音频输出,并用示波器查看bclk dout lrck波形。

      4.问题分析

      需要配置好底层音频i2s1,ai中间件声卡插件,并在app层拆分各个声道数据。

      5.解决办法

      需求分解:

      1.根据原理图配置i2s1板级配置;

      &daudio1_plat {
      tdm-num = <1>;
      tx-pin = <0>;
      rx-pin = <0>;
      pinctrl-used;
      pinctrl-names= “default”,“sleep”;
      pinctrl-0 = <&daudio1_pins_a>;
      pinctrl-1 = <&daudio1_pins_b>;
      tx-hub-en;
      rx-sync-en;
      status = “okay”; //打开i2s1声卡
      };
      
      &daudio1_mach {
      soundcard-mach,format = “i2s”; //根据tp9930的输出格式选择dsp模式或者i2s模式
      soundcard-mach,frame-master = <&daudio1_codec>;
      soundcard-mach,bitclock-master = <&daudio1_codec>;
      /* soundcard-mach,frame-inversion; /
      / soundcard-mach,bitclock-inversion; /
      soundcard-mach,slot-num = <16>; //tp9930默认配置16声道slot
      soundcard-mach,slot-width = <16>; //声道位深16bit
      status = “okay”;
      daudio1_cpu: soundcard-mach,cpu {
      sound-dai = <&daudio1_plat>; //作为从机配置配置为daudio1_plat,主机配置为daudio1_cpu
      soundcard-mach,pll-fs = <1>; / pll freq = 24.576M or 22.5792M * pll-fs /
      soundcard-mach,mclk-fs = <0>; / mclk freq = pcm rate * mclk-fs */ //不需要mclk时钟
      };
      daudio1_codec: soundcard-mach,codec { //mclk时钟源,做从机无需配置。
      };
      };
      

      2.tp9930驱动配置i2s输出, 16bit 16slot,由于是v853做从机所以无需新增codec驱动,直接在sensor驱动配置。

      static struct regval_list reg_audio_init[] = {
      {0x40, 0x40},
      
      // clear first
      {0x00, 0x00},
      {0x01, 0x00},
      {0x02, 0x00},
      {0x03, 0x00},
      
      {0x00, 0x01},
      {0x01, 0x02},
      {0x08, 0x03},
      {0x09, 0x04},
      
      {0x17, 0x00 | (DATA_BIT << 2)}, // 16bit
      {0x1B, 0x01 | (DATA_BIT << 6)},
      
      {0x18, 0x80 | (SAMPLE_RATE)},
      {0x19, 0x0F},
      
      {0x1A, 0x15},
      
      {0x37, 0x20},
      {0x38, 0x38},
      {0x3E, 0x00},
      
      {0x3d, 0x01}, // audio reset
      
      {0x40, 0x00},
      };
      
      static void tp9930_audio_dataSet(struct v4l2_subdev *sd)
      {
      sensor_write_array(sd, reg_audio_init, ARRAY_SIZE(reg_audio_init));
      }
      

      3.使用alsa原生工具测试,

      arecord -Dplug:Capture1Mic:8000 /tmp/1.wav -f S16_LE -c 16 -r 8000 -d 10 可以录到tp9930四路pcm数据

      使用sdk demo 发现无声音,经排查v853公版配置i2s1模式作为aec回录,自动打开回录功能,amixer cset numid=3 0 -c 1 修改控件后可以录到声音。

      因此需要关闭sdk config aec开关

      f3dfe6a361084de1a0fb9c288907a1e6.jfif

      4.声卡复合插件的配置
      在target/allwinner/v853-perf1/busybox-init-base-files/etc/asound.conf中配置复合插件如下

      复合声卡插件

      pcm.Capture1MicPlusAec {
      type route
      slave.pcm {
      type multi
      slaves {
      a {pcm Capture2MicHard channels 2} //主控两路声卡
      b {pcm CaptureI2SRX channels 4} //tp9930 4路
      }
      bindings {
      0 {slave a channel 0}
      1 {slave a channel 1}
      2 {slave b channel 0}
      3 {slave b channel 1}
      4 {slave b channel 2}
      5 {slave b channel 3}
      }
      }
      ttable.0.0 1
      ttable.1.1 1
      ttable.2.2 1
      ttable.3.3 1
      ttable.4.4 1
      ttable.5.5 1
      }
      
      tp9930四路mic
      pcm.CaptureI2SRX {
      type hooks
      slave.pcm "hw:snddaudio1,0"
      hooks.0 {
      type ctl_elems
      hook_args [
      {
      name "loopback debug"
      preserve true
      optional true
      value 0
      }
      ]
      }
      }
      
      //主控两路mic
      pcm.Capture2MicHard {
      type hooks
      slave.pcm "hw:0,0"
      hooks.0 {
      type ctl_elems
      hook_args [
      {
      name "MIC1 Switch"
      preserve true
      optional true
      value 1
      }
      {
      name "MIC2 Switch"
      preserve true
      optional true
      value 1
      }
      ]
      }
      }
      
      sampe ai conf修改如下
      
      [parameter]
      pcm_file_path = "/tmp/sample_ai_pcm.wav"
      pcm_sample_rate = 8000
      pcm_channel_cnt = 6
      pcm_bit_width = 16
      pcm_frame_size = 1024
      pcm_cap_duration = 10
      pcm_ai_gain = 100
      

      测试后可以录到6路音频

      5.aec应用层接口

      首先需要拆分audio codec mic0 的数据,位深16bit,交错模式下,一个声道两个字节,参考aec demo mic1作为近端数据,mic1为远端录音

      WebRtcAec_BufferFarend(aecmInst, far_frame, NN);//对参考声音(回声)的处理
      WebRtcAec_Process(aecmInst, near_frame, NULL, out_frame, NULL, NN,40,0);//回声消除
      

      最后可以录到out frame 回声消除后的pcm数据。

      6.aenc编码

      将拆分后的声道数据frame送到aenc chn编码输出为aac格式码流,可参考aenc_sample.c

      发布在 V Series
      q1215200171
      budbool
    • 【FAQ】全志系列芯片 如何在Tina Linux中使用脚本完成定制化升级?

      1.主题

      在Tina Linux中,如何使用脚本完成定制化升级

      2.问题背景

      硬件:全平台
      软件:Tina
      其他:支持OTA升级的平台,可实现脚本定制化升级

      3.具体表现

      在OTA升级过程中,添加定制化需求,实现控制变量升级。

      4.问题分析

      利用swupdate升级满足定制化脚本需求

      5.解决办法

      因为swupdate支持脚本,所以在升级过程中,添加能够实现定制升级的脚本即可,将带有定制升级的脚本编入策略描述文件(sw-descrition)OTA升级配置文件中(sw-subimgs),在打包ota升级包时,将脚本一起打包进ota包中。在进行下面的配置后,输入升级命令时,首先开始执行脚本中的内容,满足升级条件后,再进行升级流程。下面进行详细的步骤介绍:

      1.swupdate支持shellscript脚本,需要以下功能配置(默认选中)

      执行:make menuconfig/make ota_menuconfig
      Allwinner  --->
          <*> swupdate............................. software update for embedded system
              Swupdate Settings  --->
                  General Configuration  --->
                      [*] enable pre and postinstall scripts
              Image Handlers  --->
                  [*] shellscript
      

      2.在swupdate文件夹下创建脚本,名字随意,在脚本中写入要实现的功能。例如:目前有一个方案需要升级,但是分为A,B两种产品,对应做了不同的功能,为了防止升级混淆,可以利用脚本去控制变量升级,比如A产品方案中的env,可以添加一个变量project=a,B产品方案中的env添加一个变量project=b,那么脚本中的内容就可以判断project=a或b时,继续完成升级。env中添加内容和脚本内容举例如下:
      env中:
      437b4dfb25d84a1888090f5e7e82f323.jfif
      脚本内容如下:
      5d311321539a4651a33d32c62650894d.jfif

      3.在描述文件中添加脚本功能,在sw-description中添加以下代码:
      09a9b95225664e3c8e7b8fd5e7dcdbb2.jfif

      4.将脚本打包进ota包中,脚本名字可以任意起,我这里是preinstall_checkAB.sh。
      e547c5d447ba4368a39fb6db128e7ded.jfif

      5.重新编译主系统和recovery系统,烧录固件,打包ota包,再进行验证。

      6.验证:当校验失败时,返回值为1,会看到如下打印,不能升级。
      d58b2c9b048e4c6780f6a8ebafe08cc1.jfif
      校验成功时,返回值为0,看到如下打印,升级成功。
      1d1de11a87624a8d846a01351fd0b79b.jfif

      发布在 MR Series
      q1215200171
      budbool
    • 【FAQ】全志R128芯片 如何在FreeRTOS下对代码源文件进行快速预处理?

      1.主题

      FreeRTOS_R128_如何对代码源文件进行快速预处理

      2.问题背景

      硬件:R128
      软件:FreeRTOS

      客户在日常的开发过程中,会碰到源文件中有许多的宏或许多条件编译的代码,有时候需要快速确认多个宏展开后的内容或快速确认条件编译到底编译的是哪一部分代码。

      那么如何在现有SDK环境下对代码源文件进行快速的预处理?

      3.问题分析

      预处理思路:

      目前R128的SDK使用了修改后的kbuild构建框架(原始kbuild构建框架来自linux kernel),kbuild构建框架在编译每个源文件时会同时生成一个.xxx.o.cmd文件,

      这个文件里包含了编译此源文件时依赖的一些头文件以及编译时使用的编译命令,通过修改编译命令将编译时的-c参数修改为-E参数即可完成对源文件的预处理。

      4.解决办法

      可以手动从.xxx.o.cmd文件中拿到编译命令并修改,但这适用于要预处理的文件比较少的情况,且各个源文件的编译命令的修改过程基本相同,

      因此可以使用shell脚本自动预处理来代替人工手动预处理。
      这里提供一个generate_preprocess_file.sh脚本(脚本文件见附件),脚本使用方法为:

      ./generate_preprocess_file.sh <source file path>
      

      脚本输出的日志中最后2行会有生成的预处理文件的路径。
      注意:脚本中调用了astyle工具将生成的预处理文件进行代码格式化,请在使用前安装astyle工具,否则脚本输出日志的最后一行将会报错。

      下面具体描述下对各个核心的代码源文件进行自动预处理的步骤。

      M33核和C906核代码源文件自动预处理步骤

      1. 拷贝generate_preprocess_file.sh脚本到lichee/rtos目录,并执行命令chmod +x ./generate_preprocess_file.sh确保脚本文件有可执行权限
      2. 执行lunch_rtos选择对应方案的M33核或者C906核
      3. 执行./generate_preprocess_file.sh xxx.c命令对某个源文件进行预处理

      DSP核代码源文件自动预处理步骤

      1. 拷贝generate_preprocess_file.sh脚本到lichee/dsp目录,并执行命令chmod +x ./generate_preprocess_file.sh确保脚本文件有可执行权限
      2. 执行./generate_preprocess_file.sh xxx.c命令对某个源文件进行预处理

      脚本使用示例

      下面是对M33核代码源文件arch/arm/armv8m/sun20iw2p1/sun20i.c进行预处理的结果

      1c94af239290409aacc772f135601446.jpg

      可以看到最终生成的预处理文件有如下2个:

      build/r128s2_pro_m33/arch/arm/armv8m/sun20iw2p1/sun20i.i
      build/r128s2_pro_m33/arch/arm/armv8m/sun20iw2p1/sun20i.i.orig
      

      其中xxx.i.orig表示最原始的由编译器生成的预处理文件,xxx.i表示进行代码格式化后的预处理文件。

      用vi打开对应的预处理文件后可以看到代码中的宏以及条件编译已全部展开:

      b325d0988c65490d9a733395facaf756.jpg

      发布在 A Series
      q1215200171
      budbool
    • 【FAQ】全志R128芯片 如何在FreeRTOS中调整系统运行在hspsram上?

      1.主题

      FreeRTOS_R128_调整系统运行在hspsram上

      2.问题背景

      硬件:R128
      软件:FreeRTOS

      背景:R128的m33和c906两个核运行的系统都是默认运行在lspsram上的(低速psram,默认频率为192MHz),hspsram默认是分给dsp核使用的。如果方案不使用dsp,那么hspsram就可以留给m33或者是c906进行使用了。这里将讲述如何将hspsram的地址空间分配给m33或者c906使用。(hspsram的默认工作频率为800MHz)

      3.解决办法

      一、讲述如何取消启动dsp

      首先,选择好m33的方案,因为dsp是由m33来启动的。这里以r128 pro方案来作为演示。

      source envsetup.sh
      lunch_rtos r128s2_pro_m33
      

      然后运行mrtos_menuconfig来取消选中启动dsp。

      5f1823767d20434988d61c1c68ac4f4b.jfif 547899AF-0E5F-40c6-BDE6-2B0E7EB4C494.png

      找到该项,然后取消选中,编译r128_pro_m33方案即可。

      二、将m33和c906设置成在hspsram运行

      首先选择m33的方案

      source envsetup.sh
      lunch_rtos r128s2_pro_m33
      

      接着运行mrtos_menuconfig修改启动地址,所需要修改的配置如下图所示:

      22e90024b44c4dd6bbffd9d66b3465c0.jfif

      9F16D163-A399-407f-B1DE-E651D2515635.png

      79af6c102fee48ccb4c22b32b89ca94a.jfif

      lspsram地址空间为0x8000000~0x87fffff,hspsram地址空间为0xc000000~0xc7fffff。

      这里将所需要的修改的核的地址,将8改成c即可。如修改m33的起始地址,将0x08004000,修改成0x0c004000即可,如下图。

      e40c8db7daca4c788c7280c4c484b18a.jfif

      修改完成后,重新编译m33方案。

      三、如果需要修改c906的起始地址为hspsram,还需要重新配置c906方案

      首先选择c906的方案

      source envsetup.sh
      lunch_rtos r128s2_pro_c906
      

      接着运行mrtos_menuconfig修改c906启动地址,修改方式如下图:

      1b88866674b94f3fac86624835a24cdf.jfif 4563037fbdba46e699d8f5a1a9624aee.jfif

      然后保存配置,重新编译c906方案。

      四、最后修改配置文件

      首先,确认自己方案使用的image_header文件,运行一次打包的命令pack,从打包的log中能看出方案所选的文件,如下图:

      c7bd750bbada48b0accd848d9ff234cc.jfif

      然后通过命令

      cconfigs
      

      即可跳转到image_header的路径下:${root_dir}/board/r128s2/pro/configs

      d0ec291a76604f808c1b8ad690a781ca.jfif

      如果需要修改m33的地址,则只修改m33的即可,c906同理。如果取消启动dsp,则直接注销掉dsp的配置代码。

      最后,修改m33和c906在hspsram运行,并且取消运行dsp的image_header文件修改可如下所示:

      diff --git a/r128s2/pro/configs/image_header_xip.cfg b/r128s2/pro/configs/image_header_xip.cfg
      index 5c83ac1..fc87d06 100755
      --- a/r128s2/pro/configs/image_header_xip.cfg
      +++ b/r128s2/pro/configs/image_header_xip.cfg
      @@ -30,9 +30,9 @@
               {"id": "0xa5e05a00", "bin": "boot0_spinor.fex", "attr": "0x01", "sram_offs": "0x40b0000", "ep": "0x40b0080"},
               {"id": "0xa5e05a00", "bin": "boot0_sdcard.fex", "attr": "0x01", "sram_offs": "0x40b0000", "ep": "0x40b0080"},
               {"id": "0xa5e15a01", "bin": "freertos-gz.fex", "attr": "0x01"},
      -        {"id": "0xa5e05a01", "bin": "rtos_arm.fex", "attr": "0x01", "sram_offs": "0x8004000", "ep": "0x8004000"},
      -        {"id": "0xa5e05a01", "bin": "rtos_riscv.fex", "attr": "0x01", "sram_offs": "0x8200000", "ep": "0x8200000"},
      -           {"id": "0xa5e05a01", "bin": "rtos_dsp.fex", "attr": "0x01", "sram_offs": "0xc000000", "ep": "0xc000660"},
      +        {"id": "0xa5e05a01", "bin": "rtos_arm.fex", "attr": "0x01", "sram_offs": "0xc004000", "ep": "0xc004000"},
      +        {"id": "0xa5e05a01", "bin": "rtos_riscv.fex", "attr": "0x01", "sram_offs": "0xc200000", "ep": "0xc200000"},
      +       //    {"id": "0xa5e05a01", "bin": "rtos_dsp.fex", "attr": "0x01", "sram_offs": "0xc000000", "ep": "0xc000660"},
               {"id": "0xa5e05a01", "bin": "etf.fex", "attr": "0x01", "sram_offs": "0x4000000", "ep": "0x4000000"},
               {"id": "0xa5e05a01", "bin": "rtos_xip_rv.fex", "attr": "0x02"},
               {}
      
      发布在 A Series
      q1215200171
      budbool
    • 全志V85x硬件设计大赛作品精选第一期,快来Pick你心目中的最佳方案

      1、V853-智能交互摄像头开发板

      该参赛作品基于全志V853开发板制作的一款类似眼镜外挂的小产品,可以对场景进行辅助识别,并通过云端交互实现物联网控制,进一步实现物联网与人机交互的融合。

      开发板配置了摄像头和小屏幕接口,并外挂DDR3和EMMC,充分发挥了主控的编解码能力和边缘计算能力(NPU),是一个很有创意的边缘计算设计。

      • 方案原帖:https://bbs.elecfans.com/jishu_2318826_1_1.html

      微信图片_202303141028319.jpg

      微信图片_20230314144834.jpg

      2、V853-DouPi方案设计

      该参赛作品基于全志V853芯片设计了SCB 单板,使用了V853的音视频接口和丰富的外设接口,并外接AXP电源管理芯片。

      在SCB单板上包含了一路千兆网口、一路UART、一路MIPI CSI、一路MIPI DSI、一路USB OTG、板载WiFi/蓝牙以及15个GPIO管脚输出。

      • 方案原帖:https://bbs.elecfans.com/jishu_2321737_1_1.html

      微信图片_202303141028316.jpg

      微信图片_202303141028312.jpg

      3、V853-服务器管理及协处理卡

      该参赛作品基于全志V853芯片设计了一个服务器的管理设备,实现服务器管理及协处理卡功能,对服务器进行管理和检测,实时反馈信息,通过物联网接入网络,可以远程在线管理。

      开发板集成了1路百兆管理网口,1路UART调试功能,1路VGA显示功能,1路音频输出,1路USB功能,主板电压检测功能,1路视频检测功能,WIFI功能。

      • 方案原帖:https://bbs.elecfans.com/jishu_2320023_1_1.html

      微信图片_202303141028315.jpg

      4、V853-全功能BTB学习开发板

      该参赛作品基于全志V853芯片设计了一块开发板,分为核心板和底板两个部分,引用了V853所支持的大部分功能引脚,是名副其实的“全功能”开发板。

      核心板采用BTB设计,并板载了eMMC、DDR、AXP电源芯片,最大支持 1G DDR3 32GB eMMC存储;核心板背面采用了3x60pin排针设计,支持自贴NAND FLASH。

      底板上引出了绝大部分资源,具体包括两个百兆网口、RGB888及MIPI DSI显示接口、USB OTG、MIPI CSI摄像头、MIC、TF卡接口等其它接口。

      目前开发板功能还在验证中,验证没有问题后,会公开底板配套的原理图、尺寸图、使用文档,配套的视频以及嵌入式AI开发等所有资源。

      • 方案原帖:https://bbs.elecfans.com/jishu_2321249_1_1.html

      微信图片_20230314142113.jpg

      微信图片_202303141028317.jpg

      微信图片_20230314142102.png

      5、V853-全功能BTB学习开发板

      该参赛作品基于全志V853芯片设计了一款开发板,引出console调试串口和端子外接4G+GPS模块,并集成SD CARD,千兆以太网,百兆以太网,WiFi,音频输入输出,MIPI CSI ,MIPI DSI ,按键,LED,G-SENSOR,USB及USB HUB,引出console调试串口,ADC引脚引出,2.54端子引出一路串口,两路PWM及GPIO。

      • 方案原帖:https://bbs.elecfans.com/jishu_2322190_1_1.html

      微信图片_20230314104332.png

      开源硬件设计大赛

      本次大赛由华秋电子联合全志在线共同举办,感谢合一智联对比赛的赞助。

      资料获取

      以上参赛方案详细设计资料均可前往电子发烧友论坛-全志科技小组获取:https://bbs.elecfans.com/zhuti_1576_1.html

      发布在 V Series
      q1215200171
      budbool
    • 【FAQ】全志R128芯片 在FreeRTOS下如何查看并更改各CPU核的默认运行频率?

      1.主题

      FreeRTOS_R128_如何查看并更改各CPU核的默认运行频率

      2.问题背景

      硬件:R128
      软件:FreeRTOS

      客户在日常开发过程中,需要评估各CPU核的默认运行频率,有时候需要降低默认运行频率来降低功耗,有时候又需要提升默认运行频率来增加算力。
      那么如何从查看并更改R128上各CPU核的默认运行频率?

      3.解决办法

      查看各CPU核默认运行频率
      默认启动各个CPU核时会打印对应CPU核的运行频率,如下图所示:
      启动日志中的CPU核频率打印.jpg

      更改各CPU核默认运行频率方法
      由于R128中各CPU核的默认运行频率是M33核上的代码配置的,因此只需修改M33核的代码即可。
      具体步骤为:

      • 首先通过执行crtos命令切换到rtos代码目录,rtos代码目录路径为:lichee/rtos
      • 然后修改文件arch/arm/armv8m/sun20iw2p1/sun20i.c里设置相关时钟频率的地方

      M33核

      M33核相关时钟硬件如下图:
      M33核时钟树.jpg

      目前SDK中M33核时钟ar200a_hclk的来源为:DPLL1输出时钟经过第一个分频器输出ck1_m33时钟,然后通过第二个分频器输出sysclk钟,最后通过一个多路选择器输出ar200a_hclk。

      DPLL1输出时钟的频率已经确定为1920M,因此要修改M33核的时钟,则只需要修改这2个分频器的分频值即可。

      由于SDK中默认将第一个分频器的分频值定为5(此分频器的分频值取值范围为4-8),也即ck1_m33时钟频率为1920/5=384M,而第二个分频器的分频值取值范围为1-16,因此如果要修改的M33核时钟频率在24M到384M之间且可以被384M整除,则只需要修改第2个分频器的分频值,例如将M33核默认运行频率修改为128M,则只需修改宏AR200A_FREQ即可,如下所示:

      diff --git a/arch/arm/armv8m/sun20iw2p1/sun20i.c b/arch/arm/armv8m/sun20iw2p1/sun20i.c
      index 9b8c1cb1..c09444fc 100755
      --- a/arch/arm/armv8m/sun20iw2p1/sun20i.c
      +++ b/arch/arm/armv8m/sun20iw2p1/sun20i.c
      @@ -445,7 +445,7 @@ static void rcosc_init(void)
       #define DPLL1_FREQ     (1920000000)
       #define DPLL2_FREQ     (1920000000)
       #define DPLL3_FREQ     (1600000000)
      -#define AR200A_FREQ    ( 192000000)
      +#define AR200A_FREQ    ( 128000000)
       #define DEVICE_FREQ    ( 192000000)
       static int sys_clk_init(void)
       {
      

      若要修改的M33核时钟频率不满足上述条件,则需要同时修改函数ar200a_clk_set里设置ck1_m33时钟频率的地方,例如修改ck1_m33时钟为240M(1920/8=240M):

      diff --git a/arch/arm/armv8m/sun20iw2p1/sun20i.c b/arch/arm/armv8m/sun20iw2p1/sun20i.c
      index 9b8c1cb1..29b71137 100755
      --- a/arch/arm/armv8m/sun20iw2p1/sun20i.c
      +++ b/arch/arm/armv8m/sun20iw2p1/sun20i.c
      @@ -190,7 +190,7 @@ static int ar200a_clk_set(u32 freq)
              /*fixed 384M*/
              //sr32(CCMU_AON_BASE+0xa4,  0, 3, 0x3);
              //0x4004c4a4: 0x8080000b
      -       ret = hal_clk_set_rate(clk_ck1_m33, 384000000);
      +       ret = hal_clk_set_rate(clk_ck1_m33, 240000000);
              if (HAL_CLK_STATUS_OK != ret) {
                      ret = -1;
                      goto err2;
      

      C906核
      C906核相关时钟硬件如下图:
      C906核时钟树.jpg

      目前SDK中C906核时钟rv_sys_clk的来源为:DPLL1输出时钟经过第一个分频器输出ck1_906时钟,然后通过第二个分频器输出rv_sys_clk时钟。

      DPLL1输出时钟的频率已经确定为1920M,因此要修改C906核的时钟,则只需要修改这2个分频器的分频值即可,第一个分频器的分频值可取2、2.5、3、4、7,第二个分频器的分频值可取1、2、4、8。

      例如将C906核默认运行频率修改为320M,需要修改sun20i_boot_c906函数中2处设置频率的地方,:

      diff --git a/arch/arm/armv8m/sun20iw2p1/sun20i.c b/arch/arm/armv8m/sun20iw2p1/sun20i.c
      index 9b8c1cb1..5798657b 100755
      --- a/arch/arm/armv8m/sun20iw2p1/sun20i.c
      +++ b/arch/arm/armv8m/sun20iw2p1/sun20i.c
      @@ -596,7 +596,7 @@ int sun20i_boot_c906(void)
      
              //set clk_ck1_c906 clk to 480M
              //sr32(CCMU_AON_BASE+0xa4,  4, 3, 0x1);
      -       ret = hal_clk_set_rate(clk_ck1_c906, 480000000);
      +       ret = hal_clk_set_rate(clk_ck1_c906, 640000000);
              if (HAL_CLK_STATUS_OK != ret) {
                      ret = -1;
                      goto err2;
      @@ -632,7 +632,7 @@ int sun20i_boot_c906(void)
              //set clk_ck_c906_div to 480000000;
              //sr32(CCMU_BASE+0x064, 0, 2, 0x0);
              clk_c906_div = hal_clock_get(HAL_SUNXI_CCU, CLK_RISCV_DIV);
      -       ret = hal_clk_set_rate(clk_c906_div, 480000000);
      +       ret = hal_clk_set_rate(clk_c906_div, 320000000);
              if (HAL_CLK_STATUS_OK != ret) {
                      ret = -1;
                      goto err6;
      

      PS:由于第一个分频器无法输出320M时钟,故先配置第一个分频器输出640M的ck1_c906时钟,然后由第二个分频器再进行2分频,从而得到320M的C906核时钟。

      DSP核
      DSP核相关时钟硬件如下图:
      DSP核时钟树.jpg

      目前SDK中DSP核时钟dsp_sys_clk的来源为:DPLL3输出时钟经过第一个分频器输出ck3_hifi5时钟,然后通过第二个分频器输出dsp_sys_clk时钟。

      DPLL3输出时钟的频率已经确定为1600M,因此要修改DSP核的时钟,则只需要修改这2个分频器的分频值即可,第一个分频器的分频值可取3、4、5、6、7,第二个分频器的分频值可取1、2、4、8。

      例如将DSP核默认运行频率修改为320M,只需修改宏DSP_CORE_CLOCK_FREQ即可,:

      diff --git a/arch/arm/armv8m/sun20iw2p1/sun20i.c b/arch/arm/armv8m/sun20iw2p1/sun20i.c
      index 9b8c1cb1..97d03ad7 100755
      --- a/arch/arm/armv8m/sun20iw2p1/sun20i.c
      +++ b/arch/arm/armv8m/sun20iw2p1/sun20i.c
      @@ -703,7 +703,7 @@ err1:
      
       #if defined(CONFIG_ARCH_ARMV8M_DEFAULT_BOOT_DSP) || defined(CONFIG_COMMAND_BOOT_DSP) \
              || defined(CONFIG_PM_SUBSYS_DSP_SUPPORT)
      -#define DSP_CORE_CLOCK_FREQ (400000000)
      +#define DSP_CORE_CLOCK_FREQ (320000000)
       #define DSP_LDO_WORK_VOLT (1200) //400M@1.2V, 274M@1.1V
       int __sun20i_boot_dsp_with_start_addr(uint32_t dsp_start_addr)
       {
      

      另外目前SDK代码中第一个分频器和第二个分频都配置成了相同的频率,若第一个分频器无法直接输出想要设置的频率,则需要分别将2个分频器配置成不同的输出频率。例如将DSP核默认运行频率修改为200M,第一个分频器最低输出时钟频率为1600/7=228.57M,无法直接输出200M,因此需要先配置第一个分频器输出400M的ck3_hifi5时钟,然后由第二个分频器进行2分频从而得到200M的dsp_sys_clk时钟,主要修改如下所示:

      diff --git a/arch/arm/armv8m/sun20iw2p1/sun20i.c b/arch/arm/armv8m/sun20iw2p1/sun20i.c
      index 9b8c1cb1..53f6828a 100755
      --- a/arch/arm/armv8m/sun20iw2p1/sun20i.c
      +++ b/arch/arm/armv8m/sun20iw2p1/sun20i.c
      @@ -703,7 +703,7 @@ err1:
      
       #if defined(CONFIG_ARCH_ARMV8M_DEFAULT_BOOT_DSP) || defined(CONFIG_COMMAND_BOOT_DSP) \
              || defined(CONFIG_PM_SUBSYS_DSP_SUPPORT)
      -#define DSP_CORE_CLOCK_FREQ (400000000)
      +#define DSP_CORE_CLOCK_FREQ (200000000)
       #define DSP_LDO_WORK_VOLT (1200) //400M@1.2V, 274M@1.1V
       int __sun20i_boot_dsp_with_start_addr(uint32_t dsp_start_addr)
       {
      @@ -752,7 +752,7 @@ int __sun20i_boot_dsp_with_start_addr(uint32_t dsp_start_addr)
      
           //set clk_ck3_hifi5 clk to 400M
           //sr32(CCMU_AON_BASE+0xa8,  8, 3, 0x3);
      -    ret = hal_clk_set_rate(clk_ck3_hifi5, DSP_CORE_CLOCK_FREQ);
      +    ret = hal_clk_set_rate(clk_ck3_hifi5, 400000000);
           if (HAL_CLK_STATUS_OK != ret) {
               ret = -1;
               goto err2;
      

      修改完成后重新编译M33核固件,因为R128中各CPU核的默认运行频率是M33核上的代码配置的。
      可先执行lunch_rtos选择对应方案的M33核,然后再执行mrtos编译以及执行pack命令打包固件。

      下图是修改M33核频率为128M、C906核频率为320M、DSP核频率为320M后的效果:
      修改默认运行频率.jpg

      发布在 A Series
      q1215200171
      budbool
    • 【FAQ】全志V85x芯片 如何使用tiger lcd时lti锐化功能时程序abort?

      1.主题

      使用tiger lcd时lti锐化功能时程序abort

      2.问题背景

      产品:T113
      软件:tina5.0
      其他:使用tiger lcd调试lti参数

      3.问题描述

      3.1复现步骤

      1. m kerne_menuconfig选中按照如下方式选中pq驱动
      Device Drivers  --->
          Graphics support  --->
              Frame buffer Devices  --->
                  Video support for sunxi  --->
                      [*]   Support PQ driver
      
      1. m menuconfig按照如下方式勾选下位机软件
      Allwinner  --->
              Display  --->
                  <*> pqd.................................................................. pqd
      
      1. 编译烧录后进入控制台,输入usbdevice命令打开切换usb role后,再输入pqd运行上位机软件。
      2. 电脑端打开tiger lcd,点击open后切换到lti调试界面,调节参数后点write写入
        e20cf15b5e8b46ab8004addabb73d8ac.jfif

      3.2具体表现
      下位机程序abort退出,结果如图所示。
      3e7ad95f27f441ffbb9a2dc1126fec5f.jfif

      4.问题分析

      1. unsorted double linked list corrupted表明malloc时链表的被破坏,找不到下一个节点,该问题可能是越界写内存导致。
      2. 可以选择使用libasan进行调试,需要在Makefile中加入如下选项,
        594c1e6aa9634f5fa0889f6bf1e909cc.jfif
        并且在menuconfig按照如下方式配置
      Base system  ---> 
          [*]   Use external toolchain  ---> 
              -*- libc........................................................... C library
                  Configuration  --->
                      (./lib/ld{-*.so,-linux*.so.*} ./lib/lib{anl,c,gomp,cidn,crypt,dl,m,nsl,nss_dns,nss_files,resolv,util,ssp,asan}{-*.so,.so.*}) libc shared library files (use wildcards)
      
      1. 重新编译并将未strip过的可执行文件用adb推至/usr/bin下,重新复现问题,得到如下信息。
        22fee4598ca0491394d4a60b4babca17.jfif

      2. 可以看出问题在platform/allwinner/display/pqd/hardwares/de20x/de20x.c文件中的de20x_set_lti里。实际上这里malloc的数组是用来存储lti 11个寄存器的值
        b6d158e74f9347afb8ad71ef9726b4be.jfif 3fde3fa4f1e0476cb518530dda35f7b7.jfif

      再通过ioctl写入物理寄存器,但是malloc的长度PEAK_REG_NUM只有6,因此这里会发生写越界。同时如下代码处也要改过来
      08b4c7dc8693483a974d208bc965baf9.jfif

      5.根本原因

      寄存器数量配置错误,导致写内存越界,破坏了链表结构LTI_REG_NUM

      6.解决办法

      修改platform/allwinner/display/pqd/hardwares/de20x/de20x.c中de20x_set_lti和de20x_get_lti函数malloc的大小为LTI_REG_NUM,具体方式可参考如下补丁。

      diff --git a/hardwares/de20x/de20x.c b/hardwares/de20x/de20x.c
      index c8a1084..7aa66be 100644
      --- a/hardwares/de20x/de20x.c
      +++ b/hardwares/de20x/de20x.c
      @@ -328,7 +328,7 @@ int de20x_set_lti(const char* data, int size)
           int ret;
           UNUSED(size);
           struct lti_sharp *lti = (struct lti_sharp *)data;
      -    struct register_data* rdata = malloc(sizeof(struct register_data) * PEAK_REG_NUM);
      +    struct register_data* rdata = malloc(sizeof(struct register_data) * LTI_REG_NUM);
           get_lti_register_offset(rdata);
           ret = de20x_get_registers(rdata, LTI_REG_NUM);
           if (ret) {
      @@ -371,7 +371,7 @@ int de20x_get_lti(char* data, int size)
           int ret;
           UNUSED(size);
           struct lti_sharp *lti = (struct lti_sharp *)data;
      -    struct register_data* rdata = malloc(sizeof(struct register_data) * PEAK_REG_NUM);
      +    struct register_data* rdata = malloc(sizeof(struct register_data) * LTI_REG_NUM);
           get_lti_register_offset(rdata);
           ret = de20x_get_registers(rdata, LTI_REG_NUM);
           if (ret) {
      
      发布在 V Series
      q1215200171
      budbool
    • 【FAQ】全志V85x芯片 OTA升级失败出现"Found installer for stream recovery ubivol"以及"cannot write 16384 bytes: Operation not permitted"报错如何解决?

      1.主题

      OTA升级失败出现"Found installer for stream recovery ubivol"以及"cannot write 16384 bytes: Operation not permitted"报错

      2.问题背景

      软件:Tina

      3.问题描述

      3.1复现步骤

      1. 在服务器生成OTA升级包。
      2. 将OTA升级包推入小机端,执行升级命令。
      3. 升级失败。

      3.2具体表现

      OTA升级失败,通过命令 cat /mnt/UDISK/swupdate.log查看升级失败log,出现 “cannot write 16384 bytes: Operation not permitted” 或 “Found installer for stream recovery ubivol” 错误。

      4.问题分析

      通过两条报错可以猜测,不允许操作,不能写入,以及报ubivol等问题。

      可以在设备端确认当前介质,执行ll dev/by-name确认(例:当前为emmc介质,为mmc*,如果为nand ubi介质为ubi* 或 nand*)
      137b03d7657e480f9684c6ff726b293e.jfif

      5.根本原因

      升级包的中文件的介质与当前板子的介质不对应,不能操作分区。

      6.解决办法

      1. 对于非ubi方案,无需选中 CONFIG_SWUPDATE_CONFIG_UBIVOL选项,在打包OTA包时,命令无需使用ubi后缀。
      2. 对于ubi方案,需要选中MTD:SWUPDATE_CONFIG_MTD选项,再选中 CONFIG_SWUPDATE_CONFIG_UBIVOL 选项,在打包OTA包时,使用ubi后缀,例如:swupdate_pack_swu -ubi 或 swupdate_pack_swu -ab-ubi。
      3. 以上操作在recovery升级中,在menuconfig和ota_menuconfig中都要执行,而AB升级,在menuconfig中执行即可。
      发布在 V Series
      q1215200171
      budbool
    • 【FAQ】全志V85x芯片 如何放开快启方案的打印?

      1.主题

      如何放开快启方案的打印

      2.问题背景

      产品:v851系列快启方案
      软件:tina
      其他:特有版本信息添加自由描述 (如固件版本,复现概率,特定环境)
      为什么在boot0增加打印启动过程无法看到?

      3.复现步骤

      在brandy/brandy-2.0/spl/的代码流程中可以发现很多使用printf方式的打印未被打印出来

      4.问题分析

      快起方案为了缩短启动时间,将printf函数的打印关闭,使用printf函数无法在启动时打印,可使用以下三种方式的任意一种都可以放开打印。

      • 编写代码时将printf替换为pr_emerg。
      • 打包时,修改sys_config.fex文件中的debug_mode,置为1。
      • 启动时,在键盘中输入D,只有一瞬间的捕获键盘输入的时间,可能需要重复几次才可成功。
      发布在 V Series
      q1215200171
      budbool
    • 【FAQ】全志V85x芯片 快起方式下如何配置isp led?

      1.主题

      快起方式如何配置isp led

      2.问题背景

      产品:v853,v851系列产品
      软件:快启方案

      3.问题分析

      sunxi平台在spl支持两种配置isp led的方式

      1.通过修改源码方式

      修改spl/common/update_ispparm.c文件中的的全局变量结构体

      //spl/common/update_ispparm.c
      struct Camera_Param camera_param[] = {
      	[enum_camera0] = {
      		.sign = CAMERA1_SIGN,
      		.addr = CFG_ISPPARAM_LOAD_ADDR,
      		.adc_channel = CAMERA1_ADC_CHANNEL, //读取adc的通道
      		.gpio_info = {
      			[enum_ir_cut0] = {
      				.port = SUNXI_GPIO_D,  //port 口
      				.port_num = 18, //port pin脚
      				.mul_sel = SUNXI_GPIO_OUTPUT,  //功能配置
      				.pull = SUNXI_GPIO_PULL_DISABLE, //上拉模式
      				.drv_level  = SUNXI_GPIO_DRV_LEVEL1, //驱动模式
      				.data = OUPUT_LOW_LEVEL, //初始化数据,此处表示初始化为低电平
       ...
      			},}},}
      

      2.通过内核设备树方式

      此方式需要打开fdt的宏CFG_SUNXI_FDT=y,此种方式优先级高于方式一

      以853平台为例,增加以下节点即可

      //arch/arm/boot/dts/sun8iw21p1.dtsi
      isp_boot0_gpio:isp_boot0_gpio@0 {
          device_type = "isp_boot0_gpio";
          /* port:0x3--D  0xFF--no use
          * pin:0x5--5
          * mul_sel:0x1
          * pull:0xffffffff -- default
          * drv_level:0xffffffff
          * data:0x0
          */
          camera0_cut0 = <0x54 0x3 0x12 0x1 0x0 0x1 0x0>;
          camera0_cut1 = <0x54 0x3 0x8 0x1 0x0 0x1 0x0>;
          camera0_led = <0x54 0xFF 0xFF 0x1 0x0 0x1 0x0>;
          camera1_cut0 = <0x54 0x3 0x12 0x1 0x0 0x1 0x0>;
          camera1_cut1 = <0x54 0x3 0x8 0x1 0x0 0x1 0x0>;
          camera1_led = <0x54 0xFF 0xFF 0x1 0x0 0x1 0x0>;
      };
      
      发布在 V Series
      q1215200171
      budbool
    • 【FAQ】全志V系列芯片 在TinaLinux如何判断安全固件与rotpk.bin是否对应?

      1.主题

      TinaLinux如何判断安全固件与rotpk.bin是否对应

      2.问题背景

      客户在开发过程中,经常遇到安全固件烧录后,启动失败并不停烧录的问题。

      这个问题有可能有多种原因,最常见的一种是安全固件与烧录到开发板efuse中的rotpk不一致。

      如果可以从安全固件中提取rotpk的话,将提取的rotpk与efuse中烧录的rotpk(或一组签名密钥对中的rotpk.bin文件)对比,即可判断是否对应。

      那么如何从安全固件中提取rotpk?

      3.问题分析

      提取思路:

      安全固件中包含了各个镜像的签名证书,其中TOC1中包含了使用根密钥签名的证书。

      全志安全启动使用的证书是X509格式,通过openssl可以解析根密钥签名的证书内容,提取证书中的公钥。

      将公钥按照特定组织方式,再次计算sha256,即可获得安全固件中的根密钥公钥的hash值,即rotpk。

      4.解决办法

      这里提供一个genrotpkfromfw.sh的脚本,使用方法:

      ./genrotpkfromfw.sh <secure firmware>
      

      执行完后,会在当前目录生成rotpk_rsa.bin,并打印其中的内容。

      user@pc:$ ./getrotpkfromfw.sh tina_xxx_secure_v0.img
      Successfully get rotpk file: rotpk_rsa.bin from tina_xxx_secure_v0.img
      rotpk content:
      00000000  90 fa 80 f1 54 49 51 2a  8a 04 23 97 06 6f 5f 78  |....TIQ*..#..o_x|
      00000010  0b 6c 8f 89 21 98 e8 d1  ba a4 2e b6 ce d1 76 f3  |.l..!.........v.|
      00000020
      

      脚本内容如下:

      #!/bin/bash
      
      function help_usage()
      {
              echo "Get rotpk from secure firmware"
              echo "USAGE: $0 <secure firmware>"
      }
      
      if [ -z "$1" ]; then
              help_usage
              exit 1
      fi
      
      
      FW=$1
      TOC_STR="|sunxi-secure"
      CERT=.cert_tmp
      GENPUBKEY_RSA=key_rsa_pub.bin
      ROTPK_RSA=rotpk_rsa.bin
      
      rm -f $CERT $GENPUBKEY_RSA $ROTPK_RSA
      
      
      #############################
      # 1. get cert               #
      #############################
      toc_addr=`hexdump -C $FW | grep $TOC_STR | awk '{print strtonum("0x"$1)}'`
      cert_offset=`hexdump -s $(($toc_addr + 128)) -n 4 $FW | head -1|  awk '{print strtonum("0x"$5$4$3$2)}'`
      cert_addr=$(($toc_addr+$cert_offset))
      dd if=$FW of=$CERT bs=1 count=4k skip=$cert_addr 2> /dev/null
      
      if [ ! -f $CERT ]; then
              echo "Error: generate $CERT error"
              exit 1
      fi
      
      #############################
      # 2. get root public key    #
      #############################
      openssl x509 -modulus -in $CERT -inform der -noout | awk -F = '{print $2}' | xxd -r -ps > $GENPUBKEY_RSA
      openssl x509 -in $CERT -inform der -text -noout | grep 65537 > /dev/null
      if [ $? -eq 0 ]; then
                      echo 010001 | xxd -r -ps >> $GENPUBKEY_RSA
      else
                      echo "Error: RSA Exponent is not 65537"
                      rm -f $CERT $GENPUBKEY_RSA $ROTPK_RSA
                      exit 1
      fi
      dd if=/dev/zero of=temp.bin bs=1 count=253 > /dev/null 2>&1
      cat temp.bin | tr "\000" "\221" >> $GENPUBKEY_RSA
      rm -f temp.bin
      
      #############################
      # 3. get rotpk              #
      #############################
      # generate $ROTPK_RSA based on $GENPUBKEY_RSA
      openssl dgst -sha256 -binary -out $ROTPK_RSA $GENPUBKEY_RSA
      rm -f $CERT $GENPUBKEY_RSA
      
      echo "Successfully get rotpk file: $ROTPK_RSA from $FW"
      echo "rotpk content:"
      hexdump -C $ROTPK_RSA
      
      发布在 V Series
      q1215200171
      budbool
    • 【FAQ】全志V853芯片 Tina Linux下网络ADB内存泄露如何修复?

      1.主题

      Tina Linux 网络ADB内存泄露修复

      2.问题背景

      硬件:V853
      软件:Tina4.0 Linux-4.9
      背景:使用网络adb时,反复connect disconnect,会发生内存泄露的问题。

      3.问题描述

      3.1复现步骤

      1、首先使能网络ADB功能。

      killall adbd
      export ADB_TRANSPORT_PORT=5555
      /bin/adbd -D > /dev/null &
      

      2、连接无线网络,保持小机与测试电脑处于同一个局域网中。
      由于每款产品连接无线网络的命令不大一致,因此此处就不对网络连接进行赘述了。

      3、编写bat脚本,进行压测。

      :loop
      adb disconnect
      adb connect 192.168.0.101
      adb disconnect
      timeout /t 3
      goto :loop
      pause
      

      4、使用内存泄露工具查看内存是否泄露。

      3.2具体表现

      使用内部一款内存泄露工具观察adbd工具内存占用情况:

      行 2499: 632        504        74         /bin/adbd
      行 2539: 632        504        74         /bin/adbd
      行 2581: 632        504        74         /bin/adbd
      行 2629: 632        504        74         /bin/adbd
      行 2672: 632        504        74         /bin/adbd
      行 2711: 632        504        74         /bin/adbd
      行 2753: 632        504        74         /bin/adbd
      行 2796: 632        504        74         /bin/adbd
      行 2841: 632        504        74         /bin/adbd
      行 2881: 632        504        74         /bin/adbd
      行 2921: 632        504        74         /bin/adbd
      行 2961: 632        504        74         /bin/adbd
      行 3008: 632        504        74         /bin/adbd
      行 3047: 632        504        74         /bin/adbd
      行 3091: 632        504        74         /bin/adbd
      行 3131: 632        504        74         /bin/adbd
      行 3181: 632        504        74         /bin/adbd
      行 3221: 632        504        74         /bin/adbd
      行 3265: 632        504        74         /bin/adbd
      行 3309: 632        504        74         /bin/adbd
      行 3349: 632        504        74         /bin/adbd
      行 3399: 632        504        74         /bin/adbd
      行 3439: 632        504        74         /bin/adbd
      行 3483: 632        504        74         /bin/adbd
      行 3523: 632        504        74         /bin/adbd
      行 3574: 632        504        74         /bin/adbd
      行 3614: 632        504        74         /bin/adbd
      行 3654: 632        504        74         /bin/adbd
      行 3694: 632        636        206        /bin/adbd
      行 3740: 632        636        206        /bin/adbd
      行 3780: 632        636        206        /bin/adbd
      行 3820: 632        636        206        /bin/adbd
      行 3860: 632        636        206        /bin/adbd
      行 3900: 632        636        206        /bin/adbd
      行 3946: 632        636        206        /bin/adbd
      行 3986: 632        636        206        /bin/adbd
      行 4026: 632        636        206        /bin/adbd
      行 4066: 632        636        206        /bin/adbd
      行 4117: 632        636        202        /bin/adbd
      行 4159: 632        636        206        /bin/adbd
      行 4203: 632        636        202        /bin/adbd
      行 4245: 632        636        204        /bin/adbd
      行 4292: 632        636        206        /bin/adbd
      行 4333: 632        668        234        /bin/adbd
      

      发现确实存在内存泄露的情况。

      4.问题分析

      使能网络adb时,将命令改成:

      killall adbd
      export ADB_TRANSPORT_PORT=5555
      /bin/adbd -D &
      

      将adbd的log信息输出到控制台上,观察adbd的运行情况。

      根据log信息以及对比源码能够发现,在调用transport.c的transport_registration_func()函数时,当读到的action等于0,即退出adb时,就会free掉一些之前malloc的指针。

      ADB1.jfif

      5.根本原因

      通过在函数transport_registration_func()的free动作前后添加打印能够发现,在adb disconnect时,并没有调用到free的动作。

      再在register_socket_transport()中calloc结构体atransport前后添加打印发现,每次adb connect时,都会重新调用register_socket_transport()去注册传输所需要的资源,并且会重新申请一篇内存。

      那么就根据前后,就能知道在disconnect时有一篇内存没有释放,而后重新connect时又新申请内存,导致了内存的泄露。

      对比有线adb,在连接时会申请结构体atransport的内存,在拔出usb线时也会free掉对应的内存。

      再看回来函数transport_registration_func(),

      ADB2.jfif

      在初始化时,这里注册了一个异步事情回调函数,当接收到事件的时候,就会调用transport_registration_func()去处理事件。对于拔出USB线来说,就会对gadget进行disconnect,然后composite gadget就会通过uevent通知应用层已经断开连接了,于是adbd就能够获取到事件从而去断开连接,释放资源。

      而对于网络adb来说,暂无这种机制。所以就需要依靠在output_thread中,在通信失败后主动触发断连的操作。

      在部分SDK中,存在这么一个补丁:

      diff --git a/utils/adb/src/transport.c b/utils/adb/src/transport.c
      index 9fd6cc2..97a438b 100755
      --- a/utils/adb/src/transport.c
      +++ b/utils/adb/src/transport.c
      @@ -285,7 +285,6 @@ static void *output_thread(void *_t)
               } else {
                   D("%s: remote read failed for transport\n", t->serial);
                   put_apacket(p);
      -            break;
               }
           }
      

      补丁的作用时,当通信失败时,就会断连、释放资源。这个补丁引入是为了修复USB ADB在通信不佳的情况下,触发了通信失败然后导致了USB重新枚举。
      但是引入该补丁后,在使用网络ADB时,通信失败也不会被断连了,因此也造成了内存泄露的问题。

      6.解决办法

      基于上述情况,在output_thread中加入限制的条件。在USB ADB时,取消break,让其一直在循环当中。对于网络ADB来说,则是执行break,当发生断连时,能够及时将资源释放掉。

      修复的补丁如附件所示。

      0001-adbd-only-transport_local-can-disconnect-in-outputth.patch

      发布在 V Series
      q1215200171
      budbool
    • 回复: 基于DongshanPI-D1S开发板的《RISC-V体系结构编程与实践》学习教程来啦

      韦老师家的教程都值得一看!

      发布在 MR Series
      q1215200171
      budbool
    • 全志V85X系列芯片原理图要注意些什么?

      全志V85X (包括V853、V853S、V851S、V851SE等)是一颗面向智能视觉领域推出的新一代高性能、低功耗的处理器SOC,可广泛用于智能门锁、智能考勤门禁、网络摄像头、行车记录仪、智能台灯等智能化升级相关行业。V85X 集成ARM Cortex-A7和RISC-V E907 双CPU,内置最大 1T 算力 NPU,使用全志自研 Smart 视频引擎,最大支持5M@25fps H.265编码和5M@25fps H.264编解码,同时集成高性能 ISP 图像处理器,可为客户提供专业级图像质量。V85X 还支持 16-bit DDR3/DDR3L,满足各类产品高带宽需求;支持 4lane MIPI-CSI/DVP/MIPI-DSI/RGB 等丰富的专用视频输入输出接口,满足各类AI视觉产品需求;采用先进的22nm工艺,具有更优的功耗和更小的芯片面积。

      v853chip.png

      那么,在基于全志V85X芯片设计原理图的时候,需要注意什么呢?
      大家可以根据下面的表格进行原理图设计的自查。

      其中各条注意事项也包括“必须遵守”和“建议”两个级别。顾名思义,必须遵守就是一定要按照我们的建议设计,不然会出问题。建议级别则是可选项,最好按照我们给出的建议进行设计。

      模块 序号 检查内容 符合度
      POWER TREE 1 POWER TREE红色部分电源具有默认的电压和上电时序,SOC部分的电源分配不能调整。 必须遵守
      2 POWER TREE灰色部分电源默认上电为OFF,电源分配建议按照参考设计进行,减少软件适配工作。 建议
      3 确保LCD/TP/SENSOR/CAMERA/AHD等外设的电压与PMIC电源电压匹配。 建议
      4 确保PMIC各路电源的负载能力满足外设的需求。 必须遵守
      5 POWER TREE 页请根据实际产品进行更新 建议
      POWER(AXP2101) 1 ACIN接到AXP2101的VBUS管脚。 必须遵守
      2 PMU的DCDC电源电感选型必须满足该路电源的电流需求,PMU部分的电容按推荐设计,不要随意更改; 必须遵守
      3 PMU外围的电阻、电容参数值不能修改。1)AP-NMI 需要10K电阻上拉到RTC;2)AP-RESET不需要上拉电阻,由PMU内部集成,建议预留上拉电阻默认NC;3)PMU的I2C 无需上拉电阻,采用SOC 端IO内部上拉电阻,默认NC 方便调试;4)PWRON对地电容100nF请勿随意去掉; 必须遵守
      4 TS PIN 为外接电池NTC电阻,若电池不带NTC电阻,此PIN接10K电阻到地。 必须遵守
      5 CHGLED为OD输出,1K电阻接到PS,低电平指示灯亮; 必须遵守
      6 BLDOIN的输入源可以为PS,也可以为DCDC1,选择DCDC1时需注意BLDO1/2的输出不能超过3.0V。建议使用DCDC1,提高电源效率。 必须遵守
      7 DLDO2的输入源为DCDC4,只有使用DDR3/DDR3L电压超过1.35V时,才可作为1.2V输出(输出能力200mA) 必须遵守
      8 VDD-SYSFB必须连接到AXP2101的DCDC3。 必须遵守
      9 DCDC1的反馈作为DC1SW的输入,走线需加粗;DCDC4的反馈作为DLDO2的输入,走线需加粗; 必须遵守
      10 需要根据选择的前置摄像头和后拉AHD 芯片确定供电电压和时序以及电源合并。 必须遵守
      11 VCC-PC的电压选贴电阻必须符合FLASH部分的需求。 必须遵守
      12 VCC33-USB的电压选贴电阻根据是否有4G待机场景需求进行选择,有USB待机需求时,VCC33-USB和VDD09-USB VCC5V-USB不能关闭(具体咨询全志FAE)。 必须遵守
      13 VCC33-WIFI/VCCIO-WIFI/VCC18-WIFI的供电电压选配确认合理无误。 必须遵守
      14 评估好各路电源的工作电压和最大工作电流,并建议在各路DCDC、LDO电源上标注清楚,以便PCB layout设计走线。 建议
      15 若有其特殊待机场景或者供电需求,请列出让全志FAE确认。 必须遵守
      DRAM 1 DRAM的原理图设计必须保持与标案参考设计相同,包含其中的元件位号、阻容器件参数值等。 必须遵守
      2 DRAM的电源供电关系必须与标案参考设计相同。 必须遵守
      3 DRAM的所使用的高精度电阻必须是1%,不能随意替用。 必须遵守
      4 DRAM的物料选型必须采用DDR支持列表里面的型号。 必须遵守
      5 特别注意DRAM 封装大小是否覆盖主流DRAM颗粒大小 建议
      SOC 1 晶振部分的电路设计必须符合参考设计,串并接电阻不能删除,并联电容不能随意更改。 必须遵守
      2 选用的晶振工作温度必须符合产品设计工作温度。 建议
      3 SOC部分的电源滤波电容必须与参考设计相同,不能修改容值,也不能删减个数,需要备注靠近SOC pin放置。 必须遵守
      4 VDD-SYS的电源电压需要根据产品CPU频率和NPU频率要求确定电压,具体参数请参考硬件设计指南钟的CPU/NPU 频率电压对应表。 必须遵守
      5 VCC-RTC/VCC-PLL/AVCC等敏感电源电容靠近SOC PIN较放置 必须遵守
      6 搭配PMU AXP2101方案时,PWR-BYPASS 默认接地,不使用PMC功能 必须遵守
      7 AP-RESET、AP-NMI信号上必须接1nF下地电容。 必须遵守
      8 SOC的系统功能配置脚必须正确无误,无特殊需求可以保持与标案设计一致。 必须遵守
      9 使用内部LDOA时,注意评估供电电流不得超过50mA,超过50mA时,建议用外部LDO供电 必须遵守
      10 PC口因在启动过程中有初始化EMMC/SPI等启动介质的操作,初始化过程中IO会有高电平信号,所以不建议PC口当做指示灯、喇叭或外设供电使能等功能使用 必须遵守
      11 PF口因在启动过程中有初始化card介质的操作,初始化过程中IO会有高电平信号,所以不建议PF口当做指示灯、喇叭或外设供电使能等功能使用 必须遵守
      12 GPIO口使用时,需确保GPIO口电平匹配,若需要加上拉电阻,需保证上拉电压为其供电电压域,防止有漏电情况发生。 必须遵守
      FLASH 1 EMMC的选贴器件必须与贴片物料符合。 必须遵守
      2 EMMC的IO电压VCC-PC必须符合实际工作电压需求。 必须遵守
      3 EMMC的data信号线在SOC端的排序不同,确认信号设计与标案保持一致。 必须遵守
      4 原理图中建议增加EMMC信号线走线的阻抗要求标注说明。 建议
      5 原理图中建议标注清楚EMMC芯片的工作电压及最大工作电流。 建议
      6 EMMC的物料选型必须采用EMMC支持列表里面的型号。 必须遵守
      CARD 1 SDC0-CLK信号需串接33R电阻,并靠近AP摆放。 必须遵守
      2 SDC0所有信号都不需要外接上拉,禁止使用外部上拉。 必须遵守
      3 SD接口所有信号需挂ESD器件,若支持SD3.0高速模式,其中CLK、CMD、DATA信号的ESD器件容抗必须小于5PF。SD2.0需小于35PF。 必须遵守
      4 Card 供电开关电路请保留。 建议
      5 Card-DET信号建议串1K电阻,提高系统ESD 建议
      6 建议在原理图中标注清楚TF卡信号线的走线阻抗要求,以便PCB layout设计。 建议
      7 建议在原理图中标注清楚CARD电源的最大工作电流,以便PCB layout设计。 建议
      USB 1 USB0接口电源需接到PMU的VBUS管脚。 必须遵守
      2 USB接口必须挂ESD器件,USB D+/D-必须使用容抗小于5PF的ESD器件。 必须遵守
      3 USB-DP/DM建议预留共模电感位置 建议
      4 USB0具有OTG功能,USB-ID的设计必须参考标案原理图设计。 建议
      5 建议在原理图中标注清楚USB信号线的走线阻抗要求,以便PCB layout设计。 建议
      6 建议在原理图中标注清楚USB电源的最大工作电流,以便PCB layout设计。 建议
      WIFI/BT 1 BT的PCM、UART数据流方向必须连接正确。PCM-DOUT ---- PCM-DINPCM-DIN ---- PCM-DOUTUART-RX ---- UART-TXUART-TX ---- UART-RXUART-RTS ---- UART-CTSUART-CTS ---- UART-RTS 必须遵守
      2 WiFi/BT的中断唤醒、控制信号请按标案设计,请勿改动。 建议
      3 需确保VCC33-WIFI电源的电压与WiFi芯片的工作电压保持一致。 必须遵守
      4 WiFi的SDIO口需与PG口的电压保持一致,中断口的电压需与IO口的电压保持一致,不一致时需要加电平转换电路。 必须遵守
      5 WiFi的天线需预留π型电路,便于天线匹配调试。 必须遵守
      6 建议在原理图中标注清楚SDIO信号线的走线阻抗要求,以便PCB layout设计。 建议
      7 建议在原理图中标注清楚WiFi电源的工作电压和最大工作电流,以便PCB layout设计。 建议
      AUDIO 1 VRP、VRA2、AGND的接地点汇总成一点,必须通过0R电阻到大地。 必须遵守
      2 Audio codec所有外围电阻以及电容的参数不能修改。 必须遵守
      3 所有喇叭、LINEIN、MIC接口必须接ESD器件,且靠近座子摆放。 建议
      4 单喇叭的默认使用LINEOUTP信号。 建议
      5 MIC单端或差分配置是否正确。 必须遵守
      6 功放的使能脚必须要有下拉电阻,推荐值为100K。 必须遵守
      7 功放电源输入建议采用参考设计进行,方便后续ESD调试。 建议
      8 建议在原理图中标注清楚AUDIO部分电源的工作电压和最大工作电流,以便PCB layout设计。 建议
      RGB/MIPI-DSI 1 确保SOC端与LCD端的MIPI的信号差分对正确连接,正负不能反接,差分对之间不能调换。 必须遵守
      2 PD口RGB的信号对应关系需与mapping保持一致,不能修改。 必须遵守
      3 确保LCD的背光电路与LCD的规格匹配,反馈电路必须采用精度为1%的电阻,电流采样电阻精度必须为1%,封装满足功率需求。 必须遵守
      4 确保LCD的正负压电源与LCD的规格匹配。 必须遵守
      5 确保LCD的IO电压与SOC端的控制IO电压是否一致,若不一致,必须做电平转换处理,当前IO默认为3.3V电平。 必须遵守
      6 建议在原理图中标注清楚LCD部分电源的工作电压和最大工作电流,以便PCB layout设计。 建议
      CTP 1 CTP的I2C必须接上拉电阻,CTP与V853的IO电平必须匹配。 必须遵守
      2 使用V853的TWI1与触摸屏进行通讯,此套TWI不与其他设备通讯 必须遵守
      3 CTP的供电合理,不能存在漏电情况。 必须遵守
      GSENSOR 1 sensor的供电及IO电平匹配必须合理。 必须遵守
      2 sensor的I2C必须接上拉电阻。 必须遵守
      3 同一路I2C挂多个sensor设备时,I2C地址不能重复。 必须遵守
      4 sensor的供电和中断信号连接GPIO口需符合使用场景需求。 必须遵守
      CAMERA 1 Camera的MCLK信号必须串接33R电阻,靠近AP端摆放,减少信号反射。 必须遵守
      2 RST、STBY、CSI-SCK、CSI-SDA确保上拉到DOVDD-CSI 必须遵守
      3 CAMERA供电电源AVDD-CSI、DVDD-CSI、DOVDD-CSI在接口处必须要挂滤波电容,具体容值请参考CAMERA sensor规格书。 必须遵守
      4 AVDD-CSI为sensor内部模拟电路供电,必须独立供电,对地要加10uF电容靠近座子放置。目前推荐外挂高PSRR的LDO 供电防止低照度水纹情况。 必须遵守
      5 检查摄像头对电源是否有是否有时序要求。 必须遵守
      6 建议在原理图中标注清楚CAMERA电源的工作电压和最大工作电流,以便PCB layout设计。 建议
      KEY 1 GPADC网络的采样范围为0-1.8V,需保证任意两个按键按下时GPADC电压差必须>=0.12V。 必须遵守
      2 GPADC按键阻值建议和参考设计保持一致,采用1%的高精度电阻; 必须遵守
      3 GPADC按键不使用时,也建议保留上拉电阻到AVCC; 建议
      4 GPADC按键建议保留去抖电容和ESD器件。 建议
      5 POWER、RESET按键建议保留去抖电容和ESD器件。 建议
      6 硬件触发烧录固件的按键方式建议保留其中一种。 建议
      DEBUG 1 CUPX的UART0调试接口必须保留,RX的电阻和二极管需要保留。 必须遵守
      CONNECTOR 1 确保原理图中所有接口的线序与外设吻合一致,如LCD、TP、KEY、CAMERA等。 必须遵守
      ESD 1 CPU/DRAM/晶振等ESD敏感的关键器件,建议预留金属屏蔽罩。 建议
      2 复位信号在靠近AP端,必须保留一个对GND的滤波电容,容值固定选择1nF。 必须遵守
      3 部分与外部直连或者裸露的接口,如speaker、MIC、耳机、USB、TF、DCIN等,必须加上ESD器件 。 必须遵守
      4 所有按键必须挂ESD器件。 必须遵守
      5 TEST系统配置脚未使用的,需悬空处理,PCB不能引出桩线。 必须遵守
      6 外接容易受到ESD干扰的接口信号线上需预留串接电阻,用于ESD debug 调试;1)GPADC 按键功能或者光敏检测使用时,到主控间要串接K级电阻;2)MIC IN 输入到主控端预留串接0~5.1R电阻;3)LINE IN 输入到主控端(MIC1P/2P)增加K级分压电阻;4)USB 端口DM/DP信号串接0电阻需要保留; 必须遵守
      DRC 1 所有电气规格检查必须无ERROR,所有WARNING与QUEStiON必须逐一确认合理,不合理的问题项需要优化处理。 建议
      2 所有物理规格检查必须无ERROR,所有WARNING与QUESTION必须逐一确认合理,不合理的问题项需要优化处理。 建议
      发布在 V Series
      q1215200171
      budbool
    • 全志V85X系列芯片PCB设计注意事项

      全志V85X (包括V853、V853S、V851S、V851SE等)是一颗面向智能视觉领域推出的新一代高性能、低功耗的处理器SOC,可广泛用于智能门锁、智能考勤门禁、网络摄像头、行车记录仪、智能台灯等智能化升级相关行业。V85X 集成ARM Cortex-A7和RISC-V E907 双CPU,内置最大 1T 算力 NPU,使用全志自研 Smart 视频引擎,最大支持5M@25fps H.265编码和5M@25fps H.264编解码,同时集成高性能 ISP 图像处理器,可为客户提供专业级图像质量。V85X 还支持 16-bit DDR3/DDR3L,满足各类产品高带宽需求;支持 4lane MIPI-CSI/DVP/MIPI-DSI/RGB 等丰富的专用视频输入输出接口,满足各类AI视觉产品需求;采用先进的22nm工艺,具有更优的功耗和更小的芯片面积。

      v853chip.png

      那么,在基于全志V85X芯片设计PCB的时候,需要注意什么呢?

      大家可以根据下面的表格进行OCB设计的自查。

      其中各条注意事项也包括“必须遵守”和“建议”两个级别。顾名思义,必须遵守就是一定要按照我们的建议设计,不然会出问题。建议级别则是可选项,最好按照我们给出的建议进行设计。

      模块 序号 检查内容 符合度
      封装 1 全志提供的主控以及配套PMU和WiFi封装是否有更改 必须遵守
      布局 1 主控需远离发热源(PMU/LDO/DCDC),板子发热源需分散。 建议
      2 对温度比较敏感的器件,需远离发热源,如显示屏远离SOC和PMU。 必须遵守
      3 所有模块的CLK串接电阻(SDC0-CLK/CARD-CLK/LCD-CLK)靠近主控摆放,串阻与主控CLK连接走线距离≤300mil。 建议
      4 WiFi模组尽量靠近天线或天线接口。远离电源、DDR、LCD电路、摄像头、马达、SPEAKER等易产生干扰的模块。 建议
      SOC 1 BGA 焊盘采用十字形连接,不要与GND铜箔全连接,焊接时防止散热过快,导致虚焊。电源 ball 除外。 建议
      2 晶振尽量靠近IC摆放,使DCXO-XOUT/DCXO-XIN、X32KOUT/X32KIN走线小于600mil,减少PCB走线寄生电容,保证晶振频偏精度。 建议
      3 晶振及其走线区域的外围和相邻层,用GND屏蔽保护,禁止其它走线。 必须遵守
      4 时钟配置相关TEST 等PIN浮空处理 必须遵守
      DRAM 5 DRAM部分完全参考DRAM模板进行设计,请勿随意更改叠层;若有模板更改需求,请联系全志FAE。 必须遵守
      电源 6 所有电源走线必须满足电流大小要求; 必须遵守
      7 VDD_SYS铜箔尽量宽,宽度不小于40mil,换层过孔不少于4个。 必须遵守
      8 VDD-SYSFB 为电压反馈信号,远离板边及远离 DDR、CSI、SD、CARD 等干扰信号走线,走 Power 层沿其电源平面一起走到负载。如果与其他信号并排走,需要包地保护或 3W 间距。 必须遵守
      9 VCC_DRAM铜箔尽量宽,宽度不小于40mil,换层过孔不少于4个。 必须遵守
      10 所有电源走线必须满足电流大小要求; 必须遵守
      11 敏感电源如VCC-RTC/VCC-PLL/AVCC等电容尽量靠近SOC PIN脚放置; 建议
      12 VDD-SYS SOC 背面要放置一个10UF电容; 必须遵守
      EMMC 13 CLK和DS信号做包地处理,如果不能包地则保持3W间距。 必须遵守
      14 D0~D7、DS相对CLK等长控制≤300mil。 必须遵守
      15 CLK 串接 33R 电阻靠近主控摆放,串阻与主控 CLK 连接走线距离≤300mil。 必须遵守
      16 DS 下拉电阻靠近 EMMC 摆放。下拉电阻引入桩线长度≤200mil。 必须遵守
      17 走线阻抗50 +/-10% ohm。参考平面完整。保持2W间距。 必须遵守
      SD CARD 18 CLK做包地处理,如果不能包地则保持3W间距。 必须遵守
      19 D0~D3相对CLK等长控制<500mil。 必须遵守
      20 CLK 串接 电阻靠近主控摆放,串阻与主控 CLK 连接走线距离≤300mil。 必须遵守
      21 走线阻抗50 +/-10% ohm。参考平面完整。保持2W间距。 必须遵守
      CSI 22 PCLK的对地电容靠近主控,串联电阻靠近模组。 必须遵守
      23 MCLK的对地电容靠近模组,串联电阻靠近主控。 必须遵守
      24 Hsync的对地电容靠近主控。 必须遵守
      25 Vsync、Hsync、Data串联电阻靠近模组。 必须遵守
      26 PCLK单线包地,如果不能包地则保持3W间距。 必须遵守
      27 MIPI差分走线需要100ohm阻抗匹配,优先走线,走线尽量短,少换层。 必须遵守
      28 差分对内等长10mil,对间等长≤300mil(越小越好)。 必须遵守
      29 各差分对间用地线隔开,或保持间距≥15mil。 必须遵守
      LCD 30 LCD走线尽量满足3W原则,如不能,则至少要满足2W原则。 必须遵守
      31 LCD-CLK要做包地处理,同时要注意对包地打孔。 必须遵守
      32 LCD线的参考平面要完整。 必须遵守
      33 MIPI-DSI阻抗要求:单端50ohm,差分100ohm。 必须遵守
      34 MIPI-DSI差分对内长度差10mil内,差分对之间的长度差160mil内。 必须遵守
      35 MIPI-DSI尽量保证走线的参考平面完整。 必须遵守
      36 背光电路要求:PS,VLED+,VLED-所在的网络的线宽要在20mil以上。 必须遵守
      AUDIO 37 AVCC、VRA1、VRA2和AGND接地电容、电阻靠近主控摆放 。 必须遵守
      38 AGND铜箔宽度≥20mil,AGND接地电阻连接到GND平面的过孔≥2个。 必须遵守
      39 MICxP、MICxN,类差分走线,线宽4mil,线距4mil,包地。 必须遵守
      40 MBIAS与MICxP/MICxN并行走线,线宽10mil。包地。 必须遵守
      41 LINEINL/R每对L、R信号分别包地,线宽4mil。走线及过孔远离高速信号及时钟信号。 必须遵守
      42 LINEOUTP/N每对P、N信号分别类差分走线,线宽4mil,线距4mil,包地。 必须遵守
      USB 43 USB-5V 线宽建议控制在40mil以上。 建议
      44 USB-DM/USB-DP信号差分走线,差分阻抗为90ohm,保证走线参考层不跨分割。 必须遵守
      45 USB-DM/USB-DP建议与其它信号的间距大于10 mil,避免走线走在器件下面或者与其他信号交叉。 建议
      46 USB-DM/USB-DP走线在有空间的情况下,走线两边包地并打地过孔。 建议
      47 USB-DM/USB-DP走线拐角的角度需保证大于等于135度;保证USB走线的长度控制在4000mil以内,走线的过孔不超过2个。 建议
      WIFI 48 WIFI天线尽量远离电源、DDR、LCD电路、摄像头、马达、SPEAKER等易产生干扰的模块。 必须遵守
      49 REF-CLK给WIFI模组使用,属于敏感信号,建议内层走线,需要包地走线。串接0R电阻靠近芯片放置; 必须遵守
      50 天线馈线控制50ohm,为了增大线宽减少损耗,通常馈线相邻层挖空,隔层参考参考平面需要是完整地,同层地距离天线馈线距离保持一致,两边多打地过孔,地过孔需要回到芯片EPAD。 必须遵守
      51 模组下方尽可能的增加地过孔和铺铜面积; 必须遵守
      52 SDIO_CLK串接电阻靠近主控摆放。串阻与主控走线距离≤300mil。 必须遵守
      53 SDIO_CLK做包地处理。如果不能包地则保持3W间距。 必须遵守
      54 D0-D3相对CLK等长控制<500mil。 必须遵守
      55 走线阻抗50 +/-10% ohm。参考平面完整。保持2W间距。 必须遵守
      56 两层板时,D0-D3两两包地,CLK单线包地,线间距4mil。 必须遵守
      PMU&DCDC 57 走线粗细需满足电源电流要求; 必须遵守
      58 电压反馈线,输出电压经过电容滤波后,紧挨电容取点,用4~10mil的线引入PMIC即可。DCDC1的反馈走线给DC1SW供电,走线需要加粗。DCDC4的反馈走线给DLDO2供电,走线需要加粗。 必须遵守
      59 反馈线在TOP面与LX的平行走线尽量短,禁止平行走线,推荐换层走线,不要从电感下方、交流路径下方或者紧挨CLK之类的跳变信号; 必须遵守
      60 CPUFB/SYSFB采用远端反馈,反馈线从内层走线,避开CLK等时钟敏感信号,远离敏感信号过孔,沿其电源平面一起走到负载; 必须遵守
      61 PMU 下方需尽可能的增加地过孔,尽可能的增大铜皮面积; 必须遵守
      62 外挂DCDC走线要求如下:1)输入电容,输出电感反馈电阻尽量靠近IC放置;2)SW开关信号走线尽量短;3)从输出端到反馈电阻的反馈走线需避开SW信号;4)增加IC GND的铺铜面积和GND过孔散热; 建议
      其他 63 其他未涉及模块请参照硬件设计指南或者其他器件datasheet layout要求 建议
      ESD 1 CPU/DRAM/晶振等ESD敏感的关键器件,离外部金属接口的距离不小于20mm,如果小于20mm,建议预留金属屏蔽罩,并且距离其他板边不小于5mm。 建议
      2 关键信号(RESET/NMI/Clock等)尽量避免与外部接口信号(USB/SD/HP等)或经过IO附近的走线相邻并行走线;如果不可避免,相邻并行的走线长度不超过100mils;IO保护地下方尽量不要走线,在必须走线的情况下建议走内层。 建议
      3 部分与外部直连或者裸露的接口,如speaker、MIC、耳机、USB、TF、DCIN等,必须加上ESD器件 ,走线路径为先经过ESD器件再到SOC。 必须遵守
      4 必须保证外部连接器(USB/SD)金属外壳接地良好,在板边直接通过过孔连接GND平面,每个GND焊盘与GND平面之间的连接过孔不少于3个。 必须遵守
      5 在PCB四周增加地保护环;DDR线束四周建议用GND保护。 建议
      发布在 V Series
      q1215200171
      budbool
    • 【FAQ】全志V系列芯片如何实现mpp sample外编?

      1.主题

      V系列多媒体mpp sample外编方法

      2.问题背景

      用户希望Tina SDK 能提供编译工具链,多媒体库和头文件,使得自己编写的应用能编写Makefile 去链接多媒体库来编译生成app应用。
      介于此方法,本FAQ提供一份编译系统demo样例。 里面包含说明了:

      1. Tina SDK 如何输出多媒体库;
      2. 如何编写Makefile 去链接多媒体库;
      3. 如何将Tina SDK 里面MPP的sample 放到这里进行编译;
      4. 不需要Tina SDK 如何重新打包成全志固件;
      5. 指导如何制作SPINOR 的烧录器固件;

      3.解决办法

      请下载附件的编译系统,并放到linux 上运行。 执行./build.sh 既可以编译。每个目录下都有个REAMD说明,请查看。

      README:

      本编译系统是一个演示全志V系多媒体mpp sample 脱离Tian SDK 编译的并编译后放到rootfs下重新做固件的一个demo

      1. 本编译系统目录结构介绍

      ├── aw_pack_src #这个目录是V系列Tina SDK 编译打包后输出的目录,里面包含了库和分区文件
            ├── build.sh    #编译脚本
            ├── Makefile    #编译Makefile,可作为自己工程的参考
            ├── output      #编译后的应用和中间产物
            ├── sample      #sample 放置的目录
            ├── share_lib   #需要依赖的动态库(设备端rootfs也有)
            ├── mk_firmware #制作全志固件的脚本
            └── toolchain   #编译工具链
      

      2. 使用方法:
      ①将V系列多媒体sample 拷贝到 ./sample 目前下。阅读./sample/README了解详情;
      ②将Tina SDK 新输出的文件夹aw_pack_src 重新替换当前的./aw_pack_src()
      ③执行 ./build.sh 进行编译
      ④编译成功后。在./out 可看到 sample 和 strip 后的sample

      3. Tina SDK 如何生成新的aw_pack_src(库和头文件)来替换?

      • 选上配置
        make menuconfig --->Target Images --->[*]support pack out of tina
      • pack 打包,然后会在out/xx方案/生成一个目录:aw_pack_src,将此目录拷贝出来即可

      4. 重新替换了个sample,但编译出错怎么解决?

      • cannot find -lxx 库
        因为多媒体的库会根据make meunconfig 来配置一些功能组件。如果需要增加/裁剪功能,则编译出来可能就多或少一些库了。
        如果发现报错cannot find -lxx , 可以直接尝试修改Makefile,把这个-lxxx 去掉再编译试试。

      • undefined reference xxx: 函数
        因为多媒体的库会根据make meunconfig 来配置一些功能组件。如果需要增加/裁剪,则编译出来可能就多或少一些库了。
        如果发现报错undefined reference xxx:,则可以库目录下执行grep -rn "xxx", 看能不能搜索出一些结果是关于库的,如:

      grep -rn "AW_MPI_SYS_Init"
      
      Binary file ./aw_pack_src/lib_aw/lib/eyesee-mpp/libaw_mpp.a matches
      

      搜到AW_MPI_SYS_Init 结果在libaw_mpp.a库里面。 这时候在Makefile里面 加入-law_mpp 即可。

      如果在本目录搜不到,则可以去Tina SDK目录搜索:

      grep -rn "AW_MPI_SYS_Init" out/v851se-perf1/staging_dir/target/usr/lib   #注意v851se-perf1 是板子的名称。 这个目录下是SDK 编译出来的所有库 。
      

      附件:sample_ex_compile.tar.gz

      发布在 V Series
      q1215200171
      budbool
    • 【FAQ】全志T113芯片蓝牙音乐播放失败如何解决?

      1.主题

      T113-S3 蓝牙音乐播放失败问题

      2.问题背景

      硬件:T113 + XR829
      软件:Linux(非Tina)

      3.问题描述

      3.1复现步骤

      #驱动路径要根据固件实际路径
      insmod /lib/modules/5.4.61±ab179/xradio_btlpm.ko
      
      等驱动安装完再执行后续操作
      echo 0 > /sys/class/rfkill/rfkill0/state
      sleep 1
      echo 1 > /sys/class/rfkill/rfkill0/state
      sleep 1
      
      hciattach -n ttyS1 xradio &
      
      hciconfig hci0 up
      hciconfig hci0 piscan
      
      #启动蓝牙协议栈
      bluetoothd -n &
      
      #设定本机为播放源
      bluealsa -p a2dp-source &
      
      #进入蓝牙控制终端
      bluetoothctl
      
      #扫描周边蓝牙设备
      scan on
      #若例表中已找到设备则手动停止扫描
      scan off
      #连接蓝牙音箱
      connect <蓝牙音箱MAC>
      

      连接成功提示Device 30:21:23:6F:18:E2 Connected: yes

      #退出bluetoothctl
      exit
      
      #播放音乐aplay -D bluealsa:DEV=音箱mac 音乐文件路径
      aplay -D bluealsa:DEV=30:21:23:6F:18:E2 /a.wav &
      

      3.2具体表现

      蓝牙音乐播放失败,并且出现蓝牙设备断开现象

      4.问题分析

      1、对比R328等Tina平台,以上的验证方法没有问题,bluez 和 bluealsa版本也一致,因此判断不是操作或者版本本身的问题。
      2、由于蓝牙已经断开,查看进程情况,通过PS命令,看出Bluetoothd进程还在,但是bluealsa进程已经退出。
      3、加打印分析bluealsa退出点,经过验证是在SBC编码环节。
      4、排查SBC编码的代码,发现程序在某个点会崩溃。
      5、在网上查找相关案例,疑似与编译配置有关系。

      5.根本原因

      与SBC编译的配置有关系,在当前的编译工具链环境下,需要打开 --enable-high-precision配置

      6.解决办法

      如下修改配置:

      • 修改sbc_primitives.h
      diff --git a/sbc/sbc_primitives.h b/sbc/sbc_primitives.h
      index e01c957..b060484 100644
      --- a/sbc/sbc_primitives.h
      +++ b/sbc/sbc_primitives.h
      @@ -27,6 +27,10 @@
       #ifndef __SBC_PRIMITIVES_H
       #define __SBC_PRIMITIVES_H
      
      +#ifdef HAVE_CONFIG_H
      +#include <config.h>
      +#endif
      +
       #define SCALE_OUT_BITS 15
       #define SBC_X_BUFFER_SIZE 328
      
      • 在sbc.mk中增加
      SBC_CONF_OPTS = --enable-high-precision
      
      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 玄铁杯RISC-V大赛『三等奖』智能帘窗

      智能帘窗采用D1-H哪吒开发板为主控,D1-H哪吒与下位机各模块/传感器进行数据通信并进行数据的处理,并在最后依据处理后的数据来对风扇、电机、OLED屏幕等上位机硬件进行控制。

      5A41430C-5A76-4703-8CE5-5FE87AE1CA0A.png
      系统硬件架构

      PART01 方案及硬件

      29419E11-404A-4bbb-B393-FC83A5C897AC.png
      产品实物图

      模拟平常卧室,其可能存在的场景有:突然下雨、户外湿度过大关窗以及户外天气较好开窗通风等场景。以上相关场景需要获取许多数据从进行准确的判定,其中包括室内外温湿度,当前时间,室外是否下雨,窗户状态,窗帘状态以及户外光照强度等,下图为系统方案。

      图片11.png
      系统方案图

      本项目采用器材如下:

      • DHT11*2
      • 舵机*1
      • 普通步进电机*1
      • 雨滴传感器模块*1
      • PCF8591模块*1
      • 光纤传感器模块*1
      • OLED12864*1
      • 按键*4
      • 风扇*1

      PART02 功能描述

      首先系统上电后会显获取室内温湿度、可燃气体浓度、室外光照强度、温湿度以及是否下雨,自动关窗标识位,风扇标识位等信息(依靠”/project/”目录下的一些文件实现,例如“curtain”、“auto_window_flag”文件等),接着将读取本地存储的舵机以及步进电机的位置信息,四个按键(触控按键)分别对应窗户以及窗帘的开和关程度的控制,最后将室内外温湿度以及室外光照强度以及风扇开关状态和可燃气体浓浓度过高警告展示在OLED屏幕上。若室内可燃气体浓度超过阈值将默认打开风扇,并且此时是无法关闭的(手机APP操作),除非可燃气体浓度降低至阈值方可手动关闭风扇。

      4E938422-79AC-4a38-9C9B-5EAB988A180F.png
      OLED屏幕状态显示

      除此之外本项目还将使用本地WIFI/有线网络通过MQTT协议连接腾讯云物联网服务,用户可以查看本地状态信息并依据光照强度、室内外温湿度、下雨自动关窗户,云端/本地控制窗帘或窗户,此操作于手机APP(腾讯云提供)服务上完成。

      9F36884E-C47C-4d3d-8326-403080FC6F5B.png
      APP控制

      PART03 参赛团队

      南通大学“孤勇队” 队员:The_Qiang

      发布在 MR Series
      q1215200171
      budbool
    • 玄铁杯RISC-V大赛『二等奖』自跟随系统

      本项目实现自动跟随采用了新的设计思路,D1-H哪吒开发板负责主控的工作做,自动跟随功能由UWB模块来实现,D1-H哪吒开发板会收集蓝牙模块、GPS模块以及ADXL345模块作为下位机提供的数据消息,并反馈到GPS模块和WiFi模块上,最后交由WiFi模块通过阿里云与上位机进行通信并反馈信息到终端的APP上显示。

      图片1.png
      系统架构图

      9DDEE5A8-6075-45a1-A925-A120F831E1B3.png
      实物图

      PART01 关键性能指标

      (1)自动跟随功能,基于D1-H哪吒控制的自跟随助手,通过UWB模块,来实现自动跟随的功能。

      图片9.png

      主控板连线图

      (2)检测意外摔倒并报警的功能物联网信息传输功能,配套的手环具有检测意外跌倒并报警的功能,并且通过主体将老人的状态信息,和位置信息上传到阿里云,然后向手机实时上传,老人的状态信息和位置信息,可以通过手机APP实时进行查看,当老人站起或者系统检测跌倒信息错误时,使用者可以通过按下手环上的手持终端按键,来关闭报警声音,同时手机APP实时更新老人的状态信息和位置信息。

      图片7.png
      手环实物图

      图片6.png
      物联网信息传输功能测试

      (3)PWN助力系统通过摇杆开关,功能转换开关,进行UWB自动跟随功能和助力功能两种功能模式之间的切换,可通过助行器上的摇杆开关来控制电机向相应的方向工作运行从而实现助力功能。

      图片8.png
      PWM系统摇杆开关

      PART02 工作原理

      用于以D1-H哪吒作为主控的自跟随助手的跌倒紧急报警智能装置使用三块UWB模块,两块装在助行器机身,另外一块安置在配套的手环内。使用者将用于智慧家居的跌倒紧急报警智能装置上的两个UWB基站和UWB标签通上电并且打开开关后,UWB标签发射无线信号,安装在箱体上的两个UWB基站接收到信号后,计算出与UWB标签之间的距离及角度,单片机对距离及角度进行处理,然后单片机发出指令控制电机向相应的方向工作运行,从而实现跟随功能。

      图片3.png
      UWB模块放置图

      用于以D1-H哪吒作为主控的自跟随助手的跌倒紧急报警智能装置可以实现助力功能,以减轻使用者的负担。主要实现方法是,当使用者切换至助力模式后,助行器启用助力功能,使用者手扶着助行器行走时,可以通过助行器上的摇杆开关来调节电机的转速和工作方向,以此来实现电机转速的实时调节,从而减轻使用者的负担,达到省力的目的。以此来实现转速的实时调节。

      图片2.png
      UWB模块配合图

      PART03 参赛团队

      山东华宇工学院“实践队”

      发布在 MR Series
      q1215200171
      budbool
    • 回复: 玄铁杯RISC-V大赛『一等奖』分布式能源智慧管理和M2M交易系统

      @wmd340221 可以去平头哥的社区问问看,平头哥的奖金有5W RMB,应该是会提交完整源码的

      发布在 MR Series
      q1215200171
      budbool
    • 【开发板试用】米尔电子MYC-YT507开发板试用申请开启

      米尔电子为MYC-YT507核心板及开发板免费提供Linux,Ubuntu等多种系统a的驱动支持;并提供2.0版本MYIR MEasy HMI参考代码和丰富的开发资料。资料包含用户手册、PDF 原理图、外设驱动、BSP源码包、开发工具等。购买后提供完善的售后技术支持,米尔电子官方淘宝店开发板价格如下:

      • 1G DDR工业级版本:核心板:218RMB,底板套装:650RMB
      • 2G DDR工业级版本:核心板:248RMB,底板套装:680RMB

      MYC-YT507开发板的相关资料也已开源,开发者可以在米尔电子官网获取相关资料,全志也为广大开发者提供了MYC-YT507开发板试用申请的活动,该活动将面向开发预研、学习科研、DIY项目等方向开放试用活动

      试用申请通过邮件发送到:lizexi@allwinnertech.com

      邮件应包括以下内容:

      • 试用项目计划(申请重要依据);
      • 预计输出成果;
      • 过往项目经历;
      • 其它认为有助于申请通过的内容

      4A3DA8AA-387B-46e9-B7F6-0FFE86B7C116.png

      全志T507-H可达到车规级处理器的标准,在理论工作温度为-40℃~85℃的环境下,经过米尔电子低温运行、高温运行、高低温循环测试、低温通断电、高温通断电、低温存储、高温存储等苛刻条件下的环境测试,完全满足工业级实际应用的使用需求。

      微信图片_20221207110538.png

      T507H芯片还是符合AEC-Q100认证的一款处理器,即可以满足汽车使用的标准,可以说是进一步认证了**“车规级”**的title。国外电子爱好者网站CNX在报到时更是将该认证标准作为题目,表达了对这款抗冻车规级芯片的青睐。

      62A6301B-FA24-4a2c-A01F-606733307E1E.png

      MYC-YT507H核心板,板载全志T507-H、PMIC电源管理芯片、LPDDR4、eMMC。全志T507-H集成了四核Cortex-A53的CPU和G31MP2的GPU,拥有十分强大的图像处理功能以及多路视频输入和输出的接口,这一特点也在MYC-YT507H开发板上得以体现。T507-H还支持4K@60fps H.265解码,4K@25fps H.264编码,以及绝大部分当前比较流行的视频及图片的解码格式。

      C5957076-B794-4b61-AD34-BEDDF3C51F59.png

      MYC-YT507核心板采用邮票孔+ LGA设计,为方便开发者进行进一步的功能评估和开发预研,配套的MYD-YT507底板采用12V/2A直流供电,搭载了1路4G Mini PCIE接口、1路数字DVP摄像头输入、1路MIPI CSI、2路LVDS 显示接口(支持单/双通道)、1路HDMI、1路TV显示输出、1路耳机输出、1路SPDIF音频输出、1路千兆以太网接口、1路百兆以太网、2路USB HOST Type A、1路USB Type-C DRP、1路Micro SD、1路树莓派等外设接口。

      微信图片_20220919112344.png 微信图片_20220919112347.png

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 回复: 玄铁杯RISC-V大赛『一等奖』分布式能源智慧管理和M2M交易系统

      @wmd340221 好像开,但是gitee的仓库链接挂掉了

      发布在 MR Series
      q1215200171
      budbool
    • 玄铁杯RISC-V大赛『二等奖』沙漠树种移植车

      D1dasai二等奖.jpg

      项目演示

      项目以电能为主要能源,电池及调压模块组合实现对设备各处模块的稳定供电,摄像头模块、红外探测模块、超声波模块将信号传递给D1-H哪吒控制板,控制板将收到的现场信号传递给外置终端交互模块,人员通过外置终端交互模块将指令传递给D1-H哪吒开发板,开发板将指令进行编译并将控制信号传递给其他模块,控制其他驱动模块完成动作,以完成对车体、机械臂、水泵、摄像头云台与水泵云台的动作控制。

      图片1.png

      图片7.png

      图片8.png

      主要技术特点

      本设备应用D1-H 哪吒作为主控芯片,并通过外置终端进行远程遥控,精度高。摄像头与wifi模块对移植现场进行实时同步情景传输,通过HC-SR04测距回传,可以在终端实时显示小车与障碍物的距离,方便控制,转移时可通过红外探头实时红外追踪,可精准的检测人的位置,实现红外追踪方便车体转移。采用履带式底盘适应沙漠地形,终端可实时操控机械臂抓取树种,控制水炮装置实现可控制的灌溉,同时也可以进行后期维护工作如:喷白漆。实现了树种移植、维护场景的实时、准确的转播。设备采用电能作为主要能源,减少对不可再生能源的使用,同时在沙漠中可通过光伏板发电获取电能。

      图片2.png

      图片3.png

      图片4.png

      图片5.png

      图片6.png

      主要创新点

      (1)使用D1-H哪吒作为主控芯片,采用外置终端来进行远程遥控,实现了高精度,较低成本的控制。

      (2)利用红外探头进行红外追踪可精准的检测人的位置,实现了回收设备时的快速转移。减少了人工参与的程度。超声波测距技术的利用可以使设备在移动的过程中减少操作难度。

      (3)摄像头与wifi模块配合对移植现场进行实时同步情景传输,超声波模块精确测距的反馈保障人工判断的准确性。

      (4)可调式国标喷头与舵机相啮合的设计,便于喷头快速更换和实现一定角度内可调、定量的灌溉,通过舵机旋转的底盘更保障了旋转操控的精准度。

      参赛团队

      山东华宇工学院“鑫悦队”

      发布在 MR Series
      q1215200171
      budbool
    • 玄铁杯RISC-V大赛『一等奖』分布式能源智慧管理和M2M交易系统

      yidengjiang.jpg

      项目演示

      本项目应用物联网和区块链技术,基于 RISC-V 架构的 D1-H Dock Pro 设计开发了一套分布式能源智慧管理小型示范系统,在该系统上实现了能源生产和消费数据的实时监测,以及 M2M 自主交易。未来可以扩展更多的联网方式如 4G、5G、NBIoT 等,便于适应多样化部署环境的需求。

      6987CFE9-2112-4499-A927-9235C97434EB.png

      系统实施过程中,分布式风光储一体小型电站通过风力和太阳光生产清洁能源,并存储在储能电池中,产生的能源数据通过专用网关传输至物联网后台;当有电器负载需要充电时,打开智能开关并计量充电量,将充电数据上传至物联网后台;利用 IOTA 区块链和充电数据等信息,在能源生产端(电站) 和消费端(智能开关与负载)之间进行能源交易结算。

      • 电站实物图

      微信图片_20221214102807.png

      • 网关和智能开关实物图

      微信图片_202212141028071.png

      • 后台管理网页
        微信图片_202212141028072.png

      PART01 分布式小型电站系统

      • 搭建电站系统

      风光互补发电监测系统由风光互补充电控制器、风力发电机、太阳能电池板、储能电池、逆变器、RS458-WiFi 网关构成。电站利用太阳能和风能发电,并将电能存储在储能电池中,可以为交流和直流负载供电。

      微信图片_202212141028078.png

      • D1-H Dock Pro网关

      为了实现对电站的智能监测,项目使用 D1-H Dock Pro 开发板设计开发一款专用网关,实时采集电池控制器、气象环境传感器等其它传感器的数据,并通过无线通信方式(WiFi)以 HTTP 协议或 MQTT协议将传感器数据上传至物联网后台。

      智能硬件终端(分布式风光储一体小型电站、智能开关)产生的数据和控制信号通过 WiFi 上 传 至 物 联 网 和 区 块 链 后 台 系 统 。后 台 系 统 构 主 要 包括 MQTT Broker、REST API 服务、Web 服务和区块链服务。

      微信图片_202212141028077.png

      PART02 智能开关系统

      智能开关用于能源消费端,实现对能源消费者(电器负载)的供电控制、电能消费数据的采集和传输等功能。该智能开关基于 D1-H Dock Pro 开发板进行设计开发,通过开发板的 I/O 口控制继电器、UART 接收电能计量模块的数据。设计一个扩展电路板与开发板配合使用,扩展电路板集成电能计量模块、继电器等。本文设计的智慧开关的功能主要是控制电器开关与计量电器用电参数以及环境参数并上传到云端服务器。

      微信图片_202212141028076.png 微信图片_202212141028075.png

      PART03 M2M交易系统

      • IOTA Client的搭建

      基于 IOTA 的开源 Rust 项目 iota.rs 的 Production 版,使用Docker 在境外服务器上搭建 IOTAClient 以连接 Hornet 节点,从而连接 IOTA 网络的开发版 Devnet。当机器人发送充电请求时,通过 IOTAClient 连接 Hornet 节点,实现身份验证、账户余额查询、M2M 交易等功能。

      微信图片_202212141028074.png

      • Web交易系统

      用户登录 Web 界面,能源生产者(电站)将传感器数据通过MQTT 消息发布给网页,网页进行实时可视化显示。消费者向网页发布请求充电的 MQTT 消息,网页收到消息后,通过 IOTAClient 连接 Hornet 以获取消费者的账户余额,当账户余额足够时,网页发布 MQTT 消息,使智能开关打开,智能开关每隔一段时间将用电量返回给网页,网页通过 IOTAClient 连接 Hornet 进行定时交易。消费者通过 MQTT 消息向网页发布停止充电的信息,网页关闭智能开关,并保存此消费者的交易记录,包括交易双方、交易金额、交易电量及交易时间等,供用户查询历史数据。

      微信图片_202212141028073.png

      PART04 参赛团队

      华东师范大学“萌新队”
      指导老师:左少华、吴幸
      成员:龚丹妮、万海缘、李丽莹

      发布在 MR Series
      q1215200171
      budbool
    • 回复: 继MCore-H616核心板之后,这次弄个 R818 核心板玩玩(含工规)

      @efancier 以后的片子都是默认工规的

      发布在 A Series
      q1215200171
      budbool
    • 回复: 自制V853机载视觉中枢

      @zyhao712 越来越期待成品无人机👍 👍 👍

      发布在 V Series
      q1215200171
      budbool
    • 回复: MQ-Quad粉色版,以及安卓固件更新

      粉色版到货了哈哈哈,也太好看了吧

      微信图片_20221212153337.jpg

      发布在 H/F/TV Series
      q1215200171
      budbool
    • 回复: 萌新基于全志V3s自制GBA游戏机

      想买。。。求量产

      发布在 爱搞机专区
      q1215200171
      budbool
    • 回复: 电子书阅读器轻松搞定!轻便且多功能的LVGL文本阅读器(lv_100ask_text_reader)

      牛逼👶

      发布在 GUI
      q1215200171
      budbool
    • 【FAQ】全志系列芯片如何把flash擦成空片?

      1.主题
      如何把flash擦成空片

      2.问题背景
      产品:all
      硬件:all
      软件:uboot+pc端烧录工具(PhoenixSuit/PhoenixUsbPro/awflash命令行工具)
      其他:无

      3.问题描述
      有的时候想把flash擦成空片或者只格式化普通分区如user data分区,但是又不想重新烧录固件,如何只进行擦除而不升级固件?

      4.解决办法
      (1)把附件spec_tool_只擦除flash不烧录固件的插件.fex,重命名为spec_tool.fex放到烧录工具目录下。
      (2)PhoenixSuit:选择机器对应的固件。选择工具界面上保留数据升级:勾选该按钮,则升级前不进行格式化,private,secure storage、user data、mbr分区保留,其他擦除;选择分区擦除升级:勾选该按钮,则升级前只格式化普通分区,private,secure storage分区保留,其他擦除(注意会擦除mbr然后重新烧录mbr);选择全盘擦除升级:勾选该按钮,则升级前格式化全盘,包括SN等数据整块flash全部擦除执行完后flash变成空片,然后执行烧录。
      (3)PhoenixUsbpro:不勾选工具上的全盘擦除,是否擦除取决于sysconfig.fex的eraseflag字段;勾选工具上的全盘擦除,整块flash全部擦除。
      (4)awflash:命令行烧录工具,加上参数-e表示全盘擦除,不带-e参数是否擦除取决于sysconfig.fex的eraseflag字段。

      注:全盘擦除需要是uboot2018及以上的uboot版本,如果需要恢复成正常烧录固件请把spec_tool.fex文件删除然后重启工具即可。擦成空片后的flash如果打开了工具会执行跳fel动作。如果操作不成功,请查看串口打印erase_flag的值是否对应正确。
      

      spec_tool_只擦除flash不烧录固件的插件.fex

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 回复: 基于芒果MQ-R桌面精灵的实现亿点点介绍

      太喜欢啦~

      精灵+精灵.jpg

      发布在 MR Series
      q1215200171
      budbool
    • 回复: 【FAQ】全志D1芯片 如何解决Gstreamer:fb UI旋转(直接修改内核参数)后,sunxifbsink显示异常问题?

      @laocai 没有对应文档

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 【FAQ】全志F133(D1s)芯片 如何在Tina下进行显示旋转?

      问题背景

      目前显示多基于横屏的情况设计布局, UI, 图片, 视频等显示. 而常用到的MIPI屏大多都是竖屏, 为避免重新调整布局, 显示提供了竖屏旋转成横屏的显示方式, 节省客户开发时间.

      显示旋转有硬件G2D旋转方式, 软件算法旋转方式, 可根据自己的方案屏情况, 测试对比两种方式选择使用, 主要评估内存占用, 时间效率, 旋转效果.

      显示驱动旋转framebuffer配置

      1.由于此前公版默认在modules.mk屏蔽了屏旋转相关配置, 如果你的版本是禁用旋转的, 需要把相关配置去掉.

      路径:target/allwinner/f133-common/modules.mk
      

      屏蔽以下3个相关选项:

      CONFIG_SUNXI_DISP2_FB_DISABLE_ROTATE
      
      CONFIG_SUNXI_DISP2_FB_ROTATION_SUPPORT
      
      CONFIG_SUNXI_DISP2_FB_HW_ROTATION_SUPPORT
      

      修改后的代码如下:

      .....
      $(eval $(call KernelPackage,net-rtl8821cs))
      
      define KernelPackage/sunxi-disp
        SUBMENU:=$(VIDEO_MENU)
        TITLE:=sunxi-disp support
        KCONFIG:=\
      	  CONFIG_DISP2_SUNXI=m \
      	  #CONFIG_SUNXI_DISP2_FB_DISABLE_ROTATE=y \
      	  #CONFIG_SUNXI_DISP2_FB_ROTATION_SUPPORT=n \
      	  #CONFIG_SUNXI_DISP2_FB_HW_ROTATION_SUPPORT=y \
      	  CONFIG_DISP2_SUNXI_BOOT_COLORBAR=n \
      	  CONFIG_DISP2_SUNXI_DEBUG=y \
      	  CONFIG_DISP2_SUNXI_COMPOSER=n \
      	  CONFIG_DISP2_SUNXI_SUPPORT_SMBL=y \
      
      .....
      

      2.硬件旋转需要确保G2D驱动已经使能

      make kernel_menuconfig
      	Device Drivers  --->
      		<*> SUNXI G2D Driver
      		[*]   sunxi g2d mixer module
      		[*]   sunxi g2d rotate module
      

      3.打开显示驱动旋转支持

      make kernel_menuconfig
      	Device Drivers  --->
      		Graphics support  ---> 
      			Frame buffer Devices  --->
      				 Video support for sunxi  --->
      				 	DISP2 Framebuffer rotation support (Disable rotation)  --->
      				 		 ( ) Disable rotation
      						 ( ) Software rotation support  	(不要选这个,方案未支持)
      						 (X) Hardware(G2D) rotation support (选择G2D旋转)
      

      4.dts配置

      board.dts 和 uboot-board.dts同步修改.

      &disp{
          .....
          disp_rotation_used       = <1>;/* 使能旋转功能 */
          degree0                  = <3>; /* X:screen index; 0:0 degree; 1:90 degree; 3:270 degree */
          fb0_width                = <1280>;/*fb 的长宽交换*/
          fb0_height               = <800>;
          .....
      };
      

      5.旋转后framebuffer编程是需要注意,旋转后的buffer不会直接显示到屏幕上, 需要在应用刷屏的地方调用FBIOPAN_DISPLAY接口.同步旋转后的buffer到LCD上.

      以修改公版旋转的GUI刷屏示例:

      路径:package/gui/littlevgl-6/lv_drivers/display/fbdev.c

      void fbdev_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_p){
      ....
          lv_disp_flush_ready(drv);
          ioctl(fbfd, FBIOPAN_DISPLAY, &vinfo); /*函数最后,在刷屏函数后面,调用 FBIOPAN_DISPLAY 接口*/
      }
      

      软件旋转LVGL UI配置

      公版上lvgl-6上做了UI旋转算法, 软件交换打点位置达成旋转. 该做法纯软件, 不需要改动其他配置, 在原来未旋转的基础上,修改LV_UI_ROTATE_DIRECTION宏即可.

      路径:lv_conf.h

      /* UI rotation:
      * - 0:  no rotate
      * - 1:  90°
      * - 2: 180°
      * - 3: 270°
      */
      
      #define LV_UI_ROTATE_DIRECTION     0
      

      视频旋转配置

      视频旋转有 解码器旋转 和 G2D旋转 两种方式.

      1.编码器旋转(VE),使用TPlayerSetRotate接口,注意该接口不支持LBC模式, 不支持H265视频旋转.具体请参考<Tina Linux 多媒体解码>文档.

      函数原型: int TPlayerSetRotate(TPlayer* p,TplayerVideoRotateTyperotateDegree);
      功能 设置视频旋转的角度
      参数 p: 通过 TPlayerCreate 函数创建的 TPlayer 指针; rotateDegree: 视频旋转的角度
      返回值 成功返回 0,失败返回-1。
      调用说明 这个函数需要在 TPlayerSetDataSource() 函数之前调用
      

      2.G2D旋转:

      方式一:(1)TPlayerSetG2dRotate()接口使用G2D做旋转。该接口在TPlayerCreate()之后调用。

      方式二:(2)直接在在配置文件中配置默认旋转,文件路径:

      ​ package/allwinner/tina_multimedia/tplayer/configs/f133_linux_cedarx.conf

      48 #use g2d module to rotate the video. notice:F133/R528
      49 g2d_rotate_flag = 1
      50 g2d_rotate_degree = 1
      

      图片旋转

      待支持.

      发布在 MR Series
      q1215200171
      budbool
    • 回复: 新人交流学习一下

      新人交流学习一下

      发布在 灌水区
      q1215200171
      budbool
    • 【FAQ】全志H616芯片 以太网模块初始化失败如何解决?

      1.【问题现象】

      执行ifconfig -a/ifconfig eth0/ifconfig eth0 up命令,找不到eth0设备,有如下类似打印:

      root@TinaLinux:/# ifconfig -a
      lo        Link encap:Local Loopback  
                inet addr:127.0.0.1  Mask:255.0.0.0
                inet6 addr: ::1/128 Scope:Host
                UP LOOPBACK RUNNING  MTU:65536  Metric:1
                RX packets:6480 errors:0 dropped:0 overruns:0 frame:0
                TX packets:6480 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1 
                RX bytes:505440 (493.5 KiB)  TX bytes:505440 (493.5 KiB)
      
      root@TinaLinux:/# 
      root@TinaLinux:/# ifconfig eth0
      ifconfig: eth0: error fetching interface information: Device not found
      root@TinaLinux:/# 
      root@TinaLinux:/# ifconfig eth0 up
      ifconfig: SIOCGIFFLAGS: No such device
      

      2.【问题分析】

      以太网模块配置未生效或存在GPIO冲突

      3.【排查步骤】

      • 步骤1:抓取内核启动log,搜索"gmac"关键字段,检查gmac驱动是否probe成功;

      • 步骤2:若内核启动log显示probe失败,常见原因是GPIO资源冲突导致,有如下类似打印:

      sun50iw10p1-pinctrl pio: pin PH0 already requested by twi0; cannot claim for gmac0
      sun50iw10p1-pinctrl pio: pin-224 (gmac0) status -22
      sun50iw10p1-pinctrl pio: could not request pin 224 (PH0) from group PH0  on device pio
      sunxi-gmac gmac0: Error applying setting, reverse things back
      sunxi-gmac: probe of gmac0 failed with error -22
      
      • 步骤3:若内核启动log无gmac相关打印,则需要确认以太网配置是否生效。

      4.【解决办法】

      4.1 GPIO冲突
      (1) 首先,结合内核启动log定位与哪个模块存在GPIO冲突,有如下类似打印:

      sun50iw10p1-pinctrl pio: pin PH0 already requested by twi0; cannot claim for gmac0
      

      (2) 然后,确认该模块GPIO配置是否有误或者是否可以关闭该模块。

      4.2 以太网配置未生效
      (1) 首先,确认内核menuconfig以太网模块配置是否打开,路径及截图如下:

      menuconfig -> Device Drivers -> Network device support -> Ethernet driver support
      

      3dcc7d980e5444a7974c067edefb4933.jpg

      (2) 然后,确认board.dts/sys_config.fex中GMAC模块是否打开,board.dts配置示例如下:

      gmac0: eth@05020000{
          phy-mode = "rgmii";
          use_ephy25m = <1>;
          tx-delay = <7>;
          rx-delay = <0>;
          status = "okay";
      };
      

      注:

      • status = “okay"代表打开该模块,status = “disabled"代表关闭该模块;

      • 确保PHY与GMAC之间物理接口与软件配置相匹配,对于RGMII接口phy-mode配置为"rgmii”,RMII接口phy-mode配置为"rmii”;
        © use_ephy25m=1代表PHY使用SOC内部EPHY_25M时钟,use_ephy25m=0或者不配置该参数,代表PHY不使用SOC内部EPHY_25M时钟,
        需外挂25M晶振为PHY提供时钟;

      发布在 H/F/TV Series
      q1215200171
      budbool
    • (送开发板~)看!是芒果派,他好像在玩一种很新的开发板

      小巧的板型,精致的设计,芒果派 - MangoPi,坚持“艺术品”PCB设计,目前全系开发板皆选用全志方案

      (文末有芒果派准备的福利哦)

      MangoPi - Nezha MQ

      芒果派-哪吒MQ(MangoPi-Nezha MQ)是芒果派(MangoPi)针对全志D1s设计的小型RISCV-Linux原型板,一体化极简设计,可以应用于屏显类AIoT产品。D1s芯片DSI接口的强大功能,赋予了哪吒MQ点屏神器的头衔,板载WiFi以及双Type-C的接口也显示出哪吒MQ紧跟潮流的设计理念,独立BOOT按键、超高集成度......都是哪吒MQ虽小,五脏俱全的最佳佐证。

      MQ正面DIS.png

      MangoPi - MQ R

      MQ-R是将MQ/MQ-Dual与较早时期的Mango Pi R3混合后的产物,在保证极简设计的同时,让开发板更适合量产开发。这款开发板提供了Arm核的T113以及RISC-V核的D1s两个版本,T113版本内置128MB DDR,D1s版本则内置64MB DDR,开发者可根据实际开发需求选择不同版本的开发板使用。

      d1st113.jpg

      MangoPi - MQ Pro

      芒果派MQ Pro延续了芒果派开发板一贯小而美的作风,板子虽小,但却具备了所有重要的功能,MQ Pro以全志D1-H为主控,内置最高1G DDR,板载WiFi/BT/,并提提供了多种常用的外设接口,完整的功能也使得开发板可以很好地运行Tina/Debian之类的嵌入式软件系统。

      MANGO D1 REMIX.jpg

      MangoPi - MQ Quad

      MQ-Quad与MQ-Pro具有极其相似的外形设计,他们都有着与RaspberrPi Zero W拥有一样的外形尺寸,两者之间不同的是,MQ-Pro的主控是全志D1-H,而MQ-Quad则是选用全志H616作为主控。芒果派 MQ-Quad 配备 1GB RAM、一个 mini HDMI 输出、两个 USB Type-C 端口、WiFI和蓝牙连接、TF卡槽,以及常用的外设接口, 开发板同时适配了Tina Linux(OpenWrt)、Ubuntu 和 Android 等系统。

      52F42331-28CA-4d11-8AC7-74282BFBCBF4.png

      MangoPi - MCore

      MCore H616是基于全志H616设计的超迷你模组,大小与普通的SD卡不相上下,板子虽然设计得小,但也板载了1GB内存和AXP313电源管理芯片。MCore四周设计了邮票孔的连接方式,方便开发者直接进行手焊,以满足开发者DIY各种小电视/Linux/Android盒子的需求。

      O1CN01QKO9M32KBkv3qIRrV_!!479269519.jpg

      MangoPi - Coming soon

      继MCore-H616核心板之后,芒果派即将推出新的R818核心板。R818更侧重于本地显示和CSI,可直接驱动 DSI/LVDS/RGB 这种接口的屏幕,其他资源和H616相当,但R818是达到工规级的芯片。另外芯片本体更小,所以这次将R818+EMMC+LPDDR4+PMU(带锂电池管理)整体做到了3x3cm的大小。并且预留屏蔽罩安装接口。系统方面除了本身提供的Android10以外,还有Tina-Linux,芒果派会在开发板发布时搭配上Tina,ArmBian,Android三套系统。

      qq截图20221114131915.png

      为回馈开发者对芒果派长期的喜爱与支持,芒果派准备了全系列开发板作为礼物送给大家。

      • 一等奖:芒果派MQ-Pro * 2
      • 二等奖:芒果派MQ-Quad * 2
      • 三等奖:芒果派MQ-R * 1
      • 四等奖:芒果派MQ系列开发板全家桶 * 1

      开奖时间 2022/11/24 10:00

      参与方式:点击下方文章公众号文章链接,关注全志在线微信公众号,发送消息“真的好想要芒果派呀”,参与抽奖

      抽奖链接:https://mp.weixin.qq.com/s/KUr_jJ0iQ-DzV2Uu8JWPig

      发布在 公告
      q1215200171
      budbool
    • 回复: f133 tina4.0 sdk,发现一个很奇怪的现象,大佬们知道的帮忙解答一下,非常感谢

      @wyljkl 这个文件似乎有点问题,log可以直接复制上来的

      发布在 MR Series
      q1215200171
      budbool
    • 回复: 【FAQ】全志D1芯片 如何移植 rtl8821cu wifi 驱动到 Linux-5.4内核?

      @wyljkl 出现编译错误时解决方案如下:

      diff --git a/drivers/net/wireless/rtl8821cu/os_dep/linux/os_intfs.c b/drivers/net/wireless/rtl8821cu/os_dep/linux/os_intfs.c
      index c4b515763ac8..466a3b27f521 100644
      --- a/drivers/net/wireless/rtl8821cu/os_dep/linux/os_intfs.c
      +++ b/drivers/net/wireless/rtl8821cu/os_dep/linux/os_intfs.c
      @@ -28,6 +28,8 @@ MODULE_LICENSE("GPL");
       MODULE_DESCRIPTION("Realtek Wireless Lan Driver");
       MODULE_AUTHOR("Realtek Semiconductor Corp.");
       MODULE_VERSION(DRIVERVERSION);
      +MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
      

      出现运行错误时解决方案为遍历驱动里所有使用 wiphy_vendor_command 结构体并修改如下:

      diff --git a/drivers/net/wireless/rtl8821cu/os_dep/linux/rtw_cfgvendor.c b/drivers/net/wireless/rtl8821cu/os_dep/linux/rtw_cfgvendor.c
      index 6bac27d37766..09e24dcc9480 100644
      --- a/drivers/net/wireless/rtl8821cu/os_dep/linux/rtw_cfgvendor.c
      +++ b/drivers/net/wireless/rtl8821cu/os_dep/linux/rtw_cfgvendor.c
      @@ -1756,6 +1756,11 @@ static const struct wiphy_vendor_command rtw_vendor_cmds[] = {
                      },
                      .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
                      .doit = rtw_cfgvendor_gscan_get_capabilities
      +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
      +               ,
      +               .policy = VENDOR_CMD_RAW_DATA,
      +               .maxattr = 1
      +#endif
              },
      
      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 回复: 【FAQ】全志V853芯片 适配双目GC2053的操作步骤

      @nimadibaj @jiao1937284560

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 开发板也有亲兄弟?疑似芒果派MQ-Pro复刻版曝光

      大家还记得那块,被RISC-V官方点赞过的开发板吗?

      640.png

      今天我们,再来介绍一下这块开发板

      不好意思,搞错了

      是介绍另一块和它长得很像的开发板

      芒果派 MQ-Quad(H616)(我愿称之为兄弟开发板)

      zkk.jpg

      MQ-Quad与MQ-Pro具有极其相似的外形设计,他们都有着与RaspberrPi Zero W拥有一样的外形尺寸,这这这真的不是一家人嘛?两者之间不同的是,MQ-Pro的主控是全志D1-H,而MQ-Quad则是选用全志H616作为主控。

      fa_m-dhacaederf.jpg

      芒果派 MQ-Quad 配备 1GB RAM、一个 mini HDMI 输出、两个 USB Type-C 端口、WiFI和蓝牙连接、TF卡槽,以及一个40Pin可与树莓派兼容的 GPIO 接头和一个带 USB 的20Pin FPC连接器、以太网和更多用于扩展的 GPIO接口。除开发板本身之外,芒果派也为MQ-Quad设计了一款全铝散热壳,在使用这款散热壳时,并不会影响到任何端口或GPIO 接头的使用。

      52F42331-28CA-4d11-8AC7-74282BFBCBF4.png

      fah2sqqamaaocdd.jpg

      你以为这一家只有两兄弟吗?其实他们还有个“涉世未深”的弟弟——MCore H616。

      MCore H616是基于全志H616设计的超迷你模组,大小甚至比不上普通的SD卡,板子虽小,但也板载了1GB内存和AXP313电源管理芯片。MCore四周设计了邮票孔的连接方式,方便开发者直接进行手焊,以满足开发者DIY各种小电视/Linux/Android盒子的需求。

      O1CN01QKO9M32KBkv3qIRrV_!!479269519.jpg

      两块H616的开发板在芒果派淘宝店有售,同时芒果派为开发板提供了Tina Linux和Debian的镜像文件,以及相关的原理图和关于H616的一些文件资料,有需要的开发者可以到芒果派官方网站了解更多开发板信息和获取开发板资料。

      资料获取:https://mangopi.org/mqquad

      发布在 MR Series
      q1215200171
      budbool
    • 回复: 【FAQ】全志V853芯片 如何在Tina V85x平台切换sensor?

      @likehengall 签NDA

      发布在 V Series
      q1215200171
      budbool
    • Ubuntu官方又支持了一款仅有硬币大小的RISC-V SBC

      Ubuntu发行商Canonical近日宣布将再支持一款基于RISC-V芯片设计的SBC——来自Sipeed的LicheeRV。

      7B3D3672-BCDE-482d-A084-6ABE3C7D9551.png

      LicheeRV是基于全志D1-H芯片(阿里平头哥C906 RISC-V CPU)设计的SBC,值得一提的是,这款SBC核心板只是比普通硬币大一点,比普通的手表和Airpods耳机仓都要小。也就是说,未来我们甚至有可能把一台RISC-V架构的个人电脑戴在手上或者塞进耳朵里。

      IMG_3565.JPG

      LicheeRV板载 512MB DDR3内存,使用两组M.2B-KEY 67 Pin金手指引出所有IO,并提供了OTG USB调试口和UART调试串口,更可选配SPI LCD作为初级显示设备,开发者可以无需搭配底板单独使用该核心模块进行基础RISC-V系统开发。

      640.png

      点击链接了解更多LicheeRV详细参数:https://bbs.aw-ol.com/topic/633/

      目前已有开发者在LicheeRV上成功启动Ubuntu镜像,开发者可以直接到Ubuntu官方网站获取镜像文件及安装指南。
      下载链接:https://ubuntu.com/download/risc-v

      408C82C5-CDAE-452b-A7EC-A59F47D5F419.png

      • 在LicheeRV成功启动Ubuntu
        QQ图片20221027152201.png
      发布在 MR Series
      q1215200171
      budbool
    • 树莓派价格暴涨买不起?他们自己做了一块,价格只要四分之一

      众所周知,树莓派诞生之初时的设计有四大要点

      • 一个可编程的硬件(功能很强)√
      • 足够有趣,能吸引年轻人(可玩性确实高)√
      • 能反复扔进书包,不怕挤坏(质量杠杠滴)√

      还有最后一条

      • 大多数家庭能买得起

      sww.jpg

      好吧 我承认,看到这条我犹豫了

      金馆长熊猫00152-我真的很想融入你们但是我真的没钱.gif

      树莓派的价格一年多来直线起飞,树莓派曾经让“大多数家庭都买得起”的时代一去不复返了。

      必趣科技就是其中一个“受害者”。

      必趣科技是深圳的一家做打印机的厂商,早年的打印机上多半使用树莓派作为控制主板,控制打印头、机械臂啥的。但是树莓派价格暴涨,令其不得不寻找新的替代方案。

      “这么贵我们为什么不自己做呢?还能自己拿来卖~”

      “好像是一个发财的好机会,就差一个工程师实现了”

      640.png

      这说起来就巧了,作为一家走在时代风口浪尖上的科技公司,必趣科技不止有一个工程师,还有一支完善的软硬件工程师团队。

      于是乎,一块和树莓派CM4长得差不多,但是价格只要1/4的DIY板子——BIGTREETECH CB1就做出来了。

      O1CN01oGlA911YT4LSdPUlI_!!381903059.jpg

      这板子,不能说毫不相干,只能说一模一样……

      CB1是遵循树莓派CM4的外形尺寸以及资源配置的全志H616四核 Arm Cortex-A53 SBC。很快,这块板子就被国外的极客们发现并广泛使用了起来。知名电子爱好者网站CNX也对这块板子进行了报道。

      • CNX-Software报道页面
        CB1 cnx.jpg

      BIGTREETECH CB1 配备 1GB RAM、HDMI 输出接口、2.4GHz WiFi 和100Mbps以太网。对比来看,CB1 比 CM4 具有更好的多媒体能力。CB1支持 4Kp60 H.265/H.264 视频解码和 1080p60 H.264 视频编码,而 CM4 只能处理 4Kp60 H.265 和 1080p60 H.264 视频解码和 1080p30 H.264 视频编码。不足的地方是,CB1的模块上缺少 CSI 和 DSI 接口以及只提供一个HDMI视频输出接口,而Raspberry Pi CM4 模块提供CSI和DSI接口并兼具两个HDMI视频输出接口。

      • CB1 & CM4参数对比
        1512E894-0C0E-43cd-8A84-478369EB6BDE.png

      BIGTREETECH CB1 规格:

      • SoC – Allwinner H616 四核 Cortex-A53 @ 1.5GHz
      • 带 Mali-G31 MP2 GPU,支持 OpenGL 3.2、Vulkan 1.1、OpenGL 2.0 API
      • 内存 – 1GB DDR3L SDRAM
      • 视频编码– 最高4K@60fps的HDMI 2.0 端口
      • 视频解码 – H.264最高1080p@60fps
      • 视频解码 – H.265最高4Kp60/4Kp30硬解
      • 网络 – 百兆以太网 / WiFi
      • BTB连接器,与树莓派CM4上的连接器兼容
      • 尺寸 – 55x40x4.7mm

      CB1设计了与树莓派CM4相同的BTB座子,方便用于与底板PI4B的连接。CB1配置的40-pin GPIO接口,兼容树莓派生态,PI4B底板预留5V风扇接口、千兆以太网接口、CSI,DSI接口、MicroSD插槽以及4个USB接口等可拓展功能接口。

      O1CN01SNw3S11YT4Klk2ii1_!!381903059.jpg

      当PI4B搭配CB1使用时,性能将接近树莓派3B,并且兼容很多树莓派4的配件。当然,PI4B板框与接口大小与树莓派4B和CM4的连接无异,所以你也可以将树莓派CM4接到PI4B上,以达到与树莓派4B一样的使用效果。

      虽然两者性能相仿,但CB1与CM4两者的价格却天差地别。与动辄¥600+才能买到的CM4相比,CB1的价格就十分美丽了,核心板CB1单板仅需¥138,加上与底板的套装也不过¥228。将近四倍的差价,配置却不相上下,解码方面甚至更强一些,有了CB1,还要什么自行车?

      不输CM4的优异性能以及实惠的价格,搭配上树莓派硬件兼容画龙点睛般的设计,不少已经上手CB1的工程师也对这块板子发出了称赞。其中提及最多的优点就是与其他号称树莓派替代品相比,CB1对系统的适配有着充分的支持。

      • 部分海外论坛评论
        来源:CNX-Software
        wnagyou1.jpg wangyou3.jpg wangoyu2.jpg

      BIGTREETECH为CB1提供Debian Linux,其他操作系统也在开发中,操作系统镜像和 Linux 内核源代码可以在 GitHub 上找到:

      Github:https://github.com/bigtreetech/CB1

      目前,必趣科技的官方淘宝店已经上线了这块板子,售价138元。

      发布在 H/F/TV Series
      q1215200171
      budbool
    • 回复: V853 开发板 IR CUT 发热说明

      新收到板子的记得看这里

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【FAQ】全志XR806芯片 系统异常重启如何解决?

      @qinlinbin 理论上是不支持的吧

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 回复: D1-H 资源下载左边SDk目录展开没有

      正在维护中 ~(小道消息)

      发布在 代码下载问题专区
      q1215200171
      budbool
    • 【FAQ】全志V853芯片 Tina SDK LCD小分辨率DCLK设置问题

      1.主题
      Tina SDK LCD小分辨率DCLK设置

      2.问题背景
      产品:带显示屏的产品
      硬件:V系列 + DE
      软件:Tina SDK
      其他:使用小分辨的LCD显示频,根据LCD的时序算出的DLCK小于48MHz

      3.具体表现
      可以看到希望设置的dlck为10MHz,但lck real dclk为18MHz,导致后续的帧率显示异常

      [ 0.186329] disp 0, clk: pll(40000000),clk(40000000),dclk(10000000) dsi_rate(10000000)
      [ 0.186329] clk real:pll(72000000),clk(72000000),dclk(18000000) dsi_rate(18000000)
      

      查看信息:

      root@(none):/sys/devices/virtual/disp/disp/attr# cat sys
      
      screen 0:
      de_rate 300000000 hz, ref_fps:50
      mgr0: 272x480 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_sync[0] unblank direct_show[false]
      dmabuf: cache[0] cache max[0] umap skip[0] overflow[0]
      lcd output backlight(255) fps:90.9 272x 480
      err:0 skip:170 irq:22509 vsync:0 vsync_skip:0
      BUF enable ch[0] lyr[0] z[2] prem[N] a[pixel 128] fmt[ 77] fb[ 272, 480; 136, 240; 0, 0] crop[ 0, 0, 272, 480] frame[ 0, 0, 272, 480] addr[ 2e0000, 2d0000, 0] flags[0x 0] trd[0,0]
      BUF enable ch[2] lyr[0] z[16] prem[N] a[pixel 150] fmt[ 0] fb[ 272, 480; 272, 480; 272, 480] crop[ 0, 0, 272, 480] frame[ 0, 0, 272, 480] addr[ 17f800, 0, 0] flags[0x
      

      4.问题分析
      当LCD使用小分辨率时,根据LCD需要的时序参数,计算出来的dlck一般会小于48MHz,或者更小,此时客户计算出来的dclk会很小,可能会整除不了24,然后直接设置了dclk,比如设置lcd_dclk_freq = <10>;驱动底层默认的分频系数为4分频,所以理论计算值得到的pll值为40MHz,而真实的LCD的PLL是由24MHz倍频得到,而40MHz,并不是24的倍数,所以此时PLL的频率会向上取,此处计算出来的是72MHz,然后4分频得到的真实的dlck是18MHz,从而使得LCD出现异常。

      5.根本原因
      小分辨率dts中设置了不能整除24MHz的频率。

      6.解决办法
      对于小分辨的的LCD设置DCLK的时候,计算出来的dclk的理论值尽量按照以下的频率值的设置:
      48MHz 24MHz 12MHz 8MHz 6MHz 4MHz

      当设置条件1的dclk时,显示的帧率或者显示还是异常,则就按照计算出来的理论值来设置即可,比如计算出来的dclk的值为10MHz,

      则dts中lcd_dclk_freq = <10>;,然后根据启动log来调整分频系数,如下:

      [ 0.186329] disp 0, clk: pll(40000000),clk(40000000),dclk(10000000) dsi_rate(10000000)
      [ 0.186329] clk real:pll(72000000),clk(72000000),dclk(18000000) dsi_rate(18000000)
      

      从打印可以看到此时的分频系统是4分频:pll/dclk=4,所以想得到接近10MHz的频率此时可以把分频系数改成6或者8, 72/6=12, 72/8=9。

      修改分频系数

      3.1 kernel(drivers/video/fbdev/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c)
      static struct lcd_clk_info clk_tbl[] = {
      {LCD_IF_HV, 6, 1, 1, 0},
      /* CPU接口 /
      {LCD_IF_CPU, 12, 1, 1, 0},
      / LVDS接口 /
      {LCD_IF_LVDS, 7, 1, 1, 0},
      #if defined(DSI_VERSION_40)
      {LCD_IF_DSI, 4, 1, 4, 148500000},
      #else
      / mipi接口 /
      {LCD_IF_DSI, 4, 1, 4, 0}, / 改成8分频 {LCD_IF_DSI, 8, 1, 8, 0}*/
      #endif /endif DSI_VERSION_40/
      {LCD_IF_VDPO, 4, 1, 1, 0},
      };
      3.2 uboot(drivers/video/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c)
      static struct lcd_clk_info clk_tbl[] = {
      {LCD_IF_HV, 6, 1, 1, 0},
      {LCD_IF_CPU, 12, 1, 1, 0},
      {LCD_IF_LVDS, 7, 1, 1, 0},
      #if defined(DSI_VERSION_40)
      {LCD_IF_DSI, 4, 1, 4, 150000000},
      #else
      {LCD_IF_DSI, 8, 1, 8, 0},
      #endif /*endif DSI_VERSION_40 */
      };
      
      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 回复: 【大赛报名】V853芯片免费体验!华秋电子X全志在线开源硬件设计大赛

      大赛海报.jpg

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【素材汇总】V853素材汇总

      V851s.png v853chip.png 853立.png 851S立.png

      发布在 公告
      q1215200171
      budbool
    • 【大赛报名】V853芯片免费体验!华秋电子X全志在线开源硬件设计大赛

      大赛海报.jpg 由华秋电子联手全志在线发起的硬件工程师线上设计大赛来啦!报名免费申请V853芯片+PCB打板、贴片等服务项目赞助,还有官方荣誉证书,专家团队指导等众多福利,等你来挑战!

      开源设计大赛.jpg

      ☆ 大赛赛程
      报名时间:2022年10月11日-11月9日
      主办单位:电子发烧友、硬声App
      合作单位:华秋电子、全志在线

      ☆ 大赛内容
      本次大赛以全志V853、V851s系列为主控芯片(免费申请提供),参赛者需基于两种芯片中的一种设计项目,并按时提交相关设计文档。通过评选成功入围的设计作品,主办方将根据作品打分情况,提供相应项目的开发费用赞助。

      申请V851s芯片的参赛者,请在报名参赛计划中备注,相关资料和文档将在大赛活动群里单独提供。

      poYBAGNFHMWATcDUAAAbl4BWWi0724.png

      ◆ 全志V853系列芯片产品,免费申请试用
      ◆ 项目赞助,入围者提供免费pcb打板等服务
      ◆ 华秋电子+全志官方专家团队联合指导
      ◆ 颁发大赛荣誉证书,为个人履历加分
      ◆ 电子发烧友、硬声app等多方渠道推广宣传

      ☆ 活动奖项

      1. 参赛选手:面向企业、创客团队,工程师等人士,不限个人或团体形式参赛。
      2. 报名方式:在线提交项目主题、基本设计思路、主要解决的问题以及创新点即可报名参赛,具体方案不限,报名审核通过后工作人员将联系您。
      3. 作品相关:
        1)参赛作品必须基于全志V853、V851s系列主控产品设计项目(主控芯片和部分周边材料免费提供,具体在大赛活动群通知)。
        2)报名审核通过后,参赛者需在规定时间内提交作品设计文档(设计框架说明、pcb原理图、bom清单等),以便评委评审。
        3)设计作品统一提交至社区全志科技小组,单个作品最少产出3篇帖子+1个视频(视频发布至硬声app)。
      4. 赞助支持:
        1)评分最高的前3名,可享受1次免费pcb打板+smt贴片服务。
        2)其他入围作品,可享受1次免费pcb打板服务。
        3)以上赞助均以优惠券形式发放,且仅限通过华秋渠道进行使用。

      ☆ 报名方式
      1)扫码加入大赛活动群报名
      pYYBAGNFIg2ANhtKAACHGf3wmh8178.png

      2)点击下方大赛地址报名
      报名入口 → https://www.elecfans.com/project/contest/2022awol/

      ☆ 作品评审

      1. 所有设计作品由全志和华秋双方专家进行打分,按分数由高到低进行评选。
      2. 作品评审规则:
        ◆ 作品介绍(30分):项目方案陈述逻辑清晰,内容全面详细。
        ◆ 创新性(30分):作品设计思路新颖、视角独特、有一定的实用价值。
        ◆ 实用性(20分):作品面对的对象明确、有市场前景。
        ◆ 技术性(20分):实现方案明确、具有一定的技术含量。

      ☆ 全志V853芯片
      全志V853 是一颗面向智能视觉领域推出的新一代高性能、低功耗的处理器SOC,芯片采用三核异构设计,同时搭配了全志自研的新一代视觉处理引擎和疾风系统,最高算力可达1T的NPU助力V853可广泛用于智能门锁、智能考勤门禁、网络摄像头、行车记录仪、智能台灯等智能化升级相关行业。

      • 【资料】V853&&V851 硬件参考设计: https://bbs.aw-ol.com/topic/2111/

      v853chip.png
      V851s.png

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【资料汇总】V853资料汇总

      @lyscut V853/V853S PINOUT https://bbs.aw-ol.com/topic/2111/

      发布在 V Series
      q1215200171
      budbool
    • 全志XR806 Freertos+XRMCU+ADC采样频率偏低

      1.主题

      Freertos+XRMCU+ADC采样频率偏低

      2.问题背景

      硬件:XRMCU
      软件:freertos + ADC

      3.问题描述

      3.1复现步骤

      使用SDK自带的example/adc。

      修改adc_callback,adc_callback为中断回调,该函数的调用频率和ADC的频率一致,在该函数里面加一个IO口翻转。

      编译并烧录。

      用示波器或逻辑分析仪,检查IO口翻转频率和ADC_FEQ是否一致。

      3.2具体表现
      通过逻辑分析仪检查,实际ADC采样频率只有ADC_FEQ设置的1000分之一。

      4.问题分析

      读取ADC的所有相关寄存器,发现ADC使用的并不是默认时钟,而是低速时钟。高速时钟大约是40M,低速时钟是32K,大约相差1000倍,和测试结果相符。

      5.根本原因

      ADC的时钟选择已经在ROM化代码HAL_ADC_Init中写死,如下所示:

      __rom_xip_text
      HAL_Status HAL_ADC_Init(ADC_InitParam *initParam)
      {
          ……
          HAL_CCM_GPADC_SetMClock(CCM_APB_PERIPH_CLK_SRC_LFCLK, CCM_PERIPH_CLK_DIV_N_1, CCM_PERIPH_CLK_DIV_M_1);
          ……
      }
      

      即使外部再怎么修改修改时钟也不会生效。

      6.解决办法

      默认使用低速时钟的原因时,可以让ADC在低功耗模式时,依旧可以运行,而且ADC频率过高时,容易因为频繁进出中断导致程序卡死。
      如果希望设置成高速时钟,需要把src/rom/rom_bin/src/driver/chip/hal_adc.c部分的代码去ROM,如果设置的频率偏高,请使用burst模式。

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 全志XR806 Freertos + XRMCU +ADC采样数值不准

      1.主题

      Freertos + XRMCU +ADC采样数值不准

      2.问题背景

      硬件:XRMCU
      软件:freertos + MCU

      3.问题描述

      3.1复现步骤

      使用SDK的example/adc,编译生成固件并烧录。
      指定ADC引脚连接某一电压值。
      接串口调试助手,自动打印采样到的电压。

      3.2具体表现
      测试发现adc采集出来的电压与实际电压不符合,大多数情况下会低于实际电压,就算连接超出了最大采集电压2.5V,如2.8V的电压,显示采集到的最大电压也是只有大约2.47v。

      4.问题分析

      考虑是滤波算法的问题。

      实测从原始数据读出来的数据也不会达到理论的最大数值4095,所以并不是滤波算法的原因。

      改变ADC的参考源,从内部bg修改成VDD_IO.

      #if (__CONFIG_CHIP_ARCH_VER == 2)
      	initParam.vref_mode = ADC_VREF_MODE_2;
      #endif
      

      通过调整VDD_IO的电压,测量电压可以去到2.5V。

      5.根本原因

      XRMCU内部参考电压是1.25V,出厂时通过该电压去调整VDD_EXT达到3.3V,在调节过程中,3.3V校准后可能导致1.25V有些微的偏差,导致ADC的参考电源也回有细微的偏差。

      6.解决办法

      如果ADC精度要求非常高,可以使用VDD_IO作为参考电压,由用户进行校准,但这时候VDDIO不能再和VDD_EXT直接相连。

      内部ADC偏差一般在30mv以内,而且是固定差值,可以使用GPADC的0x18寄存器可以去校准,方法如下:

      比如1.8V输入,GPADC采样值2928,对应1787 mV,此时0x18寄存器读出来是0x811

      预期值为2949,那么就把0x811-(2949-2928)=0x7FC写入0x18寄存器,这时候读出来的值就校准好了

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 回复: 看图猜板,猜对的同学可以免费获得!

      @mstempin 这里 https://bbs.aw-ol.com/topic/1560/
      翻一翻 楼里有

      发布在 V Series
      q1215200171
      budbool
    • 基于D1哪吒的 自动寻路小车-附源码

      本文内容为【玄铁杯第二届RISC-V应用创新大赛】作业
      作者:智航追迹队

      原文链接:https://occ.t-head.cn/community/post/detail?spm=a2cl5.14300636.0.0.429d180fr0b8Om&id=4094245965412765696

      一、项目背景

      随着我国人工智能技术的进一步发展,自动驾驶汽车吸引了越来越多的目光,巡线是其行走控制方法之一,人们对智能循迹小车适应各种复杂路况的性能、安全平稳性等的要求越来越高,所以我们小组想要做一个智能寻路+避障小车。

      c753062f10a2a8b91780408542a518cb.jpg

      ##二、Demo的整体框架

      714b5a5d3d6849e938bd2e5542c3b3fc.jpg

      三、具体实施方案

      ①首先,根据哪吒开发板的原理框图了解开发板的工作原理,不同类型的引脚能实行怎样的功能,怎么使各引脚工作起来。

      ②在电脑上安装Ubuntu环境,进行编译环境配置,源码下载,编译和烧写。

      ③成功尝试了使用哪吒开发板运行的第一个HelloWorld程序和USB拍照程序。

      ④上网购买智能小车的所有部件:1个亚克力双层智能小车套件;2个L298N电机驱动模块;三种类型的杜邦线各一排;1个四路红外探测循迹光电传感器模块;4节5号电池。

      ⑤安装、连接、测试小车的行走功能。

      ⑥编写代码,调节红外探测的灵敏度使小车能够较为准确的感知周围环境并且运行测试成功。

      ⑦调试代码,完善小车的功能。

      2573ff99e30edf21fc66109b71c80d67.jpg

      四、软件、硬件介绍

      • 软件: Oracle VM VirtualBox Ubuntu 14.04虚拟机系统、全志USB烧录驱动、AllwinnertechPhoeniSuitRelease工具。

      • 硬件:哪吒开发板、USB数据传输、USB供电、海康威视摄像机、组装好的智能小车。

      五、作品源码

      #include<stdio.h>
      #include<stdlib.h>
      #include<fcntl.h>
      #include <unistd.h>
      #define EXPORT_GPIO1 "echo 2027 > /sys/class/gpio/export"
      #define EXPORT_GPIO2 "echo 2020 > /sys/class/gpio/export"
      #define EXPORT_GPIO3 "echo 2021 > /sys/class/gpio/export"
      #define EXPORT_GPIO4 "echo 2022 > /sys/class/gpio/export"
      
      #define UEXPORT_GPIO1 "echo 2027 > /sys/class/gpio/unexport"
      #define UEXPORT_GPIO2 "echo 2020 > /sys/class/gpio/unexport"
      #define UEXPORT_GPIO3 "echo 2021 > /sys/class/gpio/unexport"
      #define UEXPORT_GPIO4 "echo 2022 > /sys/class/gpio/unexport"
      
      #define GPIO1_OUTPUT "echo out > /sys/class/gpio/gpio2027/direction"
      #define GPIO2_OUTPUT "echo out > /sys/class/gpio/gpio2020/direction"
      #define GPIO3_OUTPUT "echo out > /sys/class/gpio/gpio2021/direction"
      #define GPIO4_OUTPUT "echo out > /sys/class/gpio/gpio2022/direction"
      
      #define LOWGPIO1 "echo 0 > /sys/class/gpio/gpio2027/value"
      #define LOWGPIO2 "echo 0 > /sys/class/gpio/gpio2020/value"
      #define LOWGPIO3 "echo 0 > /sys/class/gpio/gpio2021/value"
      #define LOWGPIO4 "echo 0 > /sys/class/gpio/gpio2022/value"
      
      #define HIGHGPIO1 "echo 1 > /sys/class/gpio/gpio2027/value"
      #define HIGHGPIO2 "echo 1 > /sys/class/gpio/gpio2020/value"
      #define HIGHGPIO3 "echo 1 > /sys/class/gpio/gpio2021/value"
      #define HIGHGPIO4 "echo 1 > /sys/class/gpio/gpio2022/value"
      
      //红外
      #define EXPORT_HW1 "echo 2023 > /sys/class/gpio/export"
      #define EXPORT_HW2 "echo 2024 > /sys/class/gpio/export"
      #define EXPORT_HW3 "echo 2025 > /sys/class/gpio/export"
      #define EXPORT_HW4 "echo 2026 > /sys/class/gpio/export"
      
      #define HW1_INPUT "echo in > /sys/class/gpio/gpio2023/direction"
      #define HW2_INPUT "echo in > /sys/class/gpio/gpio2024/direction"
      #define HW3_INPUT "echo in > /sys/class/gpio/gpio2025/direction"
      #define HW4_INPUT "echo in > /sys/class/gpio/gpio2026/direction"
      
      #define UNEXPORT_HW1 "echo 2023 > /sys/class/gpio/unexport"
      #define UNEXPORT_HW2 "echo 2024 > /sys/class/gpio/unexport"
      #define UNEXPORT_HW3 "echo 2025 > /sys/class/gpio/unexport"
      #define UNEXPORT_HW4 "echo 2026 > /sys/class/gpio/unexport"
      
      #define run 1
      #define left 3
      #define right 4
      #define back 2
      #define stop 5
      
      void INIT()
      {
      
      	system(EXPORT_GPIO1);
      	system(EXPORT_GPIO2);
      	system(EXPORT_GPIO3);
      	system(EXPORT_GPIO4);
      
      	system(EXPORT_HW1);
      	system(EXPORT_HW2);
      	system(EXPORT_HW3);
      	system(EXPORT_HW4);
      
      	system(GPIO1_OUTPUT);
      	system(GPIO2_OUTPUT);
      	system(GPIO3_OUTPUT);
      	system(GPIO4_OUTPUT);
      
      	system(HW1_INPUT);
      	system(HW2_INPUT);
      	system(HW3_INPUT);
      	system(HW4_INPUT);
      	//printf("1\n");
      
      }
      
      void RUN()
      {
      	system(LOWGPIO1);//0
      	system(HIGHGPIO2);//1
      	system(HIGHGPIO3);//1
      	system(LOWGPIO4);//0
      //	printf("2\n");
      
      }
      void STOP()
      {
      	system(LOWGPIO1);
      	system(LOWGPIO2);
      	system(LOWGPIO3);
      	system(LOWGPIO4);
      	//printf("3\n");
      }
      void LEFT()
      {
      	system(LOWGPIO1);//0
      	system(HIGHGPIO2);//1
      	system(HIGHGPIO3);//1
      	system(HIGHGPIO4);//1
      }
      void RIGHT()
      {
      	system(HIGHGPIO1);//1
      	system(HIGHGPIO2);//1
      	system(HIGHGPIO3);//1
      	system(LOWGPIO4);//0
      }
      void BACK()
      {
      	system(HIGHGPIO1);//1
      	system(LOWGPIO2);//0
      	system(LOWGPIO3);//0
      	system(HIGHGPIO4);//1
      }
      void MOTORRUN(int cmd)
      {
        switch(cmd)
        {
        		case 1:
        			RUN();
        			break;
        		case 2:
        			BACK();
        			break;
        		case 3:
        			LEFT();
        			break;
        		case 4:
        			RIGHT();
        			break;
        		case 5:
        			STOP();
        			break;
        	}
      }
      int GETHW(int gpio)
      {
      
          char path[64];
          char value_str[3];
          int fd;
      
          snprintf(path, sizeof(path), "/sys/class/gpio/gpio%d/value", gpio);
          fd = open(path, O_RDONLY);
          if (fd < 0) {
              perror("Failed to open gpio value for reading!");
              return -1;
          }
      
          if (read(fd, value_str, 3) < 0) {
              perror("Failed to read value!");
              return -1;
          }
      
          close(fd);
          return (atoi(value_str));
      }
      
      void TRACE()
      {
      	int l1=GETHW(2023);
      	int l2=GETHW(2024);
      	int r1=GETHW(2025);
      	int r2=GETHW(2026);
      	//printf("%d,%d,%d,%d",l1,l2,r1,r2);
      	if(l1&&l2&&r1&&r2){
      		MOTORRUN(run);
      		printf("直走\n");
      	}
      	else if(l1+l2<r1+r2){
              printf("右转\n");
      		//MOTORRUN(back);
      		sleep(0.5);
      		MOTORRUN(right);
      	}
      
      	else if(l1+l2>r1+r2){
      	//	MOTORRUN(back);
      		printf("左转\n");
      		sleep(0.5);
      		MOTORRUN(left);
      	}
      	else if(!r1&&!r2&&!l1&&!l2){
                  printf("停止\n");
      		MOTORRUN(stop);
      	}
      
      }
      
      int main(void)
      {
      	INIT();
      	while(1)
      	{
      	 TRACE();
      	// printf("2022");
      	// sleep(1); 
      	// RUN();
      	 sleep(0.5);
      	// STOP();
      	 }return 0;
      
      }
      

      六、视频演示

      发布在 MR Series
      q1215200171
      budbool
    • 【创龙全国产T3核心板】赋能工业领域新发展

      在工业5.0时代浪潮持续推进并具备确定性的时代背景下,工业领域创新升级的需求日益增长,为满足各种工业环境下的应用需求,面向工业领域,创龙科技推出了基于全志T3处理器的元器件全国产化工业级核心板——SOM-TLT3以及SOM-TLT3-B。

      SOM-TLT3-B.jpg SOM-TLT3.jpg

      创龙T3核心板有邮票孔(SOM-TLT3)和工业级B2B连接器(SOM-TLT3-B)两种版本,供开发者根据开发需要自行选择,不同版本的核心板仅在尺寸与引脚数上有较小差异。

      AE341F3B-C3A8-4268-9EC4-6F335A2CC16B.png 20F06C14-63D3-4f43-B38A-97A87FAFDE90.png
      机械尺寸图.jpg

      在硬件资源方面,两款核心板也并无二致,SOM-TLT3核心板采用了100%国产元器件方案,板上搭载的DDR、eMMC、晶振、电源等均采用国产芯片,实现了国产化的全替代,值得一提的是,连接器也实现了国产化的替代。

      核心板在与底板连接时通过邮票孔或B2B连接器连接底板方式引出CSI、TVIN、MIPI DSI、TVOUT、RGB DISPLAY、LVDS DISPLAY、GMAC、EMAC、USB、SATA、SDIO、UART、TSC、SPI、TWI等接口,支持双屏异显、最高可达1080P@45fps H.264视频硬件编解码,

      SOM-TLT3-B 核心板硬件框图.png SOM-TLT3 核心板硬件框图.jpg

      两款核心板均采用全志T3芯片为主控,T3采用四核Cortex-A7架构,集成了Mali400MP2 GPU,高性能,低功耗,T3不仅具有稳定可靠的工业级产品性能,更是达到了车规级的使用要求,搭配上丰富的音视频接口资源,使其适用于车载电子、电力行业、医疗电子、工业控制 、物联网 、智能终端等领域。

      T3芯片框图.png

      与此同时,核心板也经过了专业的PCB Layout和高低温(-40℃~+85℃)测试验证以及不少于3000次的启动测试,核心板在各项测试中核心板表现稳定,可基本满足各种工业应用环境。

      工业温度.png 3000次启动测试.png

      创龙科技将为开发者提供大量开发板的开发资料,资料包括开发板引脚定义、开发板原理图、开发板PCB、芯片Datasheet等内容,为开发者缩短硬件设计周期。开发者使用核心板进行二次开发时,仅需专注上层运用,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研。

      发布在 创龙科技专区
      q1215200171
      budbool
    • 第一视角体验搭载全志T507-H的开发板MYD-YT507H开发板

      如今车规级芯片市场潜力巨大,需求旺盛,芯片都在逐渐走向国产化。本文要介绍的主角是MYD-YT507H开发板,该开发板是米尔科技结合全志国产工业级平台CPU——全志T507-H芯片研制的CPU模组,全志T507-H可广泛用于电力物联网、汽车电子、商业显示、工业控制、医疗器械、智能终端等领域。接下来就让我带大家一起开箱看看吧。

      拿到开发板后,可以看到在板卡包装箱的侧面标签上,有相应板卡型号生产批号等信息。接下来打开箱子,看到的是产品的包装清单,清单内容如下:

      7815690F-83EF-4460-A22F-A050BE196F0E.png

      核心板中的主芯片是国产的全志T507-H处理器,T507-H集成了四核Cortex-A53的CPU和G31MP2的GPU,拥有十分强大的图像处理功能以及多路视频输入和输出的接口,这一特点也在MYC-YT507H开发板上得以体现。T507-H还支持4K@60fps H.265解码,4K@25fps H.264编码,以及绝大部分当前比较流行的视频及图片的解码格式。此次开箱的板卡搭载的是2G的LPDDR4以及8GB的eMMC。

      微信图片_20220909101201.png

      在出厂的时候米尔科技已经为大家烧制好比较完善的Full镜像功能,方便大家拿到板卡后可以快速上手。如果想烧录Ubuntu或其他支持的Linux系统也可以到米尔官方提供的下载链接去下载完善的资料包,里面除了有Full core Ubuntu镜像完善的开发板资料,还有工程师开发笔记以及SDK工具包等等。米尔官网地址如下:

      中文官网:www.myir-tech.com
      英文官网:www.myirtech.com

      微信图片_20220909101208.jpg

      O1CN01rtpWp01XpgGeVtcRw_!!2211453982973.jpg

      微信图片_20220909101214.jpg

      O1CN010tTeVQ1XpgH6pHnOY_!!2211453982973.jpg

      最后给大家演示一下拿到开发板的快速上电步骤:

      1、用Type-C数据线的USB端连接电脑,Type-C端连接MYD-YT507H开发板的Debug调试接口;

      2、选择合适的电源线连接电源适配器与MYD-YT507H开发板的DC电源接口,通电,将拨码开关拨到eMMC启动;

      3、然后在电脑终端上,选择合适的电脑端口,波特率这里可选择115200,然后拨动我们的电源拨码开关,就可以看到我们正在上电了。

      微信图片_20220909101218.jpg

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 【FAQ】全志V853芯片 如何动态打开蓝牙kernel部分的log?

      1.主题
      如何动态打开蓝牙kernel部分的log

      2.问题背景
      产品:扫描笔等Tina产品
      硬件:V853 + XR829
      软件:Tina linux4.9

      目的是为了分析问题,抓取kerne里面/net/bluetooth/、driver/bluetooth/目录下的BT_DBG打印。

      3.解决办法

      • 环境配置
      menuconfig选上CONFIG_DEBUG_FS、CONFIG_DYNAMIC_DEBUG
      
      • 小机端
      1. echo 8 > /proc/sys/kernel/printk  调整printk打印等级为7以上
      2. cat /sys/kernel/debug/dynamic_debug/control | grep bluetooth  查看目前能控制的打印
      3. echo 'file hci_core.c +p' > /sys/kernel/debug/dynamic_debug/control 指将hci_core.c文件的打印打开
      4. echo 'file hci_core.c -p' > /sys/kernel/debug/dynamic_debug/control 指将hci_core.c文件的打印关闭
      5. echo "file net/bluetooth/rfcomm/core.c line 1603 +p" > /sys/kernel/debug/dynamic_debug/control 指将文件net/bluetooth/rfcomm/core.c的第1603行的打印打开
      6. echo 'module $mod_name +p' > /sys/kernel/debug/dynaminc_debug/control 指将某个模块的打印打开。
      

      按照上面的方法配置好后,打开蓝牙调试就可以了,默认会输出到终端上或dmesg方式查看。

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 回复: 修改屏幕显示方向

      https://bbs.aw-ol.com/topic/405/第一次调mipi接口的显示屏-都是什么套路/19?_=1646643614440

      https://bbs.aw-ol.com/topic/1080/在tinav2-2-d1s上面搞lvgl8去调用g2d旋转让lvgl8的软件旋转再见?_=1646643614443

      可以参考这个帖子

      发布在 MR Series
      q1215200171
      budbool
    • 回复: 5分钟开启全志V853平台GUI “Hello World!”之旅


      视频实录->从五分钟缩短至两分钟👍

      发布在 V Series
      q1215200171
      budbool
    • 回复: sipeed的maixsense在arecord里看不到音频设备是什么原因呢

      权限不够 sudo一下

      发布在 A Series
      q1215200171
      budbool
    • 【FAQ】全志 F系列/R系列/V系列 RTOS平台cache操作接口介绍

      1.主题

      全志 F系列/R系列/V系列 RTOS平台cache操作接口介绍

      2.问题背景

      全志F系列/R系列/V系列所采用的RTOS,提供了一些关于 Cache 操作的接口,用于当不同 master 在内存上读写传递时使用,以下是 Cache 操作接口的使用介绍。

      • hal_dcache_clean
        函数原型:void hal_dcache_clean(unsigned long addr, int len);
        函数作用:将[addr, addr + len]地址在 dcache 上对应的数据刷回内存,其在dcache 上数据依旧有效。
        使用场景:提供数据给外设时,需要将停留在 dcache 上的数据写回内存,以让外设可以直接访问内存获取该笔数据(外设访问不会经过 dcache)。

      • hal_dcache_invalidate
        函数原型:void hal_dcache_invalidate(unsigned long addr, int len);
        函数作用:将[addr, addr + len]地址在 dcache 上对应的数据无效。
        使用场景:外设修改数据后,CPU需要将 dcache 上的数据无效,以让CPU可以获取到经过外设修改后的数据。

      • hal_dcache_clean_all
        函数原型:void hal_dcache_clean_all(void);
        函数作用:将所有的dcache 数据全部刷回。
        使用场景:较少使用,一般在动态关闭Dcache 的场景下去使用。

      • hal_dcache_invalidate_all
        函数原型:void hal_dcache_invalidate_all(void);
        函数作用:将所有的dcache 数据全部无效。
        使用场景:除了使能 dcache 的场景外,绝对不允许使用。

      • hal_icache_invalidate
        函数原型:void hal_icache_invalidate(unsigned long addr, int len);
        函数作用:将[addr, addr + len]地址在 icache 上对应的数据无效。
        使用场景:自修改代码指令时,需要无效icache。

      • hal_icache_invalidate_all
        函数原型:void hal_icache_invalidate_all(void);
        函数作用:将所有的dcache 数据全部无效。
        使用场景:自修改代码指令时,需要无效icache。

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 回复: 第二届RISC-V中国峰会议程公布

      开始啦~来看直播

      发布在 公告
      q1215200171
      budbool
    • RISC-V峰会一周年,全志做了这些事

      全球首颗.png

      2021年全志正式发布第一颗RISC-V芯片,并在2021年第一届RISC-V中国峰会上备受关注。如今,恰逢第二届RISC-V峰会。这一年里,我们RISC-V架构的SoC已经在消费、车载和工业等多个领域大规模量产出货。这一年里,我们还做了哪些事情呢?让我们回过头来看一看。

      一、生态拓展

      系统支持

      开放BSP,融入OS建立完善开发生态

      linux1.jpg

      ciw$vk8Q%$6Sobi6ERgtR!hB
      https://www.cnx-software.com/smart-login/
      D1系列以“开放BSP,融入OS”为核心,建立起了丰富的开发生态,目前开发板已经成功适配了全志自研Tina Linux、Ubuntu、RT-Thread Smart、Debian、Fedora、AliOS Things......等数款系统,全志也将携手各厂商、社区、工程师、开源创客等业内伙伴,在开源软硬件适配方向持续深耕,完善开发生态,为开发者提供多元化的选择。

      相关阅读:https://bbs.aw-ol.com/topic/1965/

      基金会官方点赞

      RISC-V国际基金会CEO:Yes!

      640_20_1c5a01ad12.png

      RISC-V国际基金会CEO Calista Redmond 女士转发基于D1系列芯片做的开发板,并配以简短有力的配文,她说:“Yes!”

      相关阅读:https://bbs.aw-ol.com/topic/1334/

      二、走进高校

      同济大学产学研共建课程

      D1-H走进同济大学,助力人才培养创新发展

      全志与同济大学电子与信息工程学院共同开设了基于RISC-V架构芯片的产学研共建课程。课程不仅向同学们介绍了最新最前沿的芯片、半导体、智能感知、人工智能等产业和技术的相关细节,还开设了相关课程设计项目。后续还将辅导同学基于相关芯片进行毕业设计。

      挪威科技大学操系统课程

      挪威科技大学,用D1-H哪吒开设操作系统课程

      3_EA_0524_A_3_C66_454c_9_E55_0133_DB_729_C4_F_497b06eec3.png

      通过RVI全球学术开发板项目,全志哪吒开发板已经进入全球多个国家的多所高校,挪威科技大学的Michael Engel教授就在操作系统的课程中介绍并使用了哪吒D1-H,并在课件中详细展示了如何在哪吒上玩转MIT的xv6 OS。D1-H芯片、开发板在国际上也受到了极大的关注,尤其在教育领域,OS课程,编程,体系架构等课程中都出现了使用哪吒开发板进行教学的案例。

      相关阅读:https://bbs.aw-ol.com/topic/544/

      免费嵌入式课程

      从环境搭建,到教学课程的全栈开源

      STU.jpg

      国内嵌入式软件教育教父韦东山老师团队已针对此D1系列芯片及开发板配套了完整的嵌入式课程,并通过百问网官网、B站等渠道免费开放课程。课程内容包括环境搭建、设备驱动、应用开发、系统开发等多个方面,课程延续了韦老师团队教学方面一贯的优秀质量,实现真正的普惠教育,实现从指令集-开发板-教学课程的全栈开源。

      相关阅读:https://bbs.aw-ol.com/topic/1246/

      课程试验箱

      携手华清远见,推出高校实验室嵌入式实验箱

      D1GDRV.jpg

      单板已不能满足日益增长教学的需求,华清远见携手全志推出了整套实验箱并部署于各大高校实验室,D1-H的使用极大地提升国内高校嵌入式教育的国产化程度,让课程和实验都在自主可控的科研环境下进行,未来全志将继续积极助力高校科研和教育行业,促进产学研合作。

      相关阅读:https://bbs.aw-ol.com/topic/1162/

      三、创客伙伴们

      芒果派-哪吒MQ

      D1-H哪吒MQ,麻雀虽小五脏俱全

      mango.png

      芒果派-哪吒MQ(MangoPi-Nezha MQ)是芒果派(MangoPi)针对全志D1s设计的小型RISCV-Linux原型板,一体化极简设计,可以应用于屏显类AIoT产品。得益于D1s芯片、DSI接口的强大功能加持,也是赋予了麻雀点屏神器的头衔,板载WiFi以及双Type-C的接口也显示出紧跟潮流的设计理念,紧跟潮流的同时也保留了芒果派一贯的优良传统,独立BOOT按键、超高集成度......都是麻雀虽小,五脏俱全的最佳佐证。

      相关阅读:https://bbs.aw-ol.com/topic/793/

      Sipeed哪吒计算条

      为智能家居提供,高性价比的RISC-V算力

      计算条2.png

      D1-H哪吒计算条(D1-H Nezha Compute Modul)是矽速科技(Sipeed)基于全志D1-H芯片定制的AIoT计算模块,通过插卡式模块化的设计将全志D1-H芯片的优秀RISC-V算力和丰富的功能赋能到底板/设备上。可以应用于模块化AIoT产品开发生产。D1-H哪吒计算条将以普及型价格推广RISC-V生态,目标是让RISC-V开发不再困难。

      相关阅读:https://bbs.aw-ol.com/topic/633/

      便携计算机

      基于全志D1-H芯片,首台64位RISC-V便携式计算机上市

      640_4_7aff459d01.png

      在实际应用方面,基于D1-H生态开发板的第一款RISC-V便携式计算机也已经正式上市。该产品由技术开放社区Clockwork公司推出,也是全球首台64位RISC-V便携式计算机。

      这款RISC-V便携式计算机一经推出便受到了RISC-V International CEO Calista Redmond 女士的青睐,“RISC-V生态快速发展,并可为开发者提供低成本且便捷易用的64 bit的RV终端。”

      相关阅读:https://bbs.aw-ol.com/topic/1223/

      开源创客DIY

      大二学生DIY RISC-V开发板,获阿里批量采购订单

      640_19_e06dd39c3d.jpg

      全志在线开发者社区吸引了一众优秀开发者聚集于此,其中一位00后开源创客基于全志D1s芯片设计并制作了一款RISC-V开发板,目前该开发板已经获得了阿里等多家知名科技公司的批量采购订单,将会被用于嵌入式系统的研究和IoT产品的研发。

      相关阅读:https://bbs.aw-ol.com/topic/370/

      四、生态活动

      应用创新大赛

      D1-H系列产品助力,“玄铁杯”第二届,RISC-V应用创新大赛火热进行

      B27D58B7-C0FD-4bb9-98A2-9911DD06C40B.png
      由芯片开放社区(OCC)主办的“玄铁杯”第二届RISC-V应用创新大赛已有1300+开发者基于全志D1-H哪吒和Sipeed Lichee D1-H DocK Pro两款开发板提交了300+份创意方案,方案从Linux和RTOS两种类型的操作系统出发,衍生出工业机器人、视觉及可穿戴设备、社区养老以及车载设备等时下最火热的赛道方案,赛事火爆程度可见一斑。

      相关阅读:https://bbs.aw-ol.com/topic/1493/

      云栖大会

      全志与世界共享,RISC-V探索之硕果

      云溪大会.jpg

      全志在“RISC-V创新应用论坛”中以“RISC-V芯片架构与应用”为主题进行了分享,会上详细介绍了全志的RISC-V产品化探索之路,同时也以“RISC-V探索之路,AIoT时代势如破竹”为题,着重介绍了全志推出的RISC-V芯片及开发板——全志D1-H以及D1-H哪吒开发板。
      关于未来发展,RISC-V的特点十分匹配时代需求,进步快速明显,机遇与挑战同在,未来任重道远,全志会持续专注智能终端,结交和凝聚生态伙伴,联合创新力量,用芯、用应用、用实践,助力RISC-V的产业化发展!

      发布在 公告
      q1215200171
      budbool
    • 回复: 第二届RISC-V中国峰会议程公布

      下午两点全志科技线上分享地址:
      B站:https://live.bilibili.com/10339607
      电子发烧友:https://t.elecfans.com/live/2096.html

      发布在 公告
      q1215200171
      budbool
    • Ubuntu官方发布适配全志D1-H哪吒开发板的镜像

      Ubuntu发行商Canonical近日官方发布了适配全志D1-H哪吒开发板的Ubuntu镜像,旨在为开发者提供稳定的底层框架,让开发者可以专注于核心应用程序的开发。

      官方原文:https://canonical.com/blog/canonical-enables-ubuntu-on-allwinners-nezha-risc-v-boards

      开发者可以直接到Ubuntu官方网站获取镜像文件及安装指南。

      下载链接:https://ubuntu.com/download/risc-v

      微信图片_20220823085813.jpg

      微信图片_20220823090612.png

      此次发布的镜像是Ubuntu Severt 22.04.1版本,该版本的移植适配工作由 Canonical、阿里平头哥以及全志共同完成。

      微信图片_20220823090615.jpg
      D1-H哪吒运行Ubuntu Server

      Ubuntu是最受欢迎的开源操作系统之一,其稳定且可靠的特性吸引大部分开发者选用其作为开发时的首选OS。RISC-V架构在近些年的时间里飞速发展,从低端微控制器到高端服务器级处理器皆可发现用RISC-V架构进行部署的应用。开源软件搭配上开源硬件,让免费且可扩展软硬件的自由度迈上新的台阶。

      D1-H哪吒开发板距发布至今已有超过一年的时间,全志以“开放BSP,融入OS”为核心,建立起了丰富的Linux开发生态,目前开发板已经成功适配了全志自研Tina Linux、Ubuntu、RT-Thread Smart、Debian、Fedora......等数款系统,全志也将携手各厂商、社区、工程师、开源创客等业内伙伴,在开源软硬件适配方向持续深耕,完善开发生态,为开发者提供多元化的选择。

      发布在 MR Series
      q1215200171
      budbool
    • 回复: D1-H 超频 1.68GHz 测试,提升 67% CoreMark 跑分,ncnn 增速 24%

      已加入保修黑名单

      发布在 MR Series
      q1215200171
      budbool
    • 【FAQ】全志V853芯片 烧录spinor烧录器固件方法

      1.主题

      v85x/v83x 烧录spinor烧录器固件方法

      2.问题背景

      产品:spinor 烧录
      硬件:v83x / v85x

      • 什么是spinor烧录器固件?
        烧录器固件就是就是在spinor flash上从地址start(0x00) ~ end 的二进制数据文件。

      • 哪些场景会使用烧录器固件?
        ①工厂会使用烧录器工具多一点,在贴片前,使用烧录器固件批量给多个spinor烧录固件。烧录完成后再贴片;
        ②开发的同学有些也喜欢烧录自己制作的烧录器固件,而非使用全志Tina SDK 编译出来的固件。

      • 如何制作烧录器固件?
        ①从一个已经烧录好的机器读取flash的全部二进制数据出来,形成一个烧录器固件;
        ②只要按照划分好各个分区的起始点,把需要pack后的分区文件按偏移拼接起来。如:

      |boot0|boot_package|mbr|boot|rootfs|env|…
      
      • 如何使用工具烧录spinor “烧录器固件” ?
        请看下面的解决方法:

      3.解决办法

      • 如果制作好了烧录器固件: factory_flash.bin 16M烧录到16M 的spinor 里面。

      • 插入usb到pc,板子进入efex 模式,进入efex 方式有:
        ①系统下输入reboot efex (进入后,打印会输出CCCC)
        ②在uboot输入 efex (进入后,打印会输出CCCC)
        ③按住2,上电开机 (进入后,打印会输出CCCC)
        ④短路flash,让flash读取失败 (进入后,打印会输出CCCC)

      • 下载附件工具sunxi-tester.exe(附件上) ,Pc(windows)上烧录工厂flash固件:
        sunxi-tester-v853-0704.zip

      0bf2a21a51884a33bbc42096c427b3bd.jpg

      • 使用帮助
      Usage: D:\我的文档\桌面\sunxi-tester.exe [options] command arguments… [command…]
      -h, --help Print this usage summary and exit
      -v, --verbose Verbose logging
      -p, --progress “write” transfers show a progress bar
      -l, --list Enumerate all (USB) FEL devices and exit
      spiflash-read addr length file Write SPI flash contents into file
      spiflash-write addr file Store file contents into SPI flash
      

      注意: 此工具sunxi-tester.exe 只能操作spinor flash 前面16M空间。 超过16M无法进行读写。

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 【FAQ】全志V853芯片 适配双目GC2053的操作步骤

      1.主题

      Tina V85x 平台适配双目GC2053的操作步骤

      2.问题背景

      Tina V85x 平台支持多目sensor场景。Tina V85x SDK默认配置一般都是单目sensor,比如SDK V1.0默认是单目GC2053。为方便用户适配双目或多目sensor,下面以V853 perf1方案+双目GC2053为例,介绍适配的操作步骤。

      3.解决办法

      一、双目GC2053适配
      适配双目GC2053主要修改以下几处:

      1、dts设备树
      文件:device/config/chips/v853/configs/perf1/board.dts
      修改:

      • (1)修改csi/isp频率
        为节省带宽,可将csi/isp频率由原来默认的300MHz降至200MHz。
      vind0:vind@0 {
      -			vind0_clk = <300000000>;
      +			vind0_clk = <200000000>;
       			status = "okay";
      
      • (2)修改成离线模式
        因双目场景下,ISP需分时复用,故只能支持离线模式,即work_mode改成1(离线)。
      tdm0:tdm@0 {
      -				work_mode = <0>;
      +				work_mode = <1>;
       			};
       
       			isp00:isp@0 {
      -				work_mode = <0>;
      +				work_mode = <1>;
       			};
       
       			scaler00:scaler@0 {
      -				work_mode = <0>;
      +				work_mode = <1>;
       			};
       
       			scaler10:scaler@4 {
      -				work_mode = <0>;
      +				work_mode = <1>;
       			};
       
       			scaler20:scaler@8 {
      -				work_mode = <0>;
      +				work_mode = <1>;
       			};
       
       			scaler30:scaler@12 {
      -				work_mode = <0>;
      +				work_mode = <1>;
       			};
      
      • (3)修改sensor配置
        sensor0默认是gc2053,无需修改。但是需要修改sensor1的配置为gc2053。修改后,sensor0和sensor1的配置如下:
      sensor0:sensor@0 {
      				device_type = "sensor0";
      				sensor0_mname = "gc2053_mipi";
      				sensor0_twi_cci_id = <1>;
      				sensor0_twi_addr = <0x6e>;
      				sensor0_mclk_id = <0>;
      				sensor0_pos = "rear";
      				sensor0_isp_used = <1>;
      				sensor0_fmt = <1>;
      				sensor0_stby_mode = <0>;
      				sensor0_vflip = <0>;
      				sensor0_hflip = <0>;
      				sensor0_iovdd-supply = <&reg_aldo2>;
      				sensor0_iovdd_vol = <1800000>;
      				sensor0_avdd-supply = <&reg_bldo2>;
      				sensor0_avdd_vol = <2800000>;
      				sensor0_dvdd-supply = <&reg_dldo2>;
      				sensor0_dvdd_vol = <1200000>;
      				sensor0_power_en = <>;
      				sensor0_reset = <&pio PA 18 1 0 1 0>;
      				sensor0_pwdn = <&pio PA 19 1 0 1 0>;
      				sensor0_sm_hs = <>;
      				sensor0_sm_vs = <>;
      				flash_handle = <&flash0>;
      				act_handle = <&actuator0>;
      				status	= "okay";
      			};
      
      			sensor1:sensor@1 {
      				device_type = "sensor1";
      				sensor1_mname = "gc2053_mipi_2";
      				sensor1_twi_cci_id = <0>;
      				sensor1_twi_addr = <0x7e>;
      				sensor1_mclk_id = <1>;
      				sensor1_pos = "front";
      				sensor1_isp_used = <1>;
      				sensor1_fmt = <1>;
      				sensor1_stby_mode = <0>;
      				sensor1_vflip = <0>;
      				sensor1_hflip = <0>;
      				sensor1_iovdd-supply = <&reg_aldo2>;
      				sensor1_iovdd_vol = <1800000>;
      				sensor1_avdd-supply = <&reg_bldo2>;
      				sensor1_avdd_vol = <2800000>;
      				sensor1_dvdd-supply = <&reg_dldo2>;
      				sensor1_dvdd_vol = <1200000>;
      				sensor1_power_en = <>;
      				sensor1_reset = <&pio PA 20 1 0 1 0>;
      				sensor1_pwdn = <&pio PA 21 1 0 1 0>;
      				sensor1_sm_hs = <>;
      				sensor1_sm_vs = <>;
      				flash_handle = <>;
      				act_handle = <>;
      				status	= "okay";
      			};
      
      • (4)修改各video节点的配置
        双目GC2053场景下,可支持的video节点分别为:
        sensor0:video 0/4/8/12
        sensor1:video 1/5/9/13
        故只需修改以上8个video节点的配置即可。修改后的配置如下:
      vinc00:vinc@0 {
      				vinc0_csi_sel = <0>;
      				vinc0_mipi_sel = <0>;
      				vinc0_isp_sel = <0>;
      				vinc0_isp_tx_ch = <0>;
      				vinc0_tdm_rx_sel = <0>;
      				vinc0_rear_sensor_sel = <0>;
      				vinc0_front_sensor_sel = <0>;
      				vinc0_sensor_list = <0>;
      				work_mode = <0x1>;
      				status = "okay";
      			};
      
      			vinc01:vinc@1 {
      				vinc1_csi_sel = <1>;
      				vinc1_mipi_sel = <1>;
      				vinc1_isp_sel = <1>;
      				vinc1_isp_tx_ch = <0>;
      				vinc1_tdm_rx_sel = <1>;
      				vinc1_rear_sensor_sel = <1>;
      				vinc1_front_sensor_sel = <1>;
      				vinc1_sensor_list = <0>;
      				status = "okay";
      			};
      
      
      			vinc10:vinc@4 {
      				vinc4_csi_sel = <0>;
      				vinc4_mipi_sel = <0>;
      				vinc4_isp_sel = <0>;
      				vinc4_isp_tx_ch = <0>;
      				vinc4_tdm_rx_sel = <0>;
      				vinc4_rear_sensor_sel = <0>;
      				vinc4_front_sensor_sel = <0>;
      				vinc4_sensor_list = <0>;
      				work_mode = <0x1>;
      				status = "okay";
      			};
      
      			vinc11:vinc@5 {
      				vinc5_csi_sel = <1>;
      				vinc5_mipi_sel = <1>;
      				vinc5_isp_sel = <1>;
      				vinc5_isp_tx_ch = <0>;
      				vinc5_tdm_rx_sel = <1>;
      				vinc5_rear_sensor_sel = <1>;
      				vinc5_front_sensor_sel = <1>;
      				vinc5_sensor_list = <0>;
      				status = "okay";
      			};
      
      
      			vinc20:vinc@8 {
      				vinc8_csi_sel = <0>;
      				vinc8_mipi_sel = <0x0>;
      				vinc8_isp_sel = <0>;
      				vinc8_isp_tx_ch = <0>;
      				vinc8_tdm_rx_sel = <0>;
      				vinc8_rear_sensor_sel = <0>;
      				vinc8_front_sensor_sel = <0>;
      				vinc8_sensor_list = <0>;
      				work_mode = <0x1>;
      				status = "okay";
      			};
      
      			vinc21:vinc@9 {
      				vinc9_csi_sel = <0>;
      				vinc9_mipi_sel = <0x0>;
      				vinc9_isp_sel = <0>;
      				vinc9_isp_tx_ch = <0>;
      				vinc9_tdm_rx_sel = <0>;
      				vinc9_rear_sensor_sel = <0>;
      				vinc9_front_sensor_sel = <0>;
      				vinc9_sensor_list = <0>;
      				work_mode = <0x1>;
      				status = "okay";
      			};
      
      
      			vinc30:vinc@12 {
      				vinc12_csi_sel = <0>;
      				vinc12_mipi_sel = <0x0>;
      				vinc12_isp_sel = <0>;
      				vinc12_isp_tx_ch = <0>;
      				vinc12_tdm_rx_sel = <0>;
      				vinc12_rear_sensor_sel = <0>;
      				vinc12_front_sensor_sel = <0>;
      				vinc12_sensor_list = <0>;
      				work_mode = <0x1>;
      				status = "okay";
      			};
      
      			vinc31:vinc@13 {
      				vinc13_csi_sel = <1>;
      				vinc13_mipi_sel = <1>;
      				vinc13_isp_sel = <1>;
      				vinc13_isp_tx_ch = <0>;
      				vinc13_tdm_rx_sel = <1>;
      				vinc13_rear_sensor_sel = <1>;
      				vinc13_front_sensor_sel = <1>;
      				vinc13_sensor_list = <0>;
      				status = "okay";
      			};
      

      2、内核配置
      双mipi sensor场景下,ISP分时复用,需要使用TDM,故需打开TDM。
      文件:device/config/chips/v853/configs/perf1/linux/config-4.9
      修改:打开TDM配置

      CONFIG_SUPPORT_ISP_TDM=y
      CONFIG_TDM_LBC_EN=y
      

      3、mpp middleware

      首先,确保mpp配置中选中了gc2053 sensor。检查方法:
      make menuconfig,依次进入配置项:

      Allwinner  --->
          eyesee-mpp  --->
              [*]   select sensor
              [*]     use sensor gc2053
      

      然后,在ISP效果文件中,为第二个sensor添加效果文件配置。
      位置:external/eyesee-mpp/middleware/sun8iw21/media/LIBRARY/libisp/isp_cfg/isp_ini_parse.c
      修改:将原来的两组gc2053_mipi配置分别拷贝一份,然后修改名字为gc2053_mipi_2即可,其他参数不用修改。

      struct isp_cfg_array cfg_arr[] = {
      ...
      
      #ifdef SENSOR_GC2053
      	{"gc2053_mipi",  "gc2053_mipi_isp600_20220511_164617_vlc4_day", 1920, 1088, 20, 0, 0, &gc2053_mipi_v853_isp_cfg},
      	{"gc2053_mipi",  "gc2053_mipi_isp600_20220415_144837_ir", 1920, 1088, 20, 0, 1, &gc2053_mipi_ir_isp_cfg},
      	{"gc2053_mipi_2",  "gc2053_mipi_isp600_20220511_164617_vlc4_day", 1920, 1088, 20, 0, 0, &gc2053_mipi_v853_isp_cfg},
      	{"gc2053_mipi_2",  "gc2053_mipi_isp600_20220415_144837_ir", 1920, 1088, 20, 0, 1, &gc2053_mipi_ir_isp_cfg},
      #endif
      
      ...
      }
      

      按以上步骤修改完成后,需重新编译mpp和固件,命令如下:

      cleanmpp && mkmpp && mp
      

      二、双目GC2053验证
      支持验证双目GC2053的mpp sample有:
      sample_rtsp(支持双目采集+编码+RTSP)、sample_smartIPC_demo(支持双目采集+编码+RTSP+人形检测)、sample_smartPreview_demo(支持双目采集+预览)
      如果不需要RTSP功能,注释掉代码中的宏 #define SUPPORT_RTSP_TEST 即可。

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 第二届RISC-V中国峰会议程公布

      ​3CBFA239-78E1-4e77-B16F-4D7A8BE8D8EA.png

      第二届 RISC-V中国峰会将于2022年8月24日至26日举办,持续三天,峰会将分成两个线上分会场同时进行。

      本届峰会将会包含产业界最新技术及产品发布、学术界前沿成果展示等,共收录技术报告、成果展示、短演讲80余个。

      全志科技产品研发中心总经理黄少锐也将以“RISC-V音视频计算芯片的应用与探索”为题,在8月24日周三的下午,于分会场A进行线上主题演讲,欢迎感兴趣的朋友前来交流探讨。

      hsr2.jpg

      以下为峰会的完整议程时间表:

      640.jpg640 1.jpg

      ​

      发布在 公告
      q1215200171
      budbool
    • 回复: 【资源汇总】V853开发板成果汇报

      入门上手 ——《全志V853开发板——构建编译与固件烧录篇》

      指路链接:https://bbs.aw-ol.com/topic/1773/

      带大家详细走一遍环境构建及Tina的烧录过程

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【资源汇总】V853开发板成果汇报

      案例分享 ——《RTSP推流demo》

      指路链接:https://bbs.aw-ol.com/topic/1705/

      准备做一个RTSP推流demo,懂的都懂。
      我不懂,只能移植现成的。 LIVE555 探索一波!

      基本思路:客户端连接 -> 调用v4l2 获取摄像头yuv->H264编码器->喂流

      qq图片20220730154427-resized.png

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【资源汇总】V853开发板成果汇报

      PCB设计 ——《新人新画的853板子,zero尺寸0.45/0.2孔》

      指路链接:https://bbs.aw-ol.com/topic/1801/

      3ac9152f-30e7-4c53-bdec-bd0a109db3f6-image-resized.png

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【资源汇总】V853开发板成果汇报

      PCB设计 ——《Porject Yosemite - 基于全志V853的开发板》

      指路链接:https://bbs.aw-ol.com/topic/1389/

      61d16011-6feb-4973-946f-a49a1ab6475d-image.png

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【资源汇总】V853开发板成果汇报

      案例分享 ——《LVGL NES 模拟器》

      指路链接:https://v853.docs.aw-ol.com/gui/lvgl_nes/

      lv_nes 是一个使用触摸屏游玩 NES 游戏的演示包。采用了最简单最基础的 NES 模拟器实现方式,运行较为卡顿,不过也更容易理解 lvgl 系统的相关操作实现。

      2022-07-22-15-29-39-lQDPJxaE6C2mq3TNAjjNAvSw1lk25csclR0C2tIv8oDKAA_756_568.jpg

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【资源汇总】V853开发板成果汇报

      案例分享 ——《移植基于 LVGL 的 2048 小游戏》

      指路链接:https://bbs.aw-ol.com/topic/1879/

      2022-07-18-14-47-19-lQDPJxaBvZoKbvPNC9DND8CwaCpI77wfq4cC1aIjrECqAA_4032_3024.jpg

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【资源汇总】V853开发板成果汇报

      案例分享 ——《QT编译测试》

      指路链接:https://bbs.aw-ol.com/topic/1836/

      记录一下自己交叉编译QT的过程,目前来说再体验了初次编译镜像之后,编译这个QT还是算比较快捷的,因为该有的库都安装完成了。

      dbd794f4-c66f-4eea-9a95-922cbcb454e7-image (1).png

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【资源汇总】V853开发板成果汇报

      案例分享 ——《火影忍者结印手势识别器——人人都是copy ninja》

      指路链接:https://bbs.aw-ol.com/topic/1712/

      首先由摄像头捕获图像,再由V853搭载的NPU配合关键点检测的手势识别算法来AI识别手势,最后在屏幕上播放手势对应技能的动画,通过识别结印手势判断用的忍术是什么,这样人人都可以当copy ninja卡卡西咯。

      D41EC4D3-F7B4-4652-8D99-4D6E848CBB29.png

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【资源汇总】V853开发板成果汇报

      案例分享 ——《AI生成山水画,每一幅都是世间独一无二》

      指路链接:https://bbs.aw-ol.com/topic/1715/

      只要输入任意字符串,这个AI便会生成一幅全新的画作,每一幅都是世间独一无二的,就像是开山水画盲盒。

      而完成这些的核心代码都是H5纯手写的,没有用到第三方库,整个文件大小不过100多K。这样一个“简简单单”的程序,再加上一块V853开发板,就也能轻松渲染出一幅独一无二山水画,若是再心灵手巧一点,把它做成一个电子相框裱起来挂在工位上,陶冶情操,岂不美哉。

      9315D34F-FBCE-4ee2-86C5-C234B051E9D4.png

      发布在 V Series
      q1215200171
      budbool
    • 【资源汇总】V853开发板成果汇报
      点亮技能 开发者 简介
      AI生成山水画,每一幅都是世间独一无二 DOT小文哥 只要输入任意字符串,这个AI便会生成一幅全新的画作
      火影忍者结印手势识别器——人人都是copy ninja A.I.Unicorn 首先由摄像头捕获图像,再由V853搭载的NPU配合关键点检测的手势识别算法来AI识别手势,最后在屏幕上播放手势对应技能的动画,通过识别结印手势判断用的忍术是什么
      QT编译测试 liuxingkeji 记录一下自己交叉编译QT的过程,目前来说再体验了初次编译镜像之后,编译这个QT还是算比较快捷的,因为该有的库都安装完成了。
      移植基于 LVGL 的 2048 小游戏 YUZUKITSURU 2048 demo
      LVGL NES 模拟器 YUZUKITSURU 韩国开发者基于D1s做的板子,看样子是想做一个便携式的视频播放类的东西
      Porject Yosemite - 基于全志V853的开发板 YUZUKITSURU 在PCB DIY
      新人新画的853板子,zero尺寸0.45/0.2孔 CKH123 PCB DIY
      RTSP推流demo TEVET 基本思路:客户端连接 -> 调用v4l2 获取摄像头yuv->H264编码器->喂流
      全志V853开发板——构建编译与固件烧录 RiceChen 带大家详细走一遍环境构建及Tina的烧录过程
      发布在 V Series
      q1215200171
      budbool
    • 【FAQ】全志V853芯片FAQ汇总(你不知道的和你想知道的的这里都有)

      01、【FAQ】全志V853芯片 如何解决getevent运行出错,报错为“could not add watch for /dev/input”的问题?
      02、【FAQ】全志V853芯片 Tina获取各个分区编译好后的分区镜像文件[脚本]
      03、【FAQ】全志V853芯片 如何支持ssh功能?
      04、【FAQ】全志V系列芯片 如何生成拍照缩略图和视频缩略图?
      05、【FAQ】全志V853芯片 swap功能简介与tina上swap分区使用方法
      06、【FAQ】全志V853芯片 VE debugfs调试节点信息说明
      07、【FAQ】全志V853芯片 编码P帧帧内如何刷新功能检查?
      08、【FAQ】全志V853芯片 如何在Tina V85x平台切换sensor?
      09、【FAQ】全志V系列芯片 Camera-WDR模式配置指南
      10、【FAQ】全志V853芯片 如何解决开启启动时amixer控件的自动配置问题?
      11、【FAQ】全志V853芯片 如何使busybox syslogd时间戳格式与kernel对齐?
      12、【FAQ】全志V853芯片 如何解决蓝牙扫描期间bluetoothd进程的RssAnon值一直升高?
      13、【FAQ】全志V853芯片 Tina下RTSP环境搭建方法
      14、【FAQ】全志V853芯片 在Tina下E907启动方式的选择
      15、【FAQ】全志V853芯片 如何查看NPU时钟电源配置以及信息?
      16、【FAQ】全志V853芯片 适配双目GC2053的操作步骤
      17、【FAQ】全志V853芯片 烧录spinor烧录器固件方法
      18、【FAQ】全志 F系列/R系列/V系列 RTOS平台cache操作接口介绍
      19、【FAQ】全志V853芯片 如何动态打开蓝牙kernel部分的log?
      20、【FAQ】全志V853芯片 Tina SDK LCD小分辨率DCLK设置问题
      21、【FAQ】全志系列芯片如何把flash擦成空片?
      22、【FAQ】全志V853芯片 Tina Linux下网络ADB内存泄露如何修复?
      23、【FAQ】全志V系列芯片 在TinaLinux如何判断安全固件与rotpk.bin是否对应?
      24、【FAQ】全志V85x芯片 快起方式下如何配置isp led?
      25、【FAQ】全志V85x芯片 如何放开快启方案的打印?
      26、【FAQ】全志V85x芯片 OTA升级失败出现"Found installer for stream recovery ubivol"以及"cannot write 16384 bytes: Operation not permitted"报错如何解决?
      27、【FAQ】全志V85x芯片 如何使用tiger lcd时lti锐化功能时程序abort?
      28、持续更新........

      发布在 V Series
      q1215200171
      budbool
    • 回复: Linux嵌入式怎么学?

      Linux嵌入式不太懂,有没有人教教我可以怎么学习?

      发布在 灌水区
      q1215200171
      budbool
    • 回复: 【优秀毕设分享】基于全志D1-H和XR806的名贵植物监控装置

      更新一份打包好的源码

      名贵植物监控装置.zip

      • 上位机是一个lvgl工程

      • 下位机的就是xr806鸿蒙的demo,放到ohosdemo里面使用,可以用作参考,用来做物联网开发

      发布在 MR Series
      q1215200171
      budbool
    • 【FAQ】全志V853芯片 Tina下RTSP环境搭建方法

      1.主题

      Tina V85X RTSP环境搭建方法

      2.问题背景

      本FAQ主要介绍Tina V85X上搭建RTSP环境的方法。

      目的
      对于小内存的机器(不支持SD卡扩展),无法存储大文件,需要通过RTSP方式查看编码的结果码流;

      测试和调试时,方便实时查看编码后的码流。

      3.问题描述

      3.1复现步骤

      硬件环境

      • PC主机(台式或笔记本)
      • USB转网口
      • 开发板(支持网口)
      • USB Hub(备选,若PC的USB口够用可不用)

      硬件连接方式
      89cbc0d9b40e4c138ce91ad57d0506af.jpg

      硬件连接好后,在PC命令行(Win+R,输入cmd)中,通过 ipconfig 命令可以查看新加网卡的IP地址和子网掩码(后面配置小机端IP和netmask时需要用到)。

      3.2具体表现

      软件环境

      按前面的硬件环境配置好后,在小机端(开发板)通过命令 ifconfig 查看IP地址发现没有分配。此时,可以临时用 ifconfig 命令配置一下(重启后会失效,需要重配)。

      注意:

      小机端的IP地址配置需要与新加网卡的IP在同一个网段(169.254.234.xxx),子网掩码需要与新加网卡的一致(255.255.0.0)。

      ifconfig eth0 169.254.234.222 netmask 255.255.0.0
      

      另外,通过修改网络配置文件(/etc/sysconfig/network-scripts/ifcfg-xxx)的方式可以永久修改IP,但是当前客户方案不支持这样修改,所以只能采用临时修改的方式。别的方案上可以自行尝试。

      通过adb 将测试demo(支持RTSP)push 到小机端。

      adb push .\sample_rtsp\sample_rtsp /tmp
      adb push .\sample_rtsp\sample_rtsp.conf /tmp
      

      在小机端串口上,执行demo开启测试。

      cd /tmp
      chmod +x sample_rtsp
      ./sample_rtsp -path sample_rtsp.conf
      

      此时,在串口上可以看到RTSP的URL提示,根据当前测试情况选择对应的URL。比如: rtsp://169.254.34.222:8554/ch0 ,可以保存一下,后面使用VLC播放时要用到。

      在PC主机上开启软件VLC(或者PotPlayer),输入RTSP的URL即可实时播放。

      1e8a40f91f844b1c87465635bbba6c6d.jpg

      保存mp4文件
      在VLC播放时,还可以实时保存接收的测试流为mp4文件。

      总结

      通过前面的介绍,可以快速了解RTSP环境搭建的步骤。按照步骤一步一步可以顺利搭建RTSP测试环境,方便测试和调试。

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 【优秀毕设分享】基于全志D1-H和XR806的名贵植物监控装置

      前言

      “42A4D9C6-E89F-43f8-90BA-BE9BC19CE174”为智能对象-1.jpg

      该毕业设计是使用全志D1-H哪吒开发以及XR806开发板,再辅以外围的各种电路和传感器原件,制作而成的一个名贵植物监控装置。

      95BAC021-ED3C-4b1d-8CB2-3FC79EA00ABD.png

      该装置使用了XR806开发板构成一个网络节点,作为采集端,并且还连接了多个传感器进行环境参数的采集,并使用socket服务将采集到的数据发送到服务端。另一边使用了D1-H哪吒开发板作为服务端,D1-H哪吒开发板连接了摄像头实时采集图像,并使用基于yolov5的方法分析叶片状态,判断叶片的健康度并作为服务器,将传感器传回的数据进行分析与显示。服务器根据分析的结果,能够对XR806发出指令,在缺水的时候能够及时补水,光照不足的时候进行补光。

      总1.png

      图片4.png

      技术栈运用

      D1-H开发板负责完成服务器收发信息、信息显示、光照控制、图像处理,涉及技术内容:

      • LVGL图形框架
      • Linux下Socket接口
      • Linux下多线程技术
      • cJSON解析器
      • YOLOV5目标检测
      • ......

      XR806开发板负责完成环境参数采集、光照控制、水泵控制,涉及技术内容:

      • LwIP协议栈
      • IIC总线
      • DHT11单总线
      • PWM调制
      • ADC采集
      • ......

      XR806端设计

      XR806主控的系统由传感器采集部分、电源部分和控制部分组成。传感器部分负责采集环境信息,电源部分主控供电,控制部分则根据系统的信息对特定的环境参数(LED灯,水泵)进行控制。

      1.png

      实物示意图.jpg

      充电电路

      因为电池的电压会随着点亮的变化会有一定幅度的改变,所以需要将其稳定下来才能使用。电源部分就是使用了一个AMS1117芯片,将锂电池输出的不稳定电压稳定到3.3V,给XR806开发板及传感器供电。AMS1117是一个正向低压降的线性稳压器,压降较小。其内部集成了过热保护功能与限流电路,能有效地保护电路的正常运行,是便携式设备稳压器的理想选择。

      图片7.png

      光线、温湿度控制

      补光控制主要使用了PWM调光技术。控制代码主要是控制PWM输出的占空比来调节光照的强度。在XR806中,首先初始化PWM的硬件,使用的是pwm_cycle_mode_Set(0)和pwm_capture_mode_set()函数。函数里主要配置的是相关的初始化结构体参数、PWM的频率、输出模式和占空比。初始化结束后,只要调用设置占空比的函数,即可设置占空比。结合光照传感器的控制,就可以将局部的光强控制在一定的范围内,也就是植物合适的光照。

      补水部分主要配合土壤湿度传感器来进行工作。土壤湿度传感器获取到土壤湿度数据后,XR806中会进行一个判断,如果ADC采集到的电压大于一定的阈值,则启动继电器,驱动水泵进行工作,将水抽到花盆中。而显示屏上,就可以看到土壤上是处于湿润还是干燥的状态。

      DB237D7E-9BE1-491c-A8D1-98F5A211D8DD.png

      温湿度、光照、土壤传感器均连接在XR806上,这里取三组传感器的采集数据与标准仪器采集的数据进行比对,由两个测试点作为对照,测量出两组光照强度。对比可以看出,总体误差不大,满足了装置的要求。

      微信图片_20220728162808.jpg

      D1-H与XR806通信

      白色圆圈.jpg

      TCP服务器的设计主要是能够保证D1-H与XR806稳定地进行连接,并在XR806断开后还能够继续等待XR806的重新连接。这边借鉴了github上的一个开源的socket服务器代码,它使用了多线程的技术,并能够承受住较大的服务器压力,非常适合本装置的使用。

      调试的基本过程如下,首先使用D1-H开发板连接上一个WiFi,然后用XR806也连接上同一个WiFi,在D1-H上启动服务器的代码,然后,启动XR806作为客户端进行连接。经过多次测试,D1-H开发板这边服务器运行非常稳定,下位机断开后会重新等待连接,在下位机重新启动后能非常迅速的进行重连。并且,在Linux下,可以使用system(wifi_info)函数来调用命令行,只需要将命令作为一个字符数组保持,就可以在程序中使用命令行操作,非常方便。本装置中连接WiFi的部分就是用这个方法,调用命令行来连接WiFi的。

      D1-H服务端设计

      D1-H主控的服务端软件设计根据项目所需要的功能分为三大部分。第一部分是图形界面的设计,采用的是LVGL,主要用于显示温度、湿度等数据;第二部分是TCP服务器的设计(已于上一部分介绍),用于上下位机之间的数据传输与通信;第三部分是图像处理部分,使用了YOLOV5+NCNN。

      040A0770-33A3-45cf-868A-E1CC7D4A703F.png

      数据显示界面

      图形界面使用的是LVGL。LVGL的作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C语言编写,具有很强的兼容性(并且与C++兼容),模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计,同时LVGL作为一个图形库,它自带着接近三十多种小工具可以供开发者使用。这些强大的构建块按钮搭配上带有非常丝滑的动画以及可以做到平滑滚动的高级图形,同时兼具着不高的配置要求以及开源属性,成为广大开发者在选择GUI时的第一选择。

      根据系统的需求,图形界面需要能够显示下位机传上来的数据,而LVGL中可以使用文本控件进行数据的显示。显示图片可以使用一个图像控件配合PNG解码器进行显示。首先,需要创建两个基本控件对象,一个用于停靠采集处理后图像的图像控件,一个是停靠数据显示子控件的控件。在图像控件上,停靠了一个图像,即采集处理后的图像;在数据显示区上,放置了一系列的控件来展示环境参数信息;上边还有用于控制光照强度和水泵的开关。

      LVGL.jpg

      图像处理

      图像处理部分主要是YOLOV5的使用。使用之前,首先要训练针对特定场景的模型。首先需要创建自己的数据集,数据集分为两个部分,图像文件和标签文件。图像文件就是包含了待检测目标部分的图片和不带待检测目标的图像,分别作为正负样本进行训练。标签文件包含了检测目标的信息,标签文件的形式如下表4.2所示。一行数据代表了图像中的一个目标,若文件中含有多行数据,则表明图像中有多个目标。标签文件需要自己对需要检测的目标做标注。

      79F3E3BD-6B21-4c81-AFF8-08AE4E12A35B.png

      有一个比较特别的是,YOLOV5的标签格式是txt后缀的,不是我们常见的xml格式后缀的,需要自己编写代码进行转换。准备好了图像和标签后,还需要保证每个标签与图像的名称一致。准备就绪后,就可以调用train.py文件进行训练。在训练的时候,需要指定一些参数,如下图所示

      E54A0F8E-B65F-481e-8B40-C02AC54D7C9B.png

      启动训练后,电脑会自动开始训练。训练完成后,我们可以看到目标训练结果保存的位置,有一个pt格式的文件。然后可以用detect.py文件来做一个测试,将加载的权重文件换成刚刚训练结束生成的权重文件。detect程序会使用这个文件进行检测,最后会输出一张结果图。从结果图中就可以看出目标检测的结果。

      毕设开题PPT、答辩PPT、论文全文及相关源码将在全志在线开发者社区开源
      毕设开题PPT、答辩PPT、论文全文及相关源码将在全志在线开发者社区开源
      毕设开题PPT、答辩PPT、论文全文及相关源码将在全志在线开发者社区开源
      毕设开题PPT、答辩PPT、论文全文及相关源码将在全志在线开发者社区开源
      毕设开题PPT、答辩PPT、论文全文及相关源码将在全志在线开发者社区开源

      发布在 MR Series
      q1215200171
      budbool
    • 【FAQ】全志V853芯片 如何查看NPU时钟电源配置以及信息?

      [KERNEL_DIR]/arch/arm/boot/dts/sun8iw21p1.dtsi

      npu: npu@03050000 {
          compatible = "allwinner,npu";
          reg = <0x0 0x03050000 0x0 0x1000>;
          device_type = "npu";
          dev_name = "npu";
          interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
          clocks = <&clk_npu>,
              <&clk_pll_npux4>;
          clock-frequency = <504000000>;
          interrupt-names = "npu";
          iommus = <&mmu_aw 6 1>;
          status = "okay";
          power-domains = <&pd V853_PD_NPU>;
      };
      

      一:如何使能电源控制以及电源状态确认
      在dts确认配置power-domains后,电源默认打开,如果NPU模块电源需要关闭,需要内核支持CONFIG_SUNXI_POWER_DOMAINS=y;不用的时候应用层软件会默认将其关闭;

      root@TinaLinux:/# echo 0x070010a0,0x070010ac > /sys/class/sunxi_dump/dump && cat
       /sys/class/sunxi_dump/dump
      
      0x070010a0: 0x00000002 0x00020000 0x00000000 0x00000000
      

      如上为电源处理关闭状态

      echo 0x070010a0,0x070010ac > /sys/class/sunxi_dump/dump && cat
       /sys/class/sunxi_dump/dump
      
      0x070010a0: 0x00000001 0x00010000 0x00000000 0x00000000
      

      如上电源处于开启状态

      二:如何配置支持的频率

      clock-frequency = <504000000>;代表现在设置的频率为504M;客户请严格按照原厂建议配置,或直接默认配置,勿随意更改其频点;

      clocks = <&clk_npu>,<&clk_pll_npux4>;前面为模块时钟,后面为父时钟;

      在[KERNEL_DIR]/drivers/clk/sunxi/clk-sun8iw21_tbl.c中有如下table代表目前所支持的频点;

      /* PLL_NPU(n, d1, freq)	F_N8X8_D1V1X1 */
      struct sunxi_clk_factor_freq factor_pllnpux4_tbl[] = {
      PLLNPU(24,     1,      300000000U),
      PLLNPU(40,     1,      492000000U),
      PLLNPU(20,     0,      504000000U),
      PLLNPU(25,     0,      624000000U),
      PLLNPU(28,     0,      696000000U),
      PLLNPU(41,     0,     1008000000U),
      PLLNPU(57,     0,     1392000000U),
      };
      配置规则为:
      npu4x的计算公式为:24M * (N+1) / (M+1)N:0-254M:0-1
      在clk-sun8iw21_tbl.c中截图部分添加新的频率组即可
      如:492PLLNPU(40,     1,     492000000U),24*(40+1)/(1+1)= 492
      

      通过clk_summary我们可以看到配置是否生效

      root@TinaLinux:/# cat /sys/kernel/debug/clk/clk_summary
       pll_npux4                             0            2   504000000          0 0
             npu                                0            1   504000000          0 0
      

      当然我们也可以从probe的打印看到时钟的相关配置

      [  843.717406] Want set pclk rate(504000000) support(504000000) real(504000000)
      [  843.725445] Want set mclk rate(504000000) support(504000000) real(504000000)
      

      三:怎么用命令修改时钟的频率

      reboot uboot
      #等待其处于uboot中后:
      fdt list /soc/npu
      fdt set /soc/npu clock-frequency <696000000>
      fdt list /soc/npu
      save
      boot
      
      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 【FAQ】全志V853芯片 如何解决蓝牙扫描期间bluetoothd进程的RssAnon值一直升高?

      问题背景

      系统平台:Tina
      硬件平台:R818、R329、R328、R528 …
      模组:XR829、XR819S …

      问题描述

      客户反馈板子压测BLE扫描,不停止,bluetoothd进程RSS值一直升高。客户怀疑是内存泄露。

      问题分析

      1.该问题是用户一直扫描,导致RSS值升高,这个升高是合理的,因为每扫描到一个设备就会malloc一部分空间,期间不会释放该部分空间,只有在停止扫描3min后,才会一次性释放掉(bluez设计如此,3min的定时器清除暂存的扫描信息)。
      2.在实际测试,会发现3min停止扫描后,RSS值并没有变小。解释:malloc时空间过小,不超过一定阈值时,是采用 sbrk方式,其在用户释放之后 ptmalloc 对这块内存进行重新管理利用,进程依然持有这块内存。其属于glibc 内存池。
      3.测试1:修改M_MMAP_THRESHOLD: mmap 内存分配阈值为16B,测试到停止扫描rss的值会降低。
      4.测试2:脚本压测循环打开扫描15s–关闭扫描40s。压测3天,rss值不会增加。

      问题总结

      该问题澄清不是内存泄漏,是bluez机制如此,等停止扫描再一起释放。释放后的内存不会立即归还系统,所以不会体现在rss值上,属于进程循环使用的内存。

      解决办法

      • 方式一:客户不能一直扫描,应用层要扫描一段时间后,停止扫描一下,再启动扫描,要给bluetoothd一个释放的机会。就像bluetoothctl一样,执行scan on看起来是一直在扫描,实际上是做了一个定时器,一段时间后会停止扫描,再启动扫描。

      • 方式二:如果客户不通过dbus的扫描,而是通过socket直接和内核通信的。可以将bluez中关闭掉存
        储扫描到的设备信息,5.38版本不需要修改,设计就是这样,5.54及以上的版本需要修改。修改位置:
        src/adapter.c

      71a409c173364f3c83c923befd07ee34.jfif

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 【FAQ】全志V853芯片 如何使busybox syslogd时间戳格式与kernel对齐?

      问题背景

      部分客户使用busybox syslogd作为产品的日志管理系统,syslogd 默认的时间戳及其格式与kernel不同,在分析启动时间时不便于和kernel对比,因此tina提供了调整busybox日志格式的相关patch,本文就此进行说明。

      问题说明

      • busybox 默认时间戳是通过 time() 函数获取的(日历时间),并将其转换成如下格式
      Jan  1 00:58:45 procd: - shutdown -
      Jan  1 08:58:45 bluetoothd[1587]: Exit
      
      • 而 kernel 的时间戳是通过 local_clock 获得的,最终来源于 sched_clock,由 arch_timer 驱动的,可达 ns 级。 kernel 在输出 msg 时,会在 printk_log 结构中添加时间戳,最终被转换为如下格式:
      [    0.323034] pwm module init!
      [    0.327689] sunxi-pm debug v3.10
      
      • 由上可知,有两点区别:
        busybox 输出的是日历时间,受RTC,NTP等影响,会UTC时间同步。 而 kernel 输出的是系统启动 sched_clock 服务以来的时间。
        busybox 的输出格式带有日期量, 而 kernel 只是启动以来的时间长度值。

      解决方案

      说明
      首先,需要在 busybox 中获取到 kernel 的启动时间,这里我们可采用 clock_gettime 这个函数,该函数支持获取 CLOCK_REALTIME,CLOCK_MONOTONIC,CLOCK_BOOTTIME,CLOCK_PROCESS_CPUTIME_ID等时间值。

      然后,将获取到的时间转换为内核的输出格式。

      步骤

      1, 在 $(TINA_TOPDIR)/package 打附件补丁
      2, 执行 make menuconfig, 按照需要配置目前支持读取 CLOCK_REALTIME,CLOCK_MONOTONIC,CLOCK_BOOTTIME 等时间类型

      Base system  ---> busybox ---> System Logging Utilities  ---> [*] syslogd ---> 
      
      [*]   Support kernel stamp format.
            Choose Time Source (CLOCK_BOOTTIME)  --->
      

      附件:busybox_support_kernel_stamp.diff

      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 【FAQ】全志V853芯片 如何解决开启启动时amixer控件的自动配置问题?

      问题

      客户tina-v853-perf1板开机后,使用aplay, arecord等工具播放或采集音频失败。或者app直接调用snd_pcm_open()打开pcm设备,

      原因分析

      没有配置amixer控件建立通路,比较关键的控件是“MIC1 Switch”,必须配置为1,以打开通路。

      解决办法

      在开机启动时自动配置好amixer控件,避免用户自己手动配置amixer控件。有几种方式可选。

      • 在开机启动的脚本rc.final中,配置amixer控件。
      amixer cset name='MIC1 Switch' 1
      

      但是如果在编译固件时没有编译alsa-utils,那么固件中没有amixer,就不能使用这种方式了。

      • 在alsa配置文件asound.conf中使用hooks插件。
        tina-v853的perf1工程,asound.conf的路径是:target/allwinner/v853-perf1/busybox-init-base-files/etc/asound.conf。
      pcm.CaptureMic {
          type hooks
          slave.pcm "hw:0,0"
          hooks.0 {
              type ctl_elems
              hook_args [
                  {
                      name "MIC1 Switch"
                      preserve true
                      optional true
                      value 1
                  }
              ]
      
          }
      }
      

      如上代码,如果app打开的节点是pcm.CaptureMic,那么在asound.conf中定义它为hooks类型,然后把需要配置的amixer控件作为参数写进结构体中。这样在这个node被打开时,就调用一些hook函数,配置hooks里面指定的amixer控件。

      关于hooks类型的插件的说明,可以参考 https://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html 的"Plugin: hooks"。

      • 在代码中打开amixer控件并配置。
        tina-v853-perf1使用的是这种方式,所以需初始化mpp平台后,amixer控件才被配置好。
      for (elem = snd_mixer_first_elem(mixer->handle); elem; elem = snd_mixer_elem_next(elem)) 
      {
          snd_mixer_selem_get_id(elem, sid);
          //snd_mixer_selem_set_playback_volume_range(elem, AUDIO_VOLUME_MIN, AUDIO_VOLUME_MAX);
          //snd_mixer_selem_set_capture_volume_range(elem, AUDIO_VOLUME_MIN, AUDIO_VOLUME_MAX);
          // open lineout and mic switch
          const char *elem_name = snd_mixer_selem_get_name(elem);
         alogv("alsa_elem:%s",elem_name);
      
          if ( !strcmp(elem_name, AUDIO_ADC_MIC1_SWITCH) ) 
          {
              snd_mixer_selem_set_playback_switch(elem, 0, 1);
          } 
          else if ( !strcmp(elem_name, AUDIO_ADC_MIC2_SWITCH) )
          {
              snd_mixer_selem_set_playback_switch(elem, 0, 0);// disable mic2 by default
          }
          else if(!strcmp(elem_name, AUDIO_LINEIN_SWITCH))
          {
              snd_mixer_selem_set_playback_switch(elem, 0, 0);
          }
          else if (!strcmp(elem_name, AUDIO_LINEOUT_VOL)) 
          {
              // lineout volume. 0x1f~0x02 : 0dB~-43.5dB, 1.5dB/step. 27 : -6dB.
              // user had better not change this ctrls, nor will cause wave distort!
              long vol_val = 27;
              snd_mixer_selem_set_playback_volume(elem, 0, vol_val);
              alogd("set playback vol_val to value: %ld", vol_val);
              aoVolume = 100*vol_val/AUDIO_VOLUME_MAX;
              if (aiDevEnable) {
                  aioDebugUpdataFlag |= aoVolumeFlag;
              }
          }  
          else if (!strcmp(elem_name, AUDIO_LINEOUT_SWITCH))
          {
              snd_mixer_selem_set_playback_switch(elem, 0, 1);
          } 
          else if (!strcmp(elem_name, AUDIO_LINEOUT_MUX))
          {
              snd_mixer_selem_set_enum_item(elem, 0, 1);    // increase play volume when amplifier differential input
          } 
          else if(!strcmp(elem_name, AUDIO_PA_SWITCH)){
              snd_mixer_selem_set_playback_switch(elem, 0, 1);
              aoPALevel = 0;
          }
      }
      
      发布在 其它全志芯片讨论区
      q1215200171
      budbool
    • 回复: 【送开发板啦】百问科技基于全志D1-H定制的开发板——东山哪吒STU第一堂系统开发直播课堂

      部分已发布视频课程预览
      74078951-0634-493f-9C49-0025E154E34E.png

      发布在 MR Series
      q1215200171
      budbool
    • 回复: 【送开发板啦】百问科技基于全志D1-H定制的开发板——东山哪吒STU第一堂系统开发直播课堂

      手把手带你玩转东山哪吒STU系列开发板——硬件简述部分
      https://www.bilibili.com/video/BV1cB4y1v71Z?p=2&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=b0f9a9d0a52bf431a0252a7090b3639e

      发布在 MR Series
      q1215200171
      budbool
    • 【送开发板啦】百问科技基于全志D1-H定制的开发板——东山哪吒STU第一堂系统开发直播课堂

      DONGSHANSTU.jpg

      发布在 MR Series
      q1215200171
      budbool
    • 回复: 【V853开发板试用】火影忍者结印手势识别器——人人都是copy ninja

      @a-i-unicorn 整一个大期待✌

      发布在 V Series
      q1215200171
      budbool
    • 回复: 【V853开发板试用】nihui大佬的也收到板子了

      来给大佬 @nihui 老师一键三连
      https://www.bilibili.com/video/BV1UB4y1W7Vy

      发布在 V Series
      q1215200171
      budbool
    • 【V853开发板试用】nihui大佬的也收到板子了


      来看nihui大佬的开箱评测,欢迎给大佬的B站视频一键三连

      发布在 V Series
      q1215200171
      budbool
    • 回复: 全志V853开发板发布!开发板试用同步开放申请!

      👍👍 👍 👍

      发布在 V Series
      q1215200171
      budbool
    • 回复: 订单号1602537027102107792的开发工具包

      https://open.allwinnertech.com/#/sdk/0?menuID=36

      发布在 MR Series
      q1215200171
      budbool
    • 【V853开发板试用】带大家来一次全志V853开发板沉浸式开箱!

      全志V853开发板已于前几日正式官宣上线发布,与此同时全志也为广大开发者提供了V853开发板试用申请的活动,活动问卷仍在持续收集中,欢迎大家继续投递试用申请(据说问卷填的越详细,得到开发板的几率就越大哦)申请结果也将通过邮件通知到大家,请大家稍安勿躁,耐心等待板子。

      V853轮播1.png
      IMG_20220620_143650.jpg

      今天先领着大家跟随已经申请成功并收到开发板的B站UP主“BanGo板狗”一起沉浸式开个箱,还没申请到开发板的也来沾一沾欧皇的好运气,先来浅看一下V853开发套件都包含哪些有意思的东西。

      2AAFB4D8-C04E-4266-9B3A-0E20CDC1E673.png
      B站ID:BanGo板狗 主页


      非官方完整开箱视频
      B站链接:https://www.bilibili.com/video/BV1xa411x72p

      盒子里最让人期待的当然是V853开发板,与以往其他开发板不同的是,V853开发板配置上了高清双目摄像头以及高清屏幕,开箱时也是让人惊呼“分量十足”,全部器件都安装在了一块黑色的亚克力板上,精致get,优雅get,大气get。

      28BB5C5E-08AA-403d-B232-9FD734EA2767.png

      板子的设计也十分巧妙,有白线将板载资源的各个模块细分了出来。

      1E4EEC34-E8FD-4e49-9F3D-8AFA81B7B4C7.png

      V853的板载资源十分丰富,开发板配置了512M DDR以及8G eMMC,集成了LED、WiFi、蓝牙、以太网、音频、屏幕、USB、TF卡等模块。

      228567D3-3F89-4516-9AE7-987FF42072EB.png 97825C2B-5537-4959-B5D5-6687E9D87059.png 0E5E9522-1AB1-4400-9C0F-2B29C84B9F6B.png 0CD495D7-F868-45f5-9BD7-980C278D4950.png
      226F017F-72C0-4fd9-ADE9-35FD2787A63A.png
      EA9393A2-D9D2-4108-9DBA-4102489BB76F.png

      开发套件里还包含了三条线:电源线、串口线和Type-C的数据线。

      A24086D8-A203-4480-8C37-3B6606C74F2B.png A0B17B1D-BFD0-47c3-8D1C-1075E4F1AA29.png 95054177-3F94-464e-9497-7ED1BD7563CF.png

      以上就是V853开发套件所包含的全部内容,V853开发板的试用申请仍在持续进行中,欢迎大家继续投递试用申请。

      v853shi2.jpg

      更多V853开发板,正在路上,敬请期待~

      发布在 V Series
      q1215200171
      budbool
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 2 / 6