Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    【XR806开发板试用】编译中的几个问题以及hello跑起来

    XR系列-无线互联
    1
    1
    221
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      HU_710774265 LV 4 last edited by

      首先我们先看https://xr806.docs.aw-ol.com/
      该文档部分不适应 当前最新gitee

      如果没有repo工具,可通过下面的git命令获取repo。

      git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
      

      下载代码 没有使用ssh://方式 过于麻烦

      mkdir xr806_openharmony
      cd xr806_openharmony
      repo init -u https://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'   #下载部分大容量二进制文件
      

      编译流程

      cd device/xradio/xr806/xr_skylark                               #(1)进入原生SDK目录
      cp project/demo/audio_demo/gcc/deconfig .config                 #(2)复制配置文件
      make menuconfig                                                 #(3)图形化界面配置
      make build_clean                                                #(4)清除旧配置
      make lib -j                                                     #(5)根据配置生成静态库和全局头文件
      cd -                                                            #(6)返回Harmony根目录
      hb set                                                          #(7)选择wifi_skylark
      hb build -f                                                     #(8)编译,后续不需要重新配置
      

      编译中遇到的问题
      1.缺少SDKconfig.gni
      直接导致 hb build -f 报错编译失败
      解决方法
      修改xr806_openharmony/device/xradio/xr806/xr_skylark/config.py
      该文件的换行符 unix格式

      #!/usr/bin/python3
      
      import os
      
      pwd = os.path.dirname (__file__)
      f = open('{0}/.config'.format(pwd),'r')
      
      
      DATA = ['#XR806 config']
      for line in f.readlines():
          if line[0] != '#' and line[0] != '\n':
              line = line.strip('\n')
              DATA.append(line)
      
      GNf = open('{0}/../liteos_m/SDKconfig.gni'.format(pwd),'w')
      GNf.write('#Build by config.py DO NOT EDIT!\n\n')
      GNf.write('SDK_cflags = [\n\
          "-mcpu=cortex-m33",\n\
          "-mtune=cortex-m33",\n\
          "-march=armv8-m.main+dsp",\n\
          "-mfpu=fpv5-sp-d16",\n\
          "-mfloat-abi=softfp",\n\
          "-mcmse",\n\
          "-mthumb",\n\
          "-c",\n\
          "-g",\n\
          "-fno-common",\n\
          "-fmessage-length=0",\n\
          "-fno-exceptions",\n\
          "-ffunction-sections",\n\
          "-fdata-sections",\n\
          "-fomit-frame-pointer",\n\
          "-Wall",\n\
          #"-Werror",\n\
          "-Wno-cpp",\n\
          "-Wpointer-arith",\n\
          "-Wno-error=unused-function",\n\
          "-MMD",\n\
          "-MP",\n\
          "-Os",\n\
          "-DNDEBUG",\n\
          "-Wno-error=stringop-truncation",\n\
          "-Wno-error=restrict",\n\
          "-includexr_config.h",\n\
          "-includecommon/prj_conf_opt.h",\n\
          "-DCONFIG_CHIP_ARCH_VER=3",\n\
          "-DCONFIG_ARCH_APP_CORE",\n\
          "-DCONFIG_CPU_CM33F",\n\
      ]\n\n')
      
      PROJECT = [x for i,x in enumerate(DATA) if x.find('CONFIG_PROJECT=') != -1]
      if len(PROJECT) == 1:
          ProjectPath = PROJECT[0]
          ProjectPath = ProjectPath.strip('CONFIG_PROJECT=')
      GNf.write('ProjectPath = {0}\n\n'.format(ProjectPath))
      if ProjectPath == '"bootloader"' or ProjectPath == '"test/etf"':
          GNf.write('declare_args() {IsBootloader = "true"}\n')
      else:
          GNf.write('declare_args() {IsBootloader = "false"}\n')
      
      
      
      #print (DATA)
      

      2.hello 一直不出现
      修改xr806_openharmony/device/xradio/xr806/libcopy.py
      该文件的换行符 是windows格式(很奇怪对吧)。

      #!/usr/bin/python3
      
      import os
      import json
      
      pwd = os.path.dirname (__file__)
      
      XTS_TEST = "disable"
      
      def filenames_filter(filename_list,Features_str,extention_name):
          confirm_list = []
          for filename in filename_list:
              if filename.find(Features_str) != -1:
                  if extention_name == os.path.splitext(filename)[1]:
                      confirm_list.append(filename)
          return confirm_list
      
      # whether config.json define compoent "test"?
      vendorf = open('{0}/../../../vendor/xradio/xr806/config.json'.format(pwd),'r')
      configData = json.load(vendorf)
      subsystemsData = configData['subsystems']
      for JSON_TXET in subsystemsData:
          ComponentJson = json.dumps(JSON_TXET)    
          componentPython = json.loads(ComponentJson)
          if componentPython["subsystem"] == "test":
              XTS_TEST = "enable"
      
      
      GNf = open('{0}/xr_skylark/ohos.mk'.format(pwd),'w')
      FnList = os.listdir('{0}/xr_skylark/lib/ohos'.format(pwd))
      APPlib = filenames_filter(FnList,'libapp_','.a')
      
      if XTS_TEST == "enable":
          TESTlib = filenames_filter(FnList,'libmodule_','.a')
          # if test XTS_UPgrade,KEYlib should add 'libhota.a'
          KEYlib = ['libwifiservice.a','libhiview_lite.a','libhilog_lite.a',\
          'libhievent_lite.a','libbootstrap.a','libhctest.a','libbroadcast.a']
      else:
          TESTlib = []
          KEYlib = []
      RTOSlib = list(set(FnList) - set(APPlib) - set(TESTlib) - set(KEYlib))
      
      GNf.write('#\n# Rules for ohos library\n#\n\n')
      
      GNf.write('OHOSSOURCE = -Wl,--whole-archive\n')
      for lib in KEYlib:
          GNf.write('OHOSSOURCE += $(ROOT_PATH)/lib/ohos/{0}\n'.format(lib)) 
      for lib in APPlib:
          GNf.write('OHOSSOURCE += $(ROOT_PATH)/lib/ohos/{0}\n'.format(lib))
      for lib in TESTlib:
          GNf.write('OHOSSOURCE += $(ROOT_PATH)/lib/ohos/{0}\n'.format(lib))
      GNf.write('OHOSSOURCE += -Wl,--no-whole-archive\n')
      GNf.write('\n')
      
      GNf.write('OHOSSOURCE += -Wl,--start-group\n')
      for lib in RTOSlib:
          GNf.write('OHOSSOURCE += $(ROOT_PATH)/lib/ohos/{0}\n'.format(lib))
      GNf.write('OHOSSOURCE += -Wl,--end-group\n')
      
      GNf.write('#\n# end of file\n#\n\n')
      
      1. win下make menuconfig问题 建议用linux(能烧录哦)
      目前我用了
      Cygwin
      msys2 以及msys2中带的msys
      都是同类型错误,建议看看其他坛友是否有方法
      MinGW 未试
      

      问题2分析

      文件xr806_openharmony/device/xradio/xr806/xr_skylark/ohos.mk
      默认有
      OHOSSOURCE = -Wl,--whole-archive
      OHOSSOURCE += $(ROOT_PATH)/lib/ohos/libapp_console.a
      OHOSSOURCE += -Wl,--no-whole-archive
      所以编译后能跑起来
      libcopy.py 未能正确运行导致
      文件未被更新如:
      OHOSSOURCE = -Wl,--whole-archive
      OHOSSOURCE += $(ROOT_PATH)/lib/ohos/libapp_console.a
      OHOSSOURCE += $(ROOT_PATH)/lib/ohos/libapp_led.a
      OHOSSOURCE += $(ROOT_PATH)/lib/ohos/libapp_WlanTest.a
      OHOSSOURCE += -Wl,--no-whole-archive
      所以 不管你怎么改都只是 支持libapp_console 设置
      可手工添加(不建议。
      

      hello 跑起来怎么改?
      https://xr806.docs.aw-ol.com/study/soft_helloword/
      给的文档已经过期不适合 现在最新的gitee代码

      修改
      xr806_openharmony/device/xradio/xr806/ohosdemo/BUILD.gn
      内容:
      group("ohosdemo") {
          deps = [
              "hello_demo:app_hello",
              "LED:app_led",
              #"iot_peripheral:app_peripheral",
              #"wlan_demo:app_WlanTest",
          ]
      }
      

      如此这般hello_demo 就能愉快的跑起来了。

      1 Reply Last reply Reply Quote Share 1
      • 1 / 1
      • First post
        Last post

      Copyright © 2022 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策