导航

    全志在线开发者论坛

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

    zxfengLV 3

    @zxfeng

    367
    积分
    3
    声望
    3
    资料浏览
    4
    帖子
    0
    粉丝
    0
    关注
    注册时间 最后登录

    zxfeng 取消关注 关注

    zxfeng 发布的最佳帖子

    • 飞凌OK-T527开发板试用1-开箱+交叉编译

      开箱

      昨天收到了飞凌嵌入式寄到的OK-T527板卡测试,开箱图片如下:
      5cdbf594-ebef-44eb-b78b-e004608f622d-b85240643edc9e900c2eb2ab5a409d5.jpg
      53469b00-d7c9-4b68-b019-5259ae3d6e2f-bc71a2a0b4ebbe70ac81f4c546d02a6.jpg
      61581629-1b97-486f-96a1-c7ed0dad129c-7b2ba0027165d4b5ac43d793b7bf444.jpg

      串口驱动安装

      在”04-工具“文件夹中包含有”CH343SER.ZIP“驱动压缩包,解压后执行Driver中的SETUP.EXE即可安装驱动程序。
      bcc0348a-c53d-4611-b51d-275448913528-image.png

      edd7e13b-db60-427d-b809-2221f90380ed-image.png

      • 如果出现:未知USB设备(设备描述符请求失败),说明你的usb口供电不足,换个供电能力好的(如主机箱后侧)的USB口就好啦。

      串口连接

      找到“USB-Enhanced-SERIAL-A CH342”对应的com号,波特率选择115200进行连接。
      b9bf30eb-b2ee-4a85-814d-2d826d95e4e9-image.png

      SSH连接

      网口连接

      8e75d3b5-501e-4351-8c0d-5774934f6aac-image.png
      使用ifconfig命令来查看和设置网络。首先将板卡与电脑连接至同一网段,之后使用ifconfig设置板卡ip地址。

      ifconfig eth0 10.7.61.241 netmask 255.255.192.0
      

      设置完ip后如下
      e76fbf9d-5f10-4f1e-9a0a-029c2d233af4-image.png

      然后进行电脑和板卡之间互ping,发现可以ping通就说明两者网络已经互通。
      7e2443c9-d3c5-4983-b963-e3bf441ea649-image.png

      wifi连接

      执行如下命令,-s后为wifi名称,-p后为密码。

      fltest_wifi.sh -i wlan0 -s Redmi2024 -p ******
      

      31fae0e8-7812-4c12-856e-4a0b6286af22-image.png

      ssh登录

      设置好板卡的ip地址后就能通过ssh连接了。
      25879824-cc6b-4dbd-8b19-b5c6ac64da7f-image.png
      其中用户名和密码都为root。

      交叉编译器安装

      在完成源码拷贝和释放后,在其out/toolchain目录下,存放的是交叉编译工具。
      因此我们在~/.profile文件夹中添加如下代码

      export PATH=$PATH:/home/forlinx/work/OKT527-linux-sdk/out/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin
      

      之后注销账号然后再重新登录。

      之后执行如下命令测试交叉编译工具是否安装成功

      aarch64-none-linux-gnu-gcc -v
      

      6bce01ef-0597-411e-9508-c8e343fe7c28-image.png

      交叉编译测试-HelloWorld

      新建一个helloworld.c文件并将如下内容填入文件中。

      #include<stdio.h>
      int main()
      {
          printf("hello world!\n");
      }
      

      执行交叉编译

      aarch64-none-linux-gnu-gcc helloworld.c -o helloworld
      

      将编译后的程序移动到板卡的root文件夹下,执行

      chmod 777 helloworld
      ./helloworld
      

      f05f5789-6fb2-496a-adeb-6d52233d0f83-image.png
      可以看到我们的程序已经正常执行了。

      发布在 飞凌嵌入式专区
      Z
      zxfeng
    • 飞凌OK-T527开发板试用2-简单的性能测试

      本文主要使用CoreMark、Dhrystone和Stream对芯片性能进行初步检测,并与ELFBorad进行了简单的单核性能比较。

      OK527N-C

      CoreMark

      获取CoreMark源码

      首先,从EEMBC官网下载CoreMark的源代码压缩包,或者使用Git克隆仓库:

      git clone https://github.com/eembc/coremark.git
      cd coremark
      

      修改Makefile

      首先复制文件夹

      cp -rf posix ok527
      

      之后修改ok527文件夹下的core_portme.mak文件,将CC修改如下

      CC = aarch64-none-linux-gnu-gcc
      

      交叉编译

      make PORT_DIR=ok527
      

      编译结束后会报错,但是已经生成了交叉编译的coremark.exe可执行程序。这是由于架构不同,该交叉编译的程序并不能在电脑上直接运行。
      5b8ede39-9c84-4c27-8758-d58dea473af1-image.png
      将文件夹下的coremark.exe复制到板卡上,执行

      chmod 777 coremark.exe
      ./coremark.exe
      

      90dff7f1-cab5-4af6-9089-eaf02ba1ab0a-image.png

      多核

      make PORT_DIR=ok527 XCFLAGS="-DMULTITHREAD=4 -DUSE_FORK -pthread"
      

      6f6816ea-db77-44ca-a594-c655aadb9c49-image.png

      Dhrystone(单核性能测试工具)

      首先下载源码(http://www.roylongbottom.org.uk/classic_benchmarks.tar.gz)并解压

      tar -vxf classic_benchmarks.tar.gz
      

      之后新建一个编译文件夹,复制相关源码到此,并新建Makefile文件

      cd classic_benchmarks
      mkdir ./build
      cd ./build
      
      cp -rf ../source_code/common_64bit/cpuidc64.c ./
      cp -rf ../source_code/common_64bit/cpuidh.h ./
      cp -rf ../source_code/dhrystone2/dhry.h ./
      cp -rf ../source_code/dhrystone2/dhry_1.c ./
      cp -rf ../source_code/dhrystone2/dhry_2.c ./
      touch Makefile
      

      将如下内容复制到Makefile文件中并保存

      CC=aarch64-none-linux-gnu-gcc
      
      main:*.o
              ${CC} -o dhry2_64 *.o
              ${CC} -O2 -o dhry22_64 *.o
              ${CC} -O3 -o dhry23_64 *.o
      
      *.o:*.c
              ${CC} -g -c *.c
      
      clean:
              rm -f *.o dhry2_64 dhry22_64 dhry23_64
      

      此外由于source_code/common_64bit/cpuida64.asm代码并不适配aarch64-none-linux-gnu-as汇编器,所以我们在复制的时候没有复制此文件,并且需要注释掉 cpuidc64.c中的_cpuida() 、_calculateMHz() 两个汇编函数。
      最后执行编译

      make clean
      make
      

      04b218b4-753d-4841-a40f-6fb4f5215023-image.png
      生成的三个可执行文件分别为dhry2_64(无优化等级)、dhry22_64(优化等级2)、dhry23_64(优化等级3)。这里我们将dhry2_64复制到板卡中并运行,得到的结果如下
      7f93f9bf-6cca-4018-966f-ea5bb83545e9-image.png

      Stream

      STREAM是一种内存带宽测试工具,主要用于评估计算机系统的内存子系统性能,特别是其读写速度和带宽。它通过一系列简单但计算密集型的操作来模拟对连续内存区域的访问,以此来测量系统的实际内存带宽性能。
      STREAM测试主要提供以下四种指标:

      1. Copy (复制):测量一个数组中的数据复制到另一个数组的速度。这项测试代表了简单的数据移动操作,如内存拷贝。
      2. Scale (尺度变换):测量将数组中的每个元素乘以一个常数的速度。这代表了需要读取、修改并重新写回内存的数据操作。
      3. Add (矢量求和):测量将两个数组的相应元素相加,并将结果存储到第三个数组中的速度。这代表了常见的向量加法操作。
      4. Triad (复合矢量求和):测量将一个数组的元素与另一个数组的元素相加,然后将结果乘以一个常数,并存储到第三个数组中的速度。这是最复杂的一项测试,因为它涉及读取、计算和写回三个数组的操作。

      首先下载C源码(https://www.cs.virginia.edu/stream/FTP/Code/stream.c),并在同一目录下新建makefile,并将以下内容复制进去

      CC=aarch64-none-linux-gnu-gcc
      
      main:
              ${CC} stream.c -o stream
              
      clean:
              rm -f *.o stream
      

      编译执行后得到可执行文件stream,将其复制到板卡上并执行
      fea1e2e2-c375-4e29-bc81-fd166959f80b-image.png
      此外,在编译程序时还可以启用-fopenmp选项,它会告诉编译器生成能利用多线程的代码,从而可以并行地执行内存读取和写入操作,从而更好地模拟真实应用的负载情况,因为现代应用程序往往利用了多核架构的并行处理能力。因此,启用-fopenmp可以得到更接近实际工作负载下的内存带宽测量值。启用-fopenmp选项后的测试结果如下:
      4d67c55b-bea5-4ef1-94d1-9ed6bb4fae34-image.png
      可以看到板卡的内存性能也很不错。
      之后我们修改Makefile来查看不同编译优化等级的影响,

      CC=aarch64-none-linux-gnu-gcc
      
      main:
              ${CC} stream.c -fopenmp -o stream
              ${CC} stream.c -fopenmp -O1 -o stream1
              ${CC} stream.c -fopenmp -O2 -o stream2
              ${CC} stream.c -fopenmp -O3 -o stream3
              
      clean:
              rm -f *.o stream
      

      交叉编译后分别得到无优化、优化等级1、优化等级2、优化等级3的程序,将其下载到板卡中进行测试。

      1. 无优化
        b0ec97d2-d42c-40b2-953e-e5d0d01be70f-image.png
      2. 优化等级1
        aeb42bb5-cc48-43a8-a3ff-d658ab6d2c1a-image.png
      3. 优化等级2
        61ffa956-8208-4756-ab4a-0e755dad6591-image.png
      4. 优化等级3
        b3a1d864-8af5-461e-9dfa-1b97a1d3f1ca-image.png

      可以看到当为优化等级1时效果最好,O2和O3都会导致部分指标有一定的衰减。

      ELFBoard

      下面以搭载i.MX6ULL芯片的ELFBoard为例进行单核性能比对测试。

      coremark

      14fa5541-ea2f-49d0-b1bb-4b8ba077a928-image.png

      Dhrystone

      b5ba04da-4913-496b-bc02-4f4d9eb50fbc-image.png
      可以看到在单核性能上T527N就比i.MX6ULL大约高了三倍。

      发布在 飞凌嵌入式专区
      Z
      zxfeng
    • 回复: 飞凌嵌入式FET527N-C核心板已适配OpenHarmony4.1

      太厉害了,相关开发资料在哪儿找呀,我看最新的产品资料发布记录上还没有提供相关资料

      发布在 飞凌嵌入式专区
      Z
      zxfeng

    zxfeng 发布的最新帖子

    • 回复: 飞凌嵌入式FET527N-C核心板已适配OpenHarmony4.1

      太厉害了,相关开发资料在哪儿找呀,我看最新的产品资料发布记录上还没有提供相关资料

      发布在 飞凌嵌入式专区
      Z
      zxfeng
    • 飞凌OK-T527开发板试用3-modbus使用

      源码下载

      文档:https://libmodbus.org/getting_started/
      源码:https://github.com/stephane/libmodbus/releases
      目前最新的为3.1.10

      交叉编译

      进入到源码目录,执行

      ./configure ac_cv_func_malloc_0_nonnull=yes --host=aarch64-none-linux-gnu --enable-static --prefix=/home/feng/文档/development/Linux/application/OK527N/libmodbus-3.1.10/install/
      

      其中--host为交叉编译器的前缀;--prefix为编译结果的目录,需要为绝对路径。之后执行

      make
      make install
      

      编译成功后,就会在install目录下生成三个目录:include、lib、share。我们需要将lib目录移动到开发版的lib目录下

      scp -r ./install/lib/ root@192.168.33.4:/
      

      移植测试程序

      我们这里以random-test-server和random-test-client为例进行测试,其中开发板为server,电脑为client。

      开发板

      首先进入tests目录下,将random-test-server.c测试程序里面的ctx=modbus_new_tcp("127.0.0.1", 1502);
      改为 ctx = modbus_new_tcp(NULL, 1502);,即 server 监控所有的 ip 地址,端口是 1502。之后重新执行交叉编译

      aarch64-none-linux-gnu-gcc -o random-test-server random-test-server.c -L/home/feng/文档/development/Linux/application/OK527N/libmodbus-3.1.10/install/lib -lmodbus -I/home/feng/文档/development/Linux/application/OK527N/libmodbus-3.1.10/install/include/modbus
      

      将得到的random-test-server文件复制到开发板上

      scp -r ./tests/random-test-server root@192.168.33.4:/home
      

      在开发板上执行程序

      chmod 777 random-test-server
      ./random-test-server
      

      电脑端

      编译

      ./configure
      make
      sudo make install
      

      修改测试文件

      首先进入tests目录下,将random-test-client.c测试程序里面的ctx = modbus_new_tcp("127.0.0.1", 1502); 改为 ctx = modbus_new_tcp("192.168.33.4", 1502);,即将服务端的ip地址改为开发板的ip地址,端口是 1502。重新执行make编译

      测试

      首先在开发板上执行./random-test-server启动服务端程序,之后在电脑客户端执行./random-test-client,运行结果如下:
      65ccbe72-63ad-45d4-9eb8-e1b2248e19f2.png

      1c3b3af7-a166-4900-9480-d1097df7b401.png

      发布在 飞凌嵌入式专区
      Z
      zxfeng
    • 飞凌OK-T527开发板试用2-简单的性能测试

      本文主要使用CoreMark、Dhrystone和Stream对芯片性能进行初步检测,并与ELFBorad进行了简单的单核性能比较。

      OK527N-C

      CoreMark

      获取CoreMark源码

      首先,从EEMBC官网下载CoreMark的源代码压缩包,或者使用Git克隆仓库:

      git clone https://github.com/eembc/coremark.git
      cd coremark
      

      修改Makefile

      首先复制文件夹

      cp -rf posix ok527
      

      之后修改ok527文件夹下的core_portme.mak文件,将CC修改如下

      CC = aarch64-none-linux-gnu-gcc
      

      交叉编译

      make PORT_DIR=ok527
      

      编译结束后会报错,但是已经生成了交叉编译的coremark.exe可执行程序。这是由于架构不同,该交叉编译的程序并不能在电脑上直接运行。
      5b8ede39-9c84-4c27-8758-d58dea473af1-image.png
      将文件夹下的coremark.exe复制到板卡上,执行

      chmod 777 coremark.exe
      ./coremark.exe
      

      90dff7f1-cab5-4af6-9089-eaf02ba1ab0a-image.png

      多核

      make PORT_DIR=ok527 XCFLAGS="-DMULTITHREAD=4 -DUSE_FORK -pthread"
      

      6f6816ea-db77-44ca-a594-c655aadb9c49-image.png

      Dhrystone(单核性能测试工具)

      首先下载源码(http://www.roylongbottom.org.uk/classic_benchmarks.tar.gz)并解压

      tar -vxf classic_benchmarks.tar.gz
      

      之后新建一个编译文件夹,复制相关源码到此,并新建Makefile文件

      cd classic_benchmarks
      mkdir ./build
      cd ./build
      
      cp -rf ../source_code/common_64bit/cpuidc64.c ./
      cp -rf ../source_code/common_64bit/cpuidh.h ./
      cp -rf ../source_code/dhrystone2/dhry.h ./
      cp -rf ../source_code/dhrystone2/dhry_1.c ./
      cp -rf ../source_code/dhrystone2/dhry_2.c ./
      touch Makefile
      

      将如下内容复制到Makefile文件中并保存

      CC=aarch64-none-linux-gnu-gcc
      
      main:*.o
              ${CC} -o dhry2_64 *.o
              ${CC} -O2 -o dhry22_64 *.o
              ${CC} -O3 -o dhry23_64 *.o
      
      *.o:*.c
              ${CC} -g -c *.c
      
      clean:
              rm -f *.o dhry2_64 dhry22_64 dhry23_64
      

      此外由于source_code/common_64bit/cpuida64.asm代码并不适配aarch64-none-linux-gnu-as汇编器,所以我们在复制的时候没有复制此文件,并且需要注释掉 cpuidc64.c中的_cpuida() 、_calculateMHz() 两个汇编函数。
      最后执行编译

      make clean
      make
      

      04b218b4-753d-4841-a40f-6fb4f5215023-image.png
      生成的三个可执行文件分别为dhry2_64(无优化等级)、dhry22_64(优化等级2)、dhry23_64(优化等级3)。这里我们将dhry2_64复制到板卡中并运行,得到的结果如下
      7f93f9bf-6cca-4018-966f-ea5bb83545e9-image.png

      Stream

      STREAM是一种内存带宽测试工具,主要用于评估计算机系统的内存子系统性能,特别是其读写速度和带宽。它通过一系列简单但计算密集型的操作来模拟对连续内存区域的访问,以此来测量系统的实际内存带宽性能。
      STREAM测试主要提供以下四种指标:

      1. Copy (复制):测量一个数组中的数据复制到另一个数组的速度。这项测试代表了简单的数据移动操作,如内存拷贝。
      2. Scale (尺度变换):测量将数组中的每个元素乘以一个常数的速度。这代表了需要读取、修改并重新写回内存的数据操作。
      3. Add (矢量求和):测量将两个数组的相应元素相加,并将结果存储到第三个数组中的速度。这代表了常见的向量加法操作。
      4. Triad (复合矢量求和):测量将一个数组的元素与另一个数组的元素相加,然后将结果乘以一个常数,并存储到第三个数组中的速度。这是最复杂的一项测试,因为它涉及读取、计算和写回三个数组的操作。

      首先下载C源码(https://www.cs.virginia.edu/stream/FTP/Code/stream.c),并在同一目录下新建makefile,并将以下内容复制进去

      CC=aarch64-none-linux-gnu-gcc
      
      main:
              ${CC} stream.c -o stream
              
      clean:
              rm -f *.o stream
      

      编译执行后得到可执行文件stream,将其复制到板卡上并执行
      fea1e2e2-c375-4e29-bc81-fd166959f80b-image.png
      此外,在编译程序时还可以启用-fopenmp选项,它会告诉编译器生成能利用多线程的代码,从而可以并行地执行内存读取和写入操作,从而更好地模拟真实应用的负载情况,因为现代应用程序往往利用了多核架构的并行处理能力。因此,启用-fopenmp可以得到更接近实际工作负载下的内存带宽测量值。启用-fopenmp选项后的测试结果如下:
      4d67c55b-bea5-4ef1-94d1-9ed6bb4fae34-image.png
      可以看到板卡的内存性能也很不错。
      之后我们修改Makefile来查看不同编译优化等级的影响,

      CC=aarch64-none-linux-gnu-gcc
      
      main:
              ${CC} stream.c -fopenmp -o stream
              ${CC} stream.c -fopenmp -O1 -o stream1
              ${CC} stream.c -fopenmp -O2 -o stream2
              ${CC} stream.c -fopenmp -O3 -o stream3
              
      clean:
              rm -f *.o stream
      

      交叉编译后分别得到无优化、优化等级1、优化等级2、优化等级3的程序,将其下载到板卡中进行测试。

      1. 无优化
        b0ec97d2-d42c-40b2-953e-e5d0d01be70f-image.png
      2. 优化等级1
        aeb42bb5-cc48-43a8-a3ff-d658ab6d2c1a-image.png
      3. 优化等级2
        61ffa956-8208-4756-ab4a-0e755dad6591-image.png
      4. 优化等级3
        b3a1d864-8af5-461e-9dfa-1b97a1d3f1ca-image.png

      可以看到当为优化等级1时效果最好,O2和O3都会导致部分指标有一定的衰减。

      ELFBoard

      下面以搭载i.MX6ULL芯片的ELFBoard为例进行单核性能比对测试。

      coremark

      14fa5541-ea2f-49d0-b1bb-4b8ba077a928-image.png

      Dhrystone

      b5ba04da-4913-496b-bc02-4f4d9eb50fbc-image.png
      可以看到在单核性能上T527N就比i.MX6ULL大约高了三倍。

      发布在 飞凌嵌入式专区
      Z
      zxfeng
    • 飞凌OK-T527开发板试用1-开箱+交叉编译

      开箱

      昨天收到了飞凌嵌入式寄到的OK-T527板卡测试,开箱图片如下:
      5cdbf594-ebef-44eb-b78b-e004608f622d-b85240643edc9e900c2eb2ab5a409d5.jpg
      53469b00-d7c9-4b68-b019-5259ae3d6e2f-bc71a2a0b4ebbe70ac81f4c546d02a6.jpg
      61581629-1b97-486f-96a1-c7ed0dad129c-7b2ba0027165d4b5ac43d793b7bf444.jpg

      串口驱动安装

      在”04-工具“文件夹中包含有”CH343SER.ZIP“驱动压缩包,解压后执行Driver中的SETUP.EXE即可安装驱动程序。
      bcc0348a-c53d-4611-b51d-275448913528-image.png

      edd7e13b-db60-427d-b809-2221f90380ed-image.png

      • 如果出现:未知USB设备(设备描述符请求失败),说明你的usb口供电不足,换个供电能力好的(如主机箱后侧)的USB口就好啦。

      串口连接

      找到“USB-Enhanced-SERIAL-A CH342”对应的com号,波特率选择115200进行连接。
      b9bf30eb-b2ee-4a85-814d-2d826d95e4e9-image.png

      SSH连接

      网口连接

      8e75d3b5-501e-4351-8c0d-5774934f6aac-image.png
      使用ifconfig命令来查看和设置网络。首先将板卡与电脑连接至同一网段,之后使用ifconfig设置板卡ip地址。

      ifconfig eth0 10.7.61.241 netmask 255.255.192.0
      

      设置完ip后如下
      e76fbf9d-5f10-4f1e-9a0a-029c2d233af4-image.png

      然后进行电脑和板卡之间互ping,发现可以ping通就说明两者网络已经互通。
      7e2443c9-d3c5-4983-b963-e3bf441ea649-image.png

      wifi连接

      执行如下命令,-s后为wifi名称,-p后为密码。

      fltest_wifi.sh -i wlan0 -s Redmi2024 -p ******
      

      31fae0e8-7812-4c12-856e-4a0b6286af22-image.png

      ssh登录

      设置好板卡的ip地址后就能通过ssh连接了。
      25879824-cc6b-4dbd-8b19-b5c6ac64da7f-image.png
      其中用户名和密码都为root。

      交叉编译器安装

      在完成源码拷贝和释放后,在其out/toolchain目录下,存放的是交叉编译工具。
      因此我们在~/.profile文件夹中添加如下代码

      export PATH=$PATH:/home/forlinx/work/OKT527-linux-sdk/out/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin
      

      之后注销账号然后再重新登录。

      之后执行如下命令测试交叉编译工具是否安装成功

      aarch64-none-linux-gnu-gcc -v
      

      6bce01ef-0597-411e-9508-c8e343fe7c28-image.png

      交叉编译测试-HelloWorld

      新建一个helloworld.c文件并将如下内容填入文件中。

      #include<stdio.h>
      int main()
      {
          printf("hello world!\n");
      }
      

      执行交叉编译

      aarch64-none-linux-gnu-gcc helloworld.c -o helloworld
      

      将编译后的程序移动到板卡的root文件夹下,执行

      chmod 777 helloworld
      ./helloworld
      

      f05f5789-6fb2-496a-adeb-6d52233d0f83-image.png
      可以看到我们的程序已经正常执行了。

      发布在 飞凌嵌入式专区
      Z
      zxfeng