Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • 社区主页
    1. Home
    2. aldfaaa
    • Profile
    • Following 5
    • Followers 0
    • my integral 2852
    • Topics 11
    • Posts 78
    • Best 4
    • Groups 0

    aldfaaaLV 6

    @aldfaaa

    AKE

    2852
    integral
    6
    Reputation
    33
    Profile views
    78
    Posts
    0
    Followers
    5
    Following
    Joined Last Online
    Location 广东佛山

    aldfaaa Unfollow Follow

    Best posts made by aldfaaa

    • 【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] 系统下载与编译

      posted in XR806
      aldfaaa
      aldfaaa
    • Tina通过命令行连接WiFi

      首先配置wpa_supplicant的配置文件:/etc/wifi/ake.conf

      ctrl_interface=/var/run/wpa_supplicant
      update_config=1
      network={
              ssid="(SSID)"
              psk="(PWD)"
      }
      

      然后

      # 主要连接操作
       wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wifi/ake.conf -B
      # 通过DHCP服务获得IP地址等信息
      udhcpc -i wlan0 -B
      
      # 搜索WIFI
      wpa_cli -iwlan0 scan
      wpa_cli -iwlan0 scan_result
      
      # 检查WiFi连接状态
      wpa_cli -iwlan0 status
      
      

      WiFi已连接的应答

      ttt.png

      想开机配置网络和WiFi, 可以修改/etc/init.d/wpa_supplicant文件第48行左右:

      if [ x$brlan=="xbr-lan" ]; then
          echo "change the default ip address 192.168.1.1"
          ifconfig br-lan 192.168.100.1
          # 加你所想操作的指令
      fi
      
      posted in D1-H/D1s
      aldfaaa
      aldfaaa
    • MCU通过以太网(UDP)发送图片到哪吒开发板进行处理

      前端时间带实习生的过程中顺带学习了一下F103调OV2640传感器获取图片,顺带把图像通过以太网抛出。MCU采用状态机写法(整理后开源),通过TCP/UDP传输在PC上解包不要太顺利了.(这里要感谢实习生wyr填好的路)
      _-2018208784_20210907_192052_1631013654000_wifi_0.jpg

      Cache_-61b3cb7962535efa..jpg

      接下来,主要想把上位机解包程序移植到哪吒开发板上,目标平台:Tina.

      开源项目

      哪吒开发板实现TCP/UDP图传:
      https://gitee.com/YJHmath/image-transmission-d1-tina

      图传协议:
      https://docs.qq.com/doc/DVkRZUXhSa3prbXZp

      预期需求:

      • JPEG图片输出到HDMI, 或者MIPI.
      • 整合NCNN, 直观看识别效果.
      • 或许会支持更通用(复杂)的PES协议.

      阶段性成果汇报

      2021年9月30日

      HDMI调通

      • 感谢 @anruliu 指出了sdk中显示编码图像文件的工具fbviewer.
      • 感谢 @anruliu 在D1设置hdmi分辨率中9楼指出Tina Linux启动时默认选择MIPI作为显示输出, 并给出了开机默认选择HDMI输出的方案.

      开发过程

      一开始着重快速地把协议移植, 所以我会使用cmake工具在win下qtcreator编写, 在Ubuntu20.10交叉编译.
      开发语言自然是C++和C混着搭. 因为C++有着丰富的轮子,
      程序采用了:

      • 陈硕大佬的muduo网络库(C++)的Buffer类作为接收缓冲区.
      • UNP例程库(C)来做一个简单的UDP Server, 就喜欢它足够简单纯粹.

      这两个库在哪吒上的编译过程可以参考:
      muduo网络库在哪吒上编译
      《Unix网络编程》例程库在哪吒上编译

      技术受限

      一开始我想把接收到的图片一气呵成地输出到HDMI时, 但发现若将fbviewer目录(tina-d1-open/out/d1-nezha/compile_dir/target/fbviewer)下除main.o外的.o文件链接成静态库(.a), 再编译出来的程序无法正常运行:

      root@TinaLinux:/mnt/nfs/tina# ./fbtest
      ./fbtest: line 1: ELF�8@@
                                      : not found
      ./fbtest: line 3: syntax error: EOF in backquote substitution
      

      这是一道坎, 望各位大佬指教.

      寻求解决

      既然验证了链接到静态库存在问题. 那能想到解决思路有3种:

      1. 把已经正常运行的图传程序从C++改成C语言, 直接链接到fbviewer相关的.o文件, 这样程序大概率能正常运行. 但相当于弃盔卸甲, 还要用C把缓存区再造一遍.
      2. 把整个fbviewer里jpeg输出到HDMI的代码搬到图传程序里, 然后笃定地相信它会编译成功.
      3. 不要忘了操作系统扮演协调资源的角色. 图传程序将接收到的图片储存到运行目录下, 然后再魔改一下fbviewer, 通过stat读取运行目录下对应图像文件的最后修改时间有无发生变化来决定是否要通过HDMI输出图像. 这样就不用再纠结高层代码和底层代码之间千丝万缕的关系.

      对于下班的闲暇抽空写码的我, 毫不犹豫地选择了第3种.

      #include <stdio.h>
      #include <stdint.h>
      #include <unistd.h>
      #include <sys/stat.h>
      
      int main()
      {
          printf("Hello world\n");
          char* path = "pic.jpg";
          uint32_t ts = 0;
          struct stat tmp;
          stat(path, &tmp);
         
          uint8_t* image = (uint8_t*)malloc(1600 * 1200 * 3);
          int is_need_output = 0;
          while(1)
          {
              stat(path, &tmp);
              //printf("st_ctime:%d\n", tmp.st_ctime);
              if(ts != tmp.st_ctime)
              {
                  
                  ts = tmp.st_ctime;
                  is_need_output = 1;
              }
              if(is_need_output)
              {
                  fh_jpeg_load(path, image, NULL, 1600, 1200);
                  fb_display(image, NULL, 1600, 1200, 0, 0, 160, 0);
                  is_need_output = 0;
              }
              usleep(25 * 1000);
          }
          free(image);
          return 0;
      }
      

      既然程序需要频繁地读写, 那就直接放到挂载到RAM的目录吧!
      于是乎:

      下一步把ncnn的demo整合应该也不是什么难事.


      效果如上.

      posted in D1-H/D1s
      aldfaaa
      aldfaaa
    • 哪吒Tina Linux启用Telnetd

      在Tina SDK目录下 按官方文档加载环境:

      source build/envsetup.sh
      lunch d1_nezha-tina
      make menuconfig
      

      然后沿路径进入:
      Base system->BusyBox->Network Utilities->telnetd
      功能全开.(telnet工具可选, 除非你要telnet到别的设备)

      如图:
      JI6L39)Z3}5~8SHA}Z0)YNQ.png

      posted in D1-H/D1s
      aldfaaa
      aldfaaa

    Latest posts made by aldfaaa

    • Reply: 哪吒D1运行lvgl8在24寸1080P显示器上渲染 (转)

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

      posted in D1-H/D1s
      aldfaaa
      aldfaaa
    • Reply: 既然D1/D1S的LVGL8有G2D和双缓 那么LVGL7也值得拥有

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

      posted in D1-H/D1s
      aldfaaa
      aldfaaa
    • 【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] 系统下载与编译

      posted in XR806
      aldfaaa
      aldfaaa
    • Reply: 【开源直播】手把手教你用全志XR32芯片DIY一个自己的开发板(二:PCB焊接调试)

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

      播】手把手教你用全志XR

      强!!!👏

      posted in XR32
      aldfaaa
      aldfaaa
    • Reply: 能否提供D1-H上的可用GCC工具链

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

      posted in D1-H/D1s
      aldfaaa
      aldfaaa
    • Reply: 哪吒Tina Linux启用Telnetd

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

      posted in D1-H/D1s
      aldfaaa
      aldfaaa
    • Reply: DongshanNezhaSTU RISCV架构学习开发板来啦!

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

      posted in D1-H/D1s
      aldfaaa
      aldfaaa
    • Reply: 哪吒Tina Linux启用Telnetd

      需要修改/etc/passwd

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

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

      posted in D1-H/D1s
      aldfaaa
      aldfaaa
    • Reply: 【开源直播】手把手教你用全志XR32芯片DIY一个自己的开发板(一:电路与PCB绘制)

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

      posted in XR32
      aldfaaa
      aldfaaa
    • Reply: 【XR806开发板试用】棋子分拣机

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

      posted in XR806
      aldfaaa
      aldfaaa