导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. aldfaaa
    3. 帖子
    • 资料
    • 关注 7
    • 粉丝 4
    • 我的积分 6728
    • 主题 21
    • 帖子 150
    • 最佳 27
    • 群组 0

    aldfaaa 发布的帖子

    • V853编译yolov5遇到的坑

      一开始系跟着官方教程来走: NPU 转换部署 YOLO V5 模型, 原本YOLO V3一路走下来没什么问题;
      但直到要和C++与OpenCV结合编译出yolov5就开始岔子了:
      32308b26-8eb5-4aab-8741-bc6015938d16-image.png
      然后, 尝试走韦东山的教程, 然而殊途同归走到同一个坑

      坑点

      0fb19b100a8f6685d2f666a9eb71303.png

      简要解决

      1. V853/V851s 增加 OpenCV, FFmpeg 编译包
      2. 配置好menuconfig后, 进入tina-v853-open/openwrt/package/npu/yolov5目录, 然后输入:
      mmo yolov5
      

      正常的话, make过程会下载一些包, 然后就得到了我想要的yolov5了

      发布在 V Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 大佬们,T113-S3的spinand烧录固件失败,进度0%,请问怎么去排查问题

      @wd15365693548 烧录还有USB部分线路是比较高速的, 那部分不稳定也会导致烧录失败噢

      发布在 编译和烧写问题专区
      aldfaaa
      whycan矿工-小叶
    • 回复: 使用tinyvision制作简单的网络摄像机IPCv2

      大佬太强啦!👏

      发布在 V Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 大佬们,T113-S3的spinand烧录固件失败,进度0%,请问怎么去排查问题

      @wd15365693548 那个SPI CLK的33Ω换0欧试试...

      • SPI算是连连看里的最高速线路了, 其实最好蛇形走位等长一下
      • 关键的(高速)通信线路MISO, MOSI, CLK居然做了两个过孔, 实属不应该
      发布在 编译和烧写问题专区
      aldfaaa
      whycan矿工-小叶
    • 回复: 苹果电脑怎么才能烧写程序

      @lanmeng 曾几何时也想用M系列芯片....但一想到要做嵌入式...

      发布在 编译和烧写问题专区
      aldfaaa
      whycan矿工-小叶
    • 回复: 硬核解决全志Melis系统只有LZMA解压缩的问题[工具自制]

      工具代码已开源:
      LzmaLib-aw-melis

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 硬核解决全志Melis系统只有LZMA解压缩的问题[工具自制]

      发现melis里的解压缩过程的解析压缩参数方法里跟lzma官方不一致;
      实际留了5个参数字节只用了前4个....这样会导致某些较大的压缩包解压缩错误
      线索:
      43c5e243-e5a7-4eb4-a795-90420ab63cdc-image.png
      坑点:
      dbc388b2-6bd7-4619-b05d-28b68893e7ba-image.png

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 硬核解决全志Melis系统只有LZMA解压缩的问题[工具自制]

      如题,

      • 端侧仅提供一系列(13年前纯酿的)LZMA解压缩方法:
        6661c680-ebea-4c5a-8d67-5d3a1cf5572d-image.png
        衍生的问题有:

      • 在端侧以外的缺乏工具对一些资源文件进行压缩, 无法很好地利用端侧现有解压API;

      • Melis里的一些已执行LZMA压缩的资源文件无法在端侧以外解压缩, 导致一些系统逻辑不好理解吃透.

      解决

      了解到LZMA其实系7z里用到的算法, 具体就不展开讨论; 以Melis引用的头文件作为线索, 遂在github找到分离的库源码:LzmaLib
      41b15072-b5eb-4cbf-8917-be7562b131b7-image.png
      经过数天魔改代码与验证, 实锤了上述库可用; 于是, 我把缺失的压缩打包方法以及解压方法整合成了在win下可用的工具:

      $ ./aw_lzma.exe
      aw_lzma (method) (args)
      1:convert png to yuyv. aw_lzma 1 xx.png => xx.yuyv
      2:convert png to opa. aw_lzma 2 xx.png => xx.bgd
      3:decompress bgd to fb_file_header and yuyv data.aw_lzma 3 xx.bgd => xx.bin
      4:test compress and decompress.aw_lzma 4 xx.png
      Author:YE 1004707812@qq.com
      

      建议配合rawviewer和winhex工具一起服用.
      7cc35e22-c9fd-482b-b574-1148e44c110f-image.png
      (解压出了开机画面资源图stalogo1.bin)
      工具代码整理后开源, 祝Melis开源之火不灭.

      工具

      aw_lzma_YE.zip

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 驅動程式

      https://www.aw-ol.com/downloads?cat=5

      发布在 其它全志芯片讨论区
      aldfaaa
      whycan矿工-小叶
    • 解决D1s烧录时遇上ZQ校准错误(240欧已接好)

      问题描述

      在sys_config.fex正确配置uart_debug的前提下, 烧录时, 调试串口报ZQ校准错误:
      b59e2366-0660-47b7-a01c-25d364ccdd89-image.png

      • 已确认硬件ZQ脚接入240Ω电阻;
      • 排除了sdk软件层面的问题;

      解决方案

      进一步检查DDR的供电发现:贴片的5819二极管反接了, 没有出发DRC(有可能是器件本身就错的), 导致片上内存LDO供电异常.
      62bf66f9-c3df-4e66-899d-03e16f212872-1f081ed3827883e3a98497d3cd80f00.png

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 全志芯片Tina Linux 修改 UART 引脚、UART端口

      挖一个古早期的修改UART帖😊
      D1s分别在Tina Linx, Melis修改调试串口实录
      https://bbs.aw-ol.com/topic/3194/share/1

      发布在 Linux
      aldfaaa
      whycan矿工-小叶
    • 回复: 求教,如何在D1-H板子上使用RVV指令集

      @ht1123 抱歉, 久等了, 先上传个可以交叉编译的程序:
      d1-baremetal.7z
      😁 😁 😁
      用xfel将bin文件写到0x40000000即可执行. 至于汇编只需要熟练使用工具链参数即可.

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: Gaviar Handheld (小志掌機)

      @steward "爱搞机" QQ群: 139642475
      麻烦司徒高调点跟管理员打招呼~

      发布在 爱搞机专区
      aldfaaa
      whycan矿工-小叶
    • 回复: Gaviar Handheld (小志掌機)

      @steward 我们"爱搞机"小板块背后有着一大班热爱开源掌机的小伙伴社区期待着 司徒大佬 加入, 敢问司徒能加下QQ群吗?😊 😊 😊

      发布在 爱搞机专区
      aldfaaa
      whycan矿工-小叶
    • 回复: Melis4.0测试cedar多媒体解码库,视频和lvgl混合显示

      大佬~必须拉👏 😊

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 可以在這裡寫非全志晶片的文章嗎 ?

      @steward 不知Linus本尊还是开发组曾以为:适配完开源的RISCV应该就不用折腾指令集适配了吧😀

      发布在 爱搞机专区
      aldfaaa
      whycan矿工-小叶
    • 回复: 可以在這裡寫非全志晶片的文章嗎 ?

      司徒已经玩过F133(D1s)了?

      发布在 爱搞机专区
      aldfaaa
      whycan矿工-小叶
    • 回复: 可以在這裡寫非全志晶片的文章嗎 ?

      膜拜司徒大佬~😊 请多指教

      发布在 爱搞机专区
      aldfaaa
      whycan矿工-小叶
    • 回复: 请问一下,f133的Tina系统可以点1920x1080分辨率的mipi接口屏吗?

      微信图片_20230516122017.jpg

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • [V3s]lc-v3s-sdk从spinand启动切换到TF卡启动

      背景

      某宝买的一块V3s板子
      9e2f6d1b-b3d2-4b4d-a1f0-965f25c2d5f1-58e33c7d3b9c63a8f13e934ad1b0caa.jpg
      默认spinand启动, 想切换到从TF卡启动.

      探索过程

      于是把spinand flash先清空一下以排除干扰项, 参考《使用 PhoenixSuit 清空NAND,eMMC,Flash存储器》

      尝试I

      将原来通过PhoenixSuit烧录的镜像(lc-v3s-sdk/tools/pack/cherrypi-v3s-linux.img), 直接用PhoenixCard4.2.7烧录到TF卡, 启动报: 无法启动输出.log
      bc347fd9-2f17-471d-8fe5-25d5c3574c60-image.png

      • 结合日志分析当前遇到什么问题?
        uboot应该应该正常启动; 应该是卡在uboot启动kernel的环节. uboot已经能发现5个mbr分区;
      sunxi flash read: start 18432, sector 128 <=> mmcboot read: start 0x4800, sector 0x80
      

      并且创建hash表, 一切正常;

      注意到, uboot上对fat文件系统操作还算正常; 以下指令均正常

      fatdown - download data to a dos filesystem
      fatinfo - print information about filesystem
      fatload - load binary file from a dos filesystem
      fatls   - list files in a directory (default /)
      
      • 定位错误代码段
      u-boot-2011.09\fs\fat\fat_write.c
      file_fat_read (const char *filename, void *buffer, unsigned long maxsize){
          do_fat_read (const char *filename, void *buffer, unsigned long maxsize, int dols){
              get_vfatname(fsdata *mydata, int curclust, __u8 *cluster,dir_entry **retdent, char *l_name) {
                  debug("Error: VFAT name is too long\n");
      

      分析错误, 有可能指向无法访问一些东西. 这需要我们进一步反推高层调用fat操作的意图, uboot并不太复杂, 所以把关注点放在bootcmd相关的指令上;

      解决方案

      结合打包脚本的意图:
      1b6b0b6d-62ed-453b-a72f-1dca1b8ed3ca-image.png

      分析build_uboot()里的make参数sun8iw8p1_spinand_emmc
      843e45d9-5087-4ac9-bb9d-0f1de6dd7cb4-微信图片_20230516095443.png

      再结合分析uboot启动脚本并捣腾uboot里fat相关的工具, 发现其0:1分区是FAT格式.
      uboot里emmc启动脚本是企图读取0:1分区里的uImage文件; 下图为uboot-env:
      6771a5bb-f555-4c06-8ef0-9214bfe923b0-a8787b0f32d936af65db0c514ef4a73.png

      遂通过TF读卡器接入电脑, 将编译好的uImage复制到该FAT分区---正常启动;
      rootfs也顺利地从/dev/mmcblk0p7读出并加载;

      发布在 其它全志芯片讨论区
      aldfaaa
      whycan矿工-小叶
    • 回复: 全志 D1H 驱动spi oled失败

      [哪吒开发板]Tina Linux SPI主从通信验证实录
      https://bbs.aw-ol.com/topic/3031/share/1

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 作为一个刚接触嵌入式的初学者,全志V853的开发文档在帮了我大忙的过程中,也让像我一样的初学者无力吐槽!

      @lingzhi12321
      2c0557de-eeee-4b9e-a0f2-00c521f58954-image.png

      发布在 V Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【哪吒开发板】Tina Linux SPI主从通信验证实录

      有朋友自行编译slave机发现结构体缺失成员, 发现diff遗漏了头文件的变更:
      aa62853e-98f4-4f6c-ab6e-74603a18559e-image.png
      补上即可.
      需要购买D1H官方哪吒开发板, 可以到我店铺看看😊 :
      小叶芯片开发板店

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 100ASK-V853-PRO开发板支持WIFI和有线网卡

      @baiwen 东山开始进军带ISP的Soc领域了👏 深水区, 人少但很有价值

      发布在 V Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【哪吒开发板】Tina Linux SPI主从通信验证实录

      @sfgy125110 你的从机要烧录从机镜像才行, 或者根据代码差异去修改从机的SPI驱动.

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: D1开发板启动失败无法烧录

      @ht1123

      • 请问是D1H开发板还是D1s开发板?
      • 要烧写的镜像是从哪里得到的?
      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【哪吒开发板】Tina Linux SPI主从通信验证实录

      @sfgy125110 我记得驱动默认是启用了DMA的, 所以你修改CPU接收过程的参数并不会生效. 手册有对两种SPI通信逻辑介绍

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 如何在D1s Tina linux 环境下使用lvgl创建独立应用程序UI

      @lingeasy 我马上就会开源一个基于LVGL项目, 带来以假乱真的光渲效果😀

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: D1-H可以做到4k录像吗

      @godzhou0909

      • 录像是指需要视频编码能力吗? D1H不支持H264硬编码, 但支持H264硬解码.
        可以看看V系列的V853
      • 还有4K摄像头有歧义, 直接说分辨率; 其二, 这么高的分辨率视频数据, USB 2.0的带宽吃得消? 不考虑下mipi CSI?
      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: "RISC-V嵌入式开发线下交流会"4K高清实录

      会后的韦东山老师与笨叔学者的合影
      微信图片_20230410105651.jpg

      嘉宾合影:
      微信图片_20230410105948.jpg

      全场大合照:
      54f6ac40-16fd-4fb5-a56a-286ef56b4ac2-微信图片_20230410105929.jpg

      发布在 灌水区
      aldfaaa
      whycan矿工-小叶
    • "RISC-V嵌入式开发线下交流会"4K高清实录

      2023年4月9日, 深圳OP ACCELERATOR, 百问网联合深圳开源技术服务中心举办了《RISC-V嵌入式开发线下交流会》:
      微信图片_20230409225506.jpg

      就在滨海鹅厂附近 (
      ec36a7ee-e495-4e99-8ee8-2a65a6f877b2-119c5514ac5004bf0ee26cf24b8cf49.jpg

      大会开始前, 琳琅满目的奖品, 开发板和技术书籍:
      20230409142726_IMG_1297.JPG

      20230409142827_IMG_1298.JPG

      韦东山老师的精彩演讲:
      55e7c7a5-34e8-45a9-9773-8248655899ce-c5084135fa217b3cbe8921ff180a909.jpg

      06c62b0d-8fcd-4256-b655-b0078cdeb917-20230409154631_IMG_1300.JPG

      本坛坛主的精彩演讲
      20230409163148_IMG_1302.JPG

      杨源鑫大佬(订阅号: 嵌入式研究院)的分享
      20230409164652_IMG_1304.JPG

      晕哥颜值撑场
      20230409164204_IMG_1303.JPG

      双倍多多冰, 我, 韦东山老师和晕哥的合影:
      20230409174209_IMG_1310.JPG

      现场伙伴提出的部分问题:

      • 应用都需要重新编译一次, 如何构建RISC-V软件生态?
      • 嵌入式Python numpy库存在问题?
      • 各架构的系统性调试技能课程?
      • 为什么MCU开发很少做到"低内聚高耦合"?
      • 实际项目应用中, RTOS和LINUX该如何选择与评估?
      • RISC-V对如航空领域的高可靠的嵌入式开发有什么帮助?
      • 怎么看到RISC-V碎片化问题?
      • 中小学生有没有机会和条件接触, 甚至学习到RISC-V?

      ....

      没提及疑问的可以发帖补充, 懂的大佬恳请慷慨回帖哈~

      发布在 灌水区
      aldfaaa
      whycan矿工-小叶
    • 回复: 全志R128开发板来啦!RISC-V C906 + Arm M33有机结合,支持 Wi-Fi/BT

      搞起来~😊 😊 😊 👍

      发布在 A Series
      aldfaaa
      whycan矿工-小叶
    • D1s分别在Tina Linx, Melis修改调试串口实录

      背景

      硬件小白画了块D1s板子, 调试串口的接线是:

      针脚 功能复用 丝印
      PE08 UART3_TX TX
      PE09 UART3_RX RX

      调通调试串口=硬件Hello world

      Melis玩法

      首先修改了projects/d1s-nezha/configs/sys_config_nor.fex

      @@ -79,9 +79,9 @@ twi_scl         = port:PH14<2><default><default><default>
       twi_sda         = port:PH15<2><default><default><default>
      
       [uart_para]
      -uart_debug_port = 0
      -uart_debug_tx   = port:PE02<6><1><default><default>
      -uart_debug_rx   = port:PE03<6><1><default><default>
      +uart_debug_port = 3
      +uart_debug_tx   = port:PE08<5><1><default><default>
      +uart_debug_rx   = port:PE09<5><1><default><default>
      
       [jtag_para]
       jtag_enable     = 1
      @@ -210,9 +210,13 @@ twi3_sda         = port:PE07<4><1><default><default>
       ;uart configuration
       ;uart_type ---  2 (2 wire), 4 (4 wire), 8 (8 wire, full function)
       ;----------------------------------------------------------------------------------
      -[uart0]
      -uart_tx         = port:PB08<6><1><default><default>
      -uart_rx         = port:PB09<6><1><default><default>
      +;[uart0]
      +;uart_tx         = port:PB08<6><1><default><default>
      +;uart_rx         = port:PB09<6><1><default><default>
      +
      +[uart3]
      +uart_tx         = port:PE08<5><1><default><default>
      +uart_rx         = port:PE09<5><1><default><default>
      
       ;----------------------------------------------------------------------------------
       ;SPI controller configuration
      @@ -743,7 +747,7 @@ vo_vs         = port:PD21<7><0><default><default>
       ;----------------------------------------------------------------------------------
      
       [tv0]
      -used            = 1
      +used            = 0
      
       dac_src0        = 0
       dac_type0       = 0
      @@ -760,8 +764,8 @@ pwm_pin             = port:PD16<5><default><default><default>
       [pwm1]
       pwm_positive        = port:PD02<3><default><default><default>
      
      -[pwm2]
      -pwm_pin             = port:PE08<4><default><default><default>
      +;[pwm2]
      +;pwm_pin             = port:PE08<4><default><default><default>
      
       [pwm3]
       pwm_positive        = port:PD04<3><default><default><default>
      @@ -837,12 +841,12 @@ pwm_positive        = port:PL10<7><0><default><default>
       ;vinc(x)_sensor_list: use sensor list
       ;--------------------------------------------------------------------------------
       [vind0]
      -vind0_used             = 1
      +vind0_used             = 0
       vind0_clk              = 432000000
       vind0_isp              = 322000000
      
       [vind0/csi0]
      -csi0_used               = 1
      +csi0_used               = 0
       csi0_pck                = port:PE02<2><default><default><default>
       csi0_hsync              = port:PE00<2><default><default><default>
       csi0_vsync              = port:PE01<2><default><default><default>
      @@ -850,8 +854,8 @@ csi0_d0                 = port:PE04<2><default><default><default>
       csi0_d1                 = port:PE05<2><default><default><default>
       csi0_d2                 = port:PE06<2><default><default><default>
       csi0_d3                 = port:PE07<2><default><default><default>
      -csi0_d4                 = port:PE08<2><default><default><default>
      -csi0_d5                 = port:PE09<2><default><default><default>
      +;csi0_d4                 = port:PE08<2><default><default><default>
      +;csi0_d5                 = port:PE09<2><default><default><default>
       csi0_d6                 = port:PE10<2><default><default><default>
       csi0_d7                 = port:PE11<2><default><default><default>
      
      @@ -872,7 +876,7 @@ actuator0_afvdd         = "afvcc-csi"
       actuator0_afvdd_vol     = 2800000
      
       [vind0/sensor0]
      -sensor0_used          = 1
      +sensor0_used          = 0
      

      然后发现编译,打包, 启动发现: PE08有输出了, 但是PE09无法输入Console; 遂探寻探寻UART驱动:
      找一下包含uart关键字的文件, 大致推断其驱动源码(有生成.o的大概率就是有效的源码):

      find . -name "*uart*.c"
      ./ekernel/arch/riscv/csp/csp_uart.c
      ./ekernel/drivers/hal/source/uart/hal_uart.c
      ./ekernel/drivers/hal/test/uart/test_uart.c
      ./ekernel/drivers/hal/test/lpuart/test_lpuart.c
      ./ekernel/drivers/test/test_uart.c
      ./ekernel/drivers/drv/source/serial/uart_drv_dms.c
      ./ekernel/drivers/drv/source/serial/uart_drv.c
      ./ekernel/components/aw/multi_console/uart_console.c
      

      追踪UART针脚功能复用的实现, 并反推高层调用链路:

      ekernel/drivers/hal/source/uart/hal_uart.c: uart_pinctrl_init()
      {
          实现了UART针脚的功能复用
      }
      ekernel/drivers/hal/source/uart/hal_uart.c: hal_uart_init(){
          uart_pinctrl_init(..);
      }
      看看谁调hal_uart_init():
      ./ekernel/drivers/drv/source/serial/uart_drv.c: .initialize=hal_uart_init
      根据D1s的BSP层番号:sun20iw1可知:
      ./ekernel/arch/riscv/sunxi/sun20iw1/init.c: sunxi_driver_uart_init(...)
              {
                  123 #ifdef CONFIG_DRIVER_SERIAL
                  124     char uartname[6];
                  125     void sunxi_driver_uart_init(void);
                  126     sunxi_driver_uart_init();
                  127     sprintf(uartname, "uart%d", CONFIG_CLI_UART_PORT);
                  128     rt_console_set_device(uartname);
                  129 #endif
              }
      

      原来还有一个CONFIG_CLI_UART_PORT值给到软件层面的console进行交互!
      再搜CONFIG_CLI_UART_PORT发现: grep -irn "CONFIG_CLI_UART_PORT" .
      .config就有具体的值.
      于是: make menuconfig, 按'/'搜CONFIG_CLI_UART_PORT, 就可以合规的修改串口:
      62821a47-65a9-43a4-8cc3-68114408e932-image.png

      重新编译, 打包, 烧录, 调试串口一切正常.

      Tina LInux玩法

      修改device/config/chips/d1s/configs/nezha/sys_config.fex:

      [uart_para]
      uart_debug_port = 3
      uart_debug_tx   = port:PE08<5><1><default><default>
      uart_debug_rx   = port:PE09<5><1><default><default>
      

      PS: 了解到sys_config.fex会经过转化成二进制文件, 在设备启动时会加载到boot0, 作为参数列表.

      配置linux下的设备树的: device/config/chips/d1s/configs/nezha/board.dts

      /* 修改 */
      uart3_pins_a: uart3_pins@0 {  /* For EVB1 board */
              pins = "PE8", "PE9";
              function = "uart3";
              /* muxsel = <5>; */
              drive-strength = <10>;
              bias-pull-up;
      };
      
      uart3_pins_b: uart3_pins@1 {  /* For EVB1 board */
              pins = "PE8", "PE9";
              function = "gpio_in";
      };
      ...
      &uart3 {
              pinctrl-names = "default", "sleep";
              pinctrl-0 = <&uart3_pins_a>;
              pinctrl-1 = <&uart3_pins_b>;
              status = "okay";
      };
      

      编译, 烧录, 启动发现: 串口没输出; 通过adb确认系统启动成功且PE8, PE9针脚功能配置正确(通过查看寄存器)

      遂思考u-boot的bootargs是否没有配置正确, 发现./lichee/linux-5.4/arch/riscv/boot/dts/sunxi/sun20iw1p1.dtsi里有bootargs踪迹, 遂修改:
      f018ac7a-7e35-4489-9f71-b7a5ec3a2939-image.png

      504287d7-d671-4baa-89ef-7215554cb972-image.png

      编译, 烧录, 启动发现: 只有boot0程序(./lichee/brandy-2.0/spl/nboot/main/boot0_main.c)有输出, 且支持输入验证, 但kernel仍旧没有内容输出.

      思考: 除了"uart"关键字还有"ttyS"关键字也指代串口, 所以在常用的配置目录下搜了一下

      grep -rn "ttyS" ./device/config/chips/d1s
      ./device/config/chips/d1s/configs/default/env_burn.cfg:5:console=ttyS0,115200
      ./device/config/chips/d1s/configs/default/env.cfg:5:console=ttyS0,115200
      ./device/config/chips/d1s/configs/nezha/env.cfg:5:console=ttyS0,115200
      Binary file ./device/config/chips/d1s/bin/u-boot-sun20iw1p1.bin matches
      

      遂修改: ./device/config/chips/d1s/configs/nezha/env.cfg;
      启动系统是有输出!!!完毕撒花:
      b5470778-729f-4ba4-a620-89e8e66eabc3-37a8f1a7fe9cd1d7523365ca8ba3933.png

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: F133用tplayer播放rtsp视频画面会卡住

      @quanzhiddd tplayer程序代码是开源的, 可以进行调试分析, 定位事故代码位置

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【哪吒开发板】Tina Linux SPI主从通信验证实录

      @sfgy125110 你用spidev_test就可以试,10M,5M,25M,50M

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【哪吒开发板】Tina Linux SPI主从通信验证实录

      @sfgy125110 说明不支持该频率. SPI很少用这么速率的通信的, 毕竟用上了4个io

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: uboot下如何设置网络

      挖uboot, 哪个驱动不行调哪里

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【哪吒开发板】Tina Linux SPI主从通信验证实录

      @sfgy125110 能, 但芯片分频器支持的分频数有限. 你可以试出哪个有效

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: D1s使用V2.1版本 tiny SDK中的内核,设备连接w5500 spi wifi,spi通信失败

      @yd_d1s 如果你能贴出spi-sunxi.c, spi-slave-protocol.h的代码差异, 真相就只有一个了

      git diff spi-sunxi_old.c spi-sunxi.c
      git diff spi-slave-protocol_old.h spi-slave-protocol.h
      
      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 适用于D1/D1S/F133/T113的RGB40P转LVDS 30P 2.0mm小板

      @xiaorui 优秀优秀~记录学习

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 编译下 D1s 的 Melis

      在docker(ubuntu:20.04)中编译时, facebuildercmd出现段错误;
      换成了一台Ubuntu 22.04.2 LTS(Linux tao 5.15.0-58 x86_64 GNU/Linux)物理机编译成功;
      原因待查

      发布在 RTOS
      aldfaaa
      whycan矿工-小叶
    • 回复: 求教,如何在D1-H板子上使用RVV指令集

      @noah-yi 晚点分享个xfel跑裸机hello world

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【哪吒开发板】Tina Linux SPI主从通信验证实录

      工具和镜像:
      spidev_test
      tina_d1-h-nezha_uart0_spi_master_slave.zip

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 【哪吒开发板】Tina Linux SPI主从通信验证实录

      背景

      • 主控: D1H
      • 板卡: 两块哪吒开发板(以下简称为主机, 从机)
      • 操作系统: Tina Linux 2.0

      问题

      验证D1H芯片SPI主从机通信.

      硬件接线

      主机SPI 从机SPI
      19 SPI1_MOSI SPI1_MOSI 19
      21 SPI1_MISO SPI1_MISO 21
      23 SPI1_SCK SPI1_SCK 23
      24 SPI1_CE SPI1_CE 24

      SPI概述

      SPI接口是一种高速的, 全双工, 同步的通信总线.
      适配D1H芯片的Tina Linux的BSP-SDK(以下简称SDK)中已包含相关驱动文件: spi-sunxi.c.
      它提供的了仅内核态下主从机的简易通信验证实验, 这或许是考虑到SPI通信速率比较高的特性.
      验证操作

      SPI主机配置

      menuconfig

      在SDK执行完环境变量加载后, 执行:

      /mnt/tina-d1-h$ make kernel_menuconfig
      

      ●开启Device Drivers->SPI support
      ●进入SPI support, 按图示开启:

      a3e582cc-6f51-438d-b11a-3cb23ca9e549-image.png

      设备树

      修改: ./device/config/chips/d1-h/configs/nezha/board.dts
      c4c8f396-f82e-41c2-8984-0a987b241a53-image2.png

      需要根据手册和原理图确认好针脚功能:
      4ac61953-9fca-457c-8e5a-915d37c7ba37-微信截图_20230228111727.png

      SPI从机配置

      menuconfig

      (同SPI主机配置一致)

      设备树

      仅spi_slave_mode设为0, 其余项同SPI主机配置一致. spi_slave_mode = <0>;

      SPI主机收发信息

      按上述配置, 重新编译SDK, 打包, 烧录, 启动设备会出现:

      root@TinaLinux# ls -l /dev/spidev1.0
      crw-------    1 root     root      153,   0 Jan  1 08:00 /dev/spidev1.0
      

      然后将可执行的SPI测试程序(./lichee/linux-5.4/tools/spi/spidev_test)挪到设备上(adb push等)并赋予可执行权限:

      # 主机以10MHz发送(即MOSI)发送16进制数据: 0x01 0x02 0x03 0x04
      ./spidev_test -v -D /dev/spidev1.0 -s 10000000 -p "\x01\x02\x03\x04" 
      # 主机以10MHz发送(即MOSI)发送ASCII字符串数据: "allwinner"
      ./spidev_test -v -D /dev/spidev1.0 -s 10000000 -p  "allwinner"
      spi mode: 0x0
      bits per word: 8
      max speed: 10000000 Hz (10000 KHz)
      TX | 61 6C 6C 77 69 6E 6E 65 72 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __  |allwinner|
      

      注意SPI是同步通信接口, 所以在发送的同时也会接收同样长度字节的数据.
      下文将用到SPI主从通信的一种常见做法: 主机先发指令头, 然后再发指令体以获取从机应答.

      SPI从机收发信息

      spi-sunxi.c中对SPI从机模(SLAVE_MODE)采取了简单的收发验证处理, 具体是创建一个内核线程执行int sunxi_spi_slave_task(void *data), 该函数又被设备中断所控制(当收到SPI数据时).

      • SPI从机接收到数据的主要流程:
        sunxi_spi_slave_task() -> sunxi_spi_slave_handle_head(), 然后:
        若指令头是写操作(0x01), 则执行:sunxi_spi_slave_cpu_rx_config(), 该函数仅是输出写入内容.
        若指令投是读操作(0x03), 则执行:sunxi_spi_slave_cpu_tx_config(), 该函数仅是将收到的指令体的值+0x80, 然后发送(MISO)给主机.

      • 对于从机, spi-sunxi.c能验证SPI通信, 但没有可供用户层直接使用的方法.

      用户层可验证的SPI从机收发方案

      功能设计

      从机安排一块32byte的内存缓存空间(简称"缓存空间")供主机通过指令进行读操作和写操作, 且从机能在用户层对该内存空间访问.

      主要改动

      • spi.c:
        • 增加static struct class_attribute ye_spi_buf_attrs[], 以创建/sys/class/spi_slave目录下的spi_buf文件, 并提供实现了读/写缓存空间的方法.
      • spi-sunxi.c:
        • 使用ye_spi_slave_set_txdata()方法替换sunxi_spi_slave_set_txdata(), 以实现读操作.
        • 修改sunxi_spi_slave_cpu_rx_config()方法, 以实现写操作.

      改动详情请查看: d1h_spi_driver.diff

      使用方法

      写操作: 操作:0x01(写) 地址:0x00 0x00 0x00 指令体长度:0x09
      ./spidev_test -v -D /dev/spidev1.0 -s 10000000 -p "\x01\x00\x00\x00\x09" && \
      ./spidev_test -v -D /dev/spidev1.0 -s 10000000 -p  "allwinner"
      
      读操作: 操作:0x03(读) 地址:0x00 0x00 0x00 指令体长度:0x09
      ./spidev_test -v -D /dev/spidev1.0 -s 10000000 -p "\x03\x00\x00\x00\x09" && \
      ./spidev_test -v -D /dev/spidev1.0 -s 10000000 -p  "\x00\x00\x00\x00\x00\x00\x00\x00\x00"
      
      从机读取缓存空间:
      cat /sys/class/spi_slave/spi_buf
      
      从机写入缓存空间:
      echo "Hello world" > /sys/class/spi_slave/spi_buf
      
      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: RTT D1s RDC2022纪念版开发板开箱使用分享与折腾记录

      @canxuetian 参见大佬~~~写得真不错

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: D1H开机启动项拉不起来

      想开机配置网络和WiFi, 可以修改/etc/init.d/wpa_supplicant文件第48行左右....
      参考:
      Tina通过命令行连接WiFi
      https://bbs.aw-ol.com/topic/396/share/1

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 关于D1的SPI通讯问题

      Mark....正在关注

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 玄铁杯RISC-V大赛『三等奖』智能帘窗

      有想法, Mark一下...

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: lvgl官方表盘项目指针和刻度没有对准,对我这种有严重强迫症的人来说看起来就心痛,不是难受,有能力的大佬修复一下这个bug?

      官方例程lv_example_meter_3.c的钟表里指针采用的是贴图方式, 所以解决思路有两个:

      1. 针对屏幕分辨率, 优化贴图文件(img_hand.c)的样式
      2. 将贴图指针换成普通线段(粗细可调), 只要比的刻度粗一丁点或者把刻度覆盖掉就舒服多了.

      贴出第二种方法变动:(基于lv_port_linux_frame_buffer.git)

      --- a/examples/widgets/meter/lv_example_meter_3.c
      +++ b/examples/widgets/meter/lv_example_meter_3.c
      @@ -32,8 +32,9 @@ void lv_example_meter_3(void)
           LV_IMG_DECLARE(img_hand)
      
           /*Add a the hands from images*/
      -    lv_meter_indicator_t * indic_min = lv_meter_add_needle_img(meter, scale_min, &img_hand, 5, 5);
      -    lv_meter_indicator_t * indic_hour = lv_meter_add_needle_img(meter, scale_min, &img_hand, 5, 5);
      +    lv_meter_indicator_t * indic_min = lv_meter_add_needle_line(meter, scale_min, 5, lv_color_black(), 5);
      +    lv_meter_indicator_t * indic_hour = lv_meter_add_needle_line(meter, scale_min, 3, lv_color_black(), 5);
      

      效果:
      3d5e542e-7738-4d83-9e75-42e0077bbc40-9051d8bca54d37bfb0faaf114e7ea2e.jpg
      结帖撒花✿✿ヽ(°▽°)ノ✿

      发布在 灌水区
      aldfaaa
      whycan矿工-小叶
    • 嵌入式IPC适配USB无线网卡(RTL8188)

      FH8852EV200调试RTL8188

      作者本人转载, 链接:(http://t.csdn.cn/ulDBS)

      坑点

      1. kernel认不出USB
      2. 加载ko出现各种段错误, 没有wlan0
      3. wpa_supplicant连不上wifi...

      kernel认不出USB

      kernel版本:FH885XV200_IPC_V1.1.0_20210716

      检查menuconfig, 开启Device Drivers->USB support下的:!
      在这里插入图片描述
      请添加图片描述

      关注Device Drivers->Network device support下: 貌似没什么值得关注的.
      FH本身的ETH驱动在:

      -> Device Drivers
        -> Network device support (NETDEVICES [=y])
          -> Ethernet driver support (ETHERNET [=y])
          [*]   Fullhan devices
              <*>     FH 10/100 Ethernet driver
              [*]     FH GMAC DMA arbitration scheme
              [ ]     FH Independent Research Ephy
      

      关注Networking support->Wireless:
      请添加图片描述

      注意sdk下kernel的Makefile很刚, make clean会直接删除目录重新解压

      正常加载:USB网卡dmesg应显示:
      请添加图片描述

      加载ko出现各种段错误, 没有wlan0

      FH本身自带了一些USB_WIFI驱动: FH885XV200_IPC_V1.1.0_20210716/board_support/kernel/wifi/usb_wifi/rtl8188FU_linux_v5.3.0.1_28034.20180525

      确保Makefile的platform选择正确.

      调整驱动日志输出等级:
      请添加图片描述
      根据dmesg输出的日志, 认真检查驱动代码. 在接近事故的地方加一些输出.

      深坑

      请注意宏定义是否落实到最终代码!!!

      diff --git a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c
      index 73ccf28..be421cc 100644
      --- a/os_dep/linux/wifi_regd.c
      +++ b/os_dep/linux/wifi_regd.c
      @@ -15,6 +15,10 @@
      +// YE
      +#define CONFIG_IOCTL_CFG80211
      +#define LINUX_VERSION_CODE 264577
      

      修改后, 加载驱动没有出现段错误或其它异常(至少针对驱动v5.3.0.1)....

      wpa_supplicant连不上wifi

      FH自带了一套能跑的工具wpa_supplicant v2.6, 对so有依赖:

      [Requesting program interpreter: /lib/ld-uClibc.so.0]
      Shared library: [librt.so.0]
      Shared library: [libpthread.so.0]
      Shared library: [libc.so.0]
      

      从友商flash里提取一套wpa_supplicant v2.9, 所以没有继续纠结.....能用就行

      [Requesting program interpreter: /lib/ld-uClibc.so.0]
      Shared library: [libm.so.0]
      Shared library: [libc.so.0]
      

      运行方法:

      ./wpa_supplicant -Dnl80211 -iwlan0 -c/custom/wpa_supplicant.conf -B
      

      wpa_supplicant.conf配置文件:

      ctrl_interface=/var/run/wpa_supplicant
      update_config=1
      
      network={
          ssid="test_0"
          psk="8888888888"
      }
      

      关于HS环境下编译wpa_supplicant-0.6.9注意事项

      编译wpa_supplicant-0.6.9时需要依赖openssl-0.9.8r的头文件, 至于链接需要-lcrypto, 可以先找找SDK和工具链里有没有.

      发布在 Linux
      aldfaaa
      whycan矿工-小叶
    • 游戏引擎第一步:D1跑tinyGL

      某天刷文章认识到了一位比肩Linus Torvalds的神人---QEMU, FFMPEG等神器作者法国程序猿Fabrice Bellard, 敬仰之余, 发现他手下有个OpenGL的开源子集实现tinyGL. 粗看代码感觉不算复杂

      恰好手头上有个哪吒D1-H又没有GPU, 就把tinyGL移植了一下, 把牛当马使, 顺便摸摸D1-H性能的天花板.

      先上效果图

      默认分辨率大概47帧左右. (其实如果不搬RGB到fb可以上百帧)

      打满官方MIPI屏分辨率(800x1280), 大概19帧左右.

      运行该程序, D1-H终于有点发烧的感觉了, 也不算烫手.(估计还得再压个tinaplayer硬解4k)

      修改要点

      • 乱七八糟地魔改了一下Makefile, 里面的路径大家自己跟自家用的SDK对一下. ;
      • 顺手牵羊几份SDK里的fbviewer的源码,

      交叉编译

      1. 先make src目录下的源码, 得到库
      2. 再make RawDemos目录下可执行程序

      github有个大伙优化的原始tinyGL原始版: https://github.com/C-Chads/tinygl

      我魔改移植到D1的tinyGL: https://gitee.com/YJHmath/tinygl-d1

      想拿程序去玩的:
      Raw_demos.zip

      坑点

      1. 填-march=native或者-march=rv64imafdc会导致编译出来的程序无法运行, 解决方法: 不填, 让编译器默认.

      2. 因为用了lp64d/libm.a, 所以指定了-mabi=lp64d, 但也不清楚生没生效

      参考

      MCU 上纯软件实现 OpenGL

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: LVGL如何显示摄像头采集的数据?

      @cruise33 LVGL和采集摄像头数据两者不相干; 只是完成了后者可以用前者配合显示

      发布在 V Series
      aldfaaa
      whycan矿工-小叶
    • 回复: V853我们来了!!!

      抢...............沙发!!!!!!!!!!

      发布在 V Series
      aldfaaa
      whycan矿工-小叶
    • 回复: pack 时 ERROR: unable to open file boot-resource.fex

      @chunzhang
      查询./scripts/pack_img.sh发现./tools/pack-bintools/src/fsbuild这个程序是32位的, 所以安装以下组件可解决问题:

      apt-get install lib32z1 lib32z1-dev
      
      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 因为喜欢用ADB,因为不喜欢插拔TF卡,所以D1直接用PhoenixSuit烧录TF(SDNAND)

      要是能不用按任何物理按键,那就可以远程电脑进行烧录了?

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 全志 u-boot.fex 文件的作用

      如果AW有出书, 这部分内容应有一章节

      发布在 编译和烧写问题专区
      aldfaaa
      whycan矿工-小叶
    • 回复: 【小白入手xr806】helloworld踩坑”月“记

      桃花潭水深千尺, 不及小弟赠我情

      发布在 Wireless & Analog Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 请教各位同学,Tina-SDK 如何在uboot下单独更新kernel 设备树文件?

      好强, 好好做笔记

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【硬核干货】V853 Sample MPP软件包,MPP 摄像头测试包

      @qq519472926 在 V853 Sample MPP软件包,MPP 摄像头测试包 中说:

      @yteraa 编译不过,啥情况

      +1, 编译不过

      发布在 V Series
      aldfaaa
      whycan矿工-小叶
    • 回复: Linux嵌入式怎么学?

      只能帮到这里了
      微信图片编辑_20220801112644.jpg

      发布在 灌水区
      aldfaaa
      whycan矿工-小叶
    • 回复: 解决 D1-H & D1s 驱动 RGB LCD(HV)时由于DCLK频率过高导致花屏

      大佬, 方便发一下修改过的源文件吗?

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【V853开发板试用】**pack 时 ERROR: unable to open file boot-resource.fex 的解决办法**

      @bango make只是再编译Tina一次, 你还是没有成功pack.
      正确解决方法是:
      【V853开发板试用】V853编译烧录疑难杂症汇总篇
      https://bbs.aw-ol.com/topic/1740/share/3

      发布在 V Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【V853开发板试用】V853编译烧录疑难杂症汇总篇

      官方文档提供的ubu20.04虚拟机(后称, 官方虚拟机)执行pack出现

      fsbuild: No such file or directory
      

      这是全志的闭源打包工具, 位于: tina-v853-open/tools/pack/pctools/linux/fsbuild200目录下, readelf -h可见

      $ readelf -h fsbuild
      ELF Header:
        Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
        Class:                             ELF32
        Data:                              2's complement, little endian
        Version:                           1 (current)
        OS/ABI:                            UNIX - System V
        ABI Version:                       0
        Type:                              EXEC (Executable file)
        Machine:                           Intel 80386
        Version:                           0x1
        Entry point address:               0x8048870
        Start of program headers:          52 (bytes into file)
        Start of section headers:          33856 (bytes into file)
        Flags:                             0x0
        Size of this header:               52 (bytes)
        Size of program headers:           32 (bytes)
        Number of program headers:         8
        Size of section headers:           40 (bytes)
        Number of section headers:         38
        Section header string table index: 35
      

      居然是个32位程序, 遂参考Ubuntu-64位系统运行32位程序的方法:

      sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386
      sudo dpkg --add-architecture i386
      

      Tina 终(

      发布在 V Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 求助:全志R11编译无法通过

      从原理上看, 是找不到一些方法.
      你说明一下你的环境, 然后尝试换个14.04虚拟机(D1s)进行编译

      发布在 A Series
      aldfaaa
      whycan矿工-小叶
    • 【V853开发板试用】V853编译烧录疑难杂症汇总篇
      • 不要使用过去编译D1s的ubu14.04进行编译.
        会出现找不到__NR_renameat2的值.

      • 官方文档提供的ubu20.04虚拟机在win11上运行可能存在问题, 输入密码登陆后无显示并卡死. win7实测正常.

      • 找不到mkimage

      UIMAGE  arch/arm/boot/uImage
      "mkimage" command not found - U-Boot images will not be built
      make[1]: *** [arch/arm/boot/Makefile:93: arch/arm/boot/uImage] Error 1
      make: *** [arch/arm/Makefile:331: uImage] Error 2
      

      可以find . -name "mkimage" |xargs ls -lh,
      然后选一个可以执行的,

      export PATH=$PWD/brandy/brandy-2.0/u-boot-2018/tools:$PATH
      
      • 找不到/编不出mconf
        find一下, 进入相应目录, make clean, 然后再重新make
      发布在 V Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【开源开发板】D1s-Nezha开发板全全开源上架(内含购买链接和全部软硬件资料)

      @yuzukitsuru 在 【Yuzuki手作】D1s-Nezha开发板全全开源上架(内含购买链接和全部软硬件资料) 中说:

      SDK百度云下载:链接:https://pan.baidu.com/s/1MF8HIJHuEG71NxOY1riBZw 提取码:awol

      下载拉到 官方文档提供的 虚拟机 中, 4核编译30min成功.
      正在烧录....

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: ubuntu21.04编译d1源码出错

      我换了好多几个环境拷贝 整个sdk 都能重现了这个问题。
      尝试make -d发现连cp这样基础的方法都出现找不到LIBC 2.XX等问题,这让我意识到这不完全是与操作系统相关的问题。
      搜索cp发现out/host目录下有着一套独立的用于编译的系统环境。
      然后果断

      cd out
      mv host ../..
      rm -rf ./*
      

      正在编译中..., 没有再报错了。

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 订单号1602537027102107792的开发工具包

      好尴尬, 大家都知道你的下单了😅

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: ubuntu21.04编译d1源码出错

      @yuzukitsuru 哭~我的志强装在机房跑着...

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: ubuntu21.04编译d1源码出错

      @spring 在 ubuntu21.04编译d1源码出错 中说:

      STAT_VER' undeclared (f

      我也遇到同样的问题.

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 哪吒D1运行lvgl8在24寸1080P显示器上渲染 (转)

      谢, 直接覆盖tina-d1-h的lvgl8目录即可跑起来👍

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 既然D1/D1S的LVGL8有G2D和双缓 那么LVGL7也值得拥有

      哪吒套件(D1)跑LVGL8需要改什么?

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 【XR806官方开发板入门】openHarmony编译与烧录

      【XR806官方开发板入门】openHarmony编译与烧录

      非常感谢AW陈老板赠与XR806开发板~~~
      期望未来线下面基活动不会太晚.

      首先画重点:
      【严重警告】不要用全志客户服务平台Freertos v1.2版本编出来的固件烧到XR806开源鸿蒙开发板
      由于我鸽子特性, 所以前一段时间我卡在了openharmony(简称OH)开发路线上, 所以避开了官方RTOS这坑.

      OH开发路线我断断续续地摸索了2天

      • 一是文档教程分散且有多个版本(见 参考文献);
      • 二是估计OH官方库跟XR806的适配出现了一些分歧, 两者没有合并在一起.

      平台

      原生Ubuntu 20.04

      资源

      先建个文件夹, 边下载边往下看

      mkdir xradio && cd ~/xradio
      

      gn

      需要下载gn-linux-x86-1717.tar.gz工具. 链接忘了
      放到

      ~/gn目录下, 并加入环境变量
      

      工具链

      Linux: gcc-arm-none-eabi-10-2020-q4-major

      下载解压, 加不加到PATH不要紧. 因为OH依靠ninja工具构建. 只要将工具链路径(gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/bin)加入

      特定库

      devboard_device_allwinner_xr806

      git@gitee.com:moldy-potato-chips/devboard_device_allwinner_xr806.git
      

      devboard_vendor_allwinner_xr806

      git@gitee.com:moldy-potato-chips/devboard_vendor_allwinner_xr806.git
      

      以上两个库是早期从OH库特定分支fork下来的. 个人认为可能是最新的OH官方库与xr806适配方式存在一些分歧, 所以导致官方教程的里repo sync时无法同步到特定目录(库).

      下载完之后xradio目录应该为:

      xradio
      ├── devboard_device_allwinner_xr806
      ├── devboard_vendor_allwinner_xr806
      └── gcc-arm-none-eabi-10-2020-q4-major
      

      OH

      先来看看官方教程, 然而并不能正常repo sync(21/03/06之前)

      mkdir openharmony
      cd openharmony
      repo init -u ssh://git@gitee.com/openharmony-sig/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify -m devboard_xr806.xml
      repo sync -c
      repo forall -c 'git lfs pull'   #下载部分大容量二进制文件
      

      问题出现在

      -m devboard_xr806.xml
      

      所以直接取得OpenHarmony_1.0.1_release分支OH仓即可:

      repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify
      repo sync -c
      repo forall -c 'git lfs pull'
      

      注意xr806仅适配特定分支的OH系统.

      整合目录★★★

      以下操作是为了弥补该分支OH仓的一些差异.
      估计是OH官方仓作了一些修改没法向前兼容XR806的适配.

      # 若~/openharmony/device/xradio目录已存在, 则可备份一下.
      # 复制device库
      cp -rfa ~/xradio/devboard_device_allwinner_xr806 ~/openharmony/device/xradio
      
      # 复制vender库
      cp -rfa ~/xradio/devboard_vendor_allwinner_xr806 ~/openharmony/vendor/xradio
      

      配置工具链

      cd ~/openharmony

      修改:
      device/board/allwinner/xradio
      device/xradio/xr806/liteos_m/config.gni +37

      # Compiler prefix.
      board_toolchain_prefix = "~/xradio/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-"
      

      修改:

      device/xradio/xr806/xr_skylark/gcc.mk

      CC_DIR := ~/xradio/gcc-arm-none-eabi-10-2020-q4-major/bin
      

      编译注意事项

      hb工具选择兼容XR806的版本

      hb是构件OHOS的python工具. 它位于openharmony/build/lite/hb.

      hb最新版本不兼容编译XR806 SDK, 所以必须使用b765e35分支的hb工具, 即对应OH仓OpenHarmony_1.0.1_release分支的版本.

      git reset --hard b765e35
      # 在openharmony目录下执行安装才会替换hb
      python3 -m pip install --user build/lite
      

      编译SDK

      编译前要包含一下要编译的程序, 比如

      ~/openharmony/device/xradio/xr806/ohosdemo/hello_demo

      需要修改一些Build.gn...
      详细见官方教程和OH仓吧...
      还有一些生成文件需要注意:

      openharmony/device/xradio/xr806/liteos_m/SDKconfig.gni
      

      编译

      hb set 然后按一下回车出现:

      a.png !imga

      选择wifi_skylark@xradio选项.
      然后

      hb build -f -c gcc
      

      见success即可.

      烧录

      记得按官方教程打上 配置里的勾勾.
      QQ图片20220319135527.png

      参考文献

      [1] XR806使用安装包方式搭建编译环境

      [2] 系统下载与编译

      发布在 Wireless & Analog Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【开源直播】手把手教你用全志XR32芯片DIY一个自己的开发板(二:PCB焊接调试)

      @xiaowenge 在 【开源直播】手把手教你用全志XR32芯片DIY一个自己的开发板(二:PCB焊接调试) 中说:

      播】手把手教你用全志XR

      强!!!👏

      发布在 Wireless & Analog Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 能否提供D1-H上的可用GCC工具链

      @zhongcy 难道是传说中的负优化???

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 哪吒Tina Linux启用Telnetd

      telnetd需要开机运行在后台. 开机启动请参考
      Tina通过命令行连接WiFi
      https://bbs.aw-ol.com/topic/396/share/1

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: DongshanNezhaSTU RISCV架构学习开发板来啦!

      @allwinnertech 东山派正式入驻RISC-V领域. 坐等教程😊

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 哪吒Tina Linux启用Telnetd

      需要修改/etc/passwd

      root:ehbejoEKr/zwQ:0:0::/root:/bin/sh
      

      这样telnet到哪吒的账户密码为:
      root
      19841219
      (🤤不是我生日 )

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【开源直播】手把手教你用全志XR32芯片DIY一个自己的开发板(一:电路与PCB绘制)

      @randolph OV2640我之前在STM32用while的方法(阻塞)读图片, 粗暴但不科学, 有没有更好的建议?
      OV2640

      发布在 Wireless & Analog Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【XR806开发板试用】棋子分拣机

      @randolph 你的文章写得好, 让我也突发奇想到舵机相关的应用, 应该能把WIFI, 蓝牙都用上. 希望5月前能挤出档期

      发布在 Wireless & Analog Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 【XR806开发板试用】棋子分拣机
      舵机的输入信号口我是用806上的接口直接驱动的,并没有再拉高
      

      只要舵机和xr806共地即可. 你可以理解为处于特定角度的舵机是筛子, 你指定特定角度的PWM信号是沙子; 如果沙子能漏过筛子, 舵机就转到特定角度, 相当于筛子的孔变细了.

      发布在 Wireless & Analog Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 太干了,OpenPPL做的RISC-V技术解析

      @nihui 😂

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 风靡一时的自行车码表已经移植到D1s了,感谢作者 @FASTSHIFT

      @whycan 在 风靡一时的自行车码表已经移植到D1s了,感谢作者 @FASTSHIFT 中说:

      串口读GPS

      我在muduo库基础上拓展了一个串口收发模块, 可惜一季度档期满了

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 大佬请喝茶

      @whycan 刨丝器好帮帮哟

      发布在 灌水区
      aldfaaa
      whycan矿工-小叶
    • 烧录Tina遇到BOOT0 commit dirty问题

      年前闲时想在别的电脑上烧一下哪吒固件, 结果卡在了:
      QQ图片20220218101051.jpg

      [50] : 2337244-dirty
      

      后来发现: 应该是这台电脑没有装好驱动.

      同类问题及解决方案: D1哪吒PhoenixSuit烧录问题

      发布在 编译和烧写问题专区
      aldfaaa
      whycan矿工-小叶
    • 回复: 哪吒板上用display显示yuv格式数据直接蓝屏

      @honey130602 6666👏

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 哪吒D1开发板 LVGL7 源码下载(带git仓库)

      在HDMI上跑起来了, 修改到event2, 鼠标正常.
      有时间再跑到官方触摸屏.

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 哪吒D1开发板 LVGL7 源码下载(带git仓库)

      @whycan 要在官方LCD跑这个LVGL示例是不是:

      1. 修改board.dts让输出指向LCD
      2. 把该示例的程序push进去即可跑起来?
      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 哪吒D1开发板 LVGL7 源码下载(带git仓库)

      @memory @xiaowenge 能否发一下如何适配官方卖的亲儿子触摸屏的实例

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 小白在线求大佬们教学

      @heinhe 哪吒Tina Linux启用Telnetd
      https://bbs.aw-ol.com/topic/510/share/1

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 又在全志d1开发板上玩ncnn

      膜拜大佬~~~~~

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 分享嵌入式系统修改时区的方法

      export TZ=CST-8

      发布在 其它全志芯片讨论区
      aldfaaa
      whycan矿工-小叶
    • 回复: 超4K分辨率(2888x2888)的视频流还可以通过H265硬解吗?

      @xiaowenge 😀

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 超4K分辨率(2888x2888)的视频流还可以通过H265硬解吗?

      @houxiaoni 谢谢, 代码里看到你的名字了

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 回复: 超4K分辨率(2888x2888)的视频流还可以通过H265硬解吗?

      补充一下样图:
      h265_1.png

      关于tplayerdemo输出:
      超4K会报:显示画面会有点花.
      fbm.c FbmReturnPicture:1002: invalid frame status, a picture being returned, but bUsedByRender=0, bInValidPictureQueue=1, bAlreadyDisplayed=0.

      恰好4K:正常
      fbm.c FbmReturnPicture:1002: invalid frame status, a picture being returned, but bUsedByRender=0, bInValidPictureQueue=0, bAlreadyDisplayed=0.

      发布在 MR Series
      aldfaaa
      whycan矿工-小叶
    • 1
    • 2
    • 1 / 2