导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. Tristan_C
    3. 最佳
    T
    • 资料
    • 关注 0
    • 粉丝 0
    • 我的积分 848
    • 主题 10
    • 帖子 15
    • 最佳 5
    • 群组 0

    Tristan_C 发布的最佳帖子

    • 回复: 【水经验混下载权限专用贴】如何升级LV2拉取SDK

      @hctdqz 我也是苦于lv2啊

      发布在 灌水区
      T
      Tristan_C
    • 【飞凌 OK113i-C 全志T113-i开发板】3.开发环境准备和搭建

      3.开发环境准备和搭建

      这次就来准备搭建一下T113i的开发环境,其实对于初入门的Linux开发者而言,开发环境的搭建真的也是一大课题,有时候甚至要耗费相当多的时间搭建环境,配置环境,配置工具等等。因此这部分是否能方便快捷,至少能顺利搭建也成了一大关键。而我也算是作为初入门的Linux开发者,本次也难免要经历这个过程。
      Linux的开发环境一般使用Linux机器进行开发编译等工作,这个Linux机器可以是实体机,也可以是虚拟机,飞凌官方已经将虚拟机和整个开发环境,包括需要用到的一些工具等都打包起来了,很方便。但现在Windows已经支持WSL,之前熟悉其它Linux芯片开发的时候也尝试过,也是非常方便,不用额外再增加安装虚拟机了,因此这次也打算尝试一下。本机已经安装了如下的Ubuntu-20.04版本
      37d526bd-2011-45de-bf6e-75d71a3a19c8-image.png
      下面先登录该WSL,然后在Home文件夹下新建forlinx文件夹
      a0303d21-06d7-4de4-b8cb-93ff5ea8f986-image.png

      然后将源码拷贝如该文件夹
      2147e26e-89bb-4896-ab2f-01545a1b21b6-image.png

      此后进行MD5校验,并于上述文件夹中的sdk_md5sum.txt原始MD5进行对比
      b19bb197-9212-4ff4-88ac-22f90d442580-image.png

      没问题就可以进行解压了
      03366e3f-f9d9-4a3d-b051-398664e9b733-image.png

      解压完成
      32e318f2-f107-40ee-91e8-d7dab6e6a3c9-image.png

      解压完成可以看到如下文件信息
      e9ca39d8-faa4-4843-8169-67a41b4f118b-image.png

      进行sdk配置
      2b47c17a-ca48-4ae4-b8aa-cb5302c0b2c0-image.png

      开始内核全编译
      db88dda8-77fc-44e1-96fe-64953b78abc3-image.png

      提示了这个错误
      5fafd9a8-5986-4c52-a590-f6365c9cdec5-image.png

      这个可能是包没有安装好
      b86db137-af3c-4385-9d97-adc4c4a124a2-image.png

      还是不行,按照提示安装另一个
      77c80584-1a60-43da-89c1-4b41ac30ccd1-image.png

      然后接着编译
      7f699506-3109-4e56-a62f-c5320eed54e3-image.png

      然后开始打包
      b58ffd5c-f346-419e-8cb8-e9f59b8fb750-image.png

      提示最终打包成功,并在out文件中生成img镜像文件
      afa660af-b604-4cbc-8d57-aae14be49f78-image.png

      从宿主机的文件资源管理器中也能看到最新生成的镜像文件
      b578d18e-52ab-4c1d-ba9d-c483b20f6e7f-image.png

      由此编译打包成功。

      还可以尝试编译一下内核
      a8544ce9-cd60-41b0-b2aa-8ad9175d24a5-image.png
      这里也能看到其编译使用的工具链情况
      toolchain_archivedir=/home/forlinx/OK113i-linux-sdk/build/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz

      40489edf-e9ed-4d36-b8c9-f4cf42cb8919-image.png

      96177236-31e8-4608-af03-78749f0c4b3e-image.png
      编译成功
      1b874a34-7fdb-47aa-8917-5b8e6b10c0b1-image.png

      编译完会在/home/forlinx/OK113i-linux-sdk/out/t113_i/OK113i/longan/路径下生成 boot.img
      943fddf7-c859-4352-b026-1f427b69b620-image.png

      boot.img 可用于在线单独更新内核,用户需将其从虚拟机中拷贝到 OK113i 板卡/home 路径下,之后执行:dd if=/home/boot.img of=/dev/mmcblk0p4 conv=fsync
      完成之后,重启板卡,即替换内核
      注意单独编译内核只针对内核源码进行编译,影响驱动,适用于仅修改内核时进行编译

      执行./build.sh clean可以清除所有中间文件。但不影响源文件,包括已经有改动的源文件。
      38c61b5d-df2a-408e-b3c4-71ee8f912d1f-image.png

      总结:看起来sdk在解包出来之后,整个编译的过程还是非常的顺利的,这个也得益于sdk的设计和打包。

      发布在 飞凌嵌入式专区
      T
      Tristan_C
    • 【XR806开发板试用】+ 开箱及环境搭建

      开箱及开发环境准备

      一、开箱
      很感谢极术和全志给与评测的机会,对于初学者来讲能有机会体验也是很幸运。收到第一时间开箱,实物如下。

      1292e5e0-31ed-4195-803d-ff6dd4a37258-image.png

      ae40f155-4a2f-40f9-86c1-bb612ea76f0e-image.png

      评估版采用成品模块+测试底板的方式,其中,模块采用XR806AF2L,采用QFN32封装芯片,使用PCB天线,做成模块也非常适合直接商用。模块板载一颗高频40MHz晶振,未使用32KHz低频晶振,应该是使用了内部的RC。模块上的器件比绍,集成度还是非常高的,模块体积尺寸看起来还可以做得更小。
      0f750a36-bcdc-4c5d-b292-82323f68eeb4-image.png
      062efccb-6d95-4cc1-956c-9aab35b807f5-image.png
      底板则除了XR806之外,包含供电系统,并增加了USB接口,接了一片CP2102做USB转串口。外接两颗按钮和一颗LED,并将空闲管脚引出
      4f7bee9a-4822-4aec-9d85-82bf3fe87432-image.png
      26d6eb18-1ba3-4965-b98d-c004aa85d8d0-image.png
      8e6c3855-4ddf-40f7-a9a0-53876d4723c5-image.png
      024e72c4-d8dc-49fb-98e0-e5b546cd942e-image.png

      作为评估版,基本功能已经够用。

      下面看下主芯片XR806
      这是21变全志发布的芯片,是一款基于安谋科技的STAR-MC1处理器来研发设计的支持WiFi和BLE的高集成度无线MCU,目前已经支持鸿蒙系统和Free RTOS系统。
      下图为其芯片内部框图
      芯片最高主频可达160MHz,内置SIP 288KB SRAM,SIP 160KB Code ROM,以及2MB的XIP Flash
      8a3ccfd3-79a2-4511-bdc8-4ecfb06680f1-image.png
      be5c4b97-a630-48b1-82ad-30f66a70017a-image.png

      二、开发环境准备
      下面来准备一下开发环境
      产品目前支持Linux环境开发,因此我也选择改方式,当然也是我第一次尝试Linux环境的arm开发。工具采用如下组合:
      Win11 + WSL2 + gcc-arm+VSC
      其中win11和WSL2的安装不做记录了,按照win11的操作在应用商店即可。下面记录gcc-arm和xr806的sdk安装。注意:以下操作有可能需要sudo权限,记录中不一定完全体现
      1.源码sdk
      下载和解压安装,使用如下命令下载:
      wget https://bbs.aw-ol.com/assets/uploads/files/1693988430633-xr806_sdk.tar.gz
      然后解压:
      tar xvf 1693988430633-xr806_sdk.tar.gz
      2.gcc-arm
      下载gcc-arm工具链
      wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/8-2019q3/RC1.1/gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2
      同样是压缩文件需要解压,可以把压缩包放置到用户文件下的tools
      90dbbc46-8144-4829-b7c9-246a6cda31cf-image.png

      tar xvf gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2 -C ~/tools/
      如果没有tools,可能得创建mkdir一下
      3.更改gcc.mk中的gcc-arm的路径
      代码编译前需要在“gcc.mk”中设置正确的GCC 交叉编译工具链路径,进入sdk安装路径
      860ac1b1-30ac-4661-9768-246ec39d83cc-image.png
      并使用vim打开gcc.mk,然后将CC_DIR更改为如下路径
      813e3002-1cad-4e55-8311-78e3e2cf3879-image.png

      4.应用开发示例
      接下来就可以使用代码编译和镜像创建了,以 hello_demo 工程为例

      复制默认配置文件到顶层目录(不切换工程可不要此步骤)

      $ cp project/demo/hello_demo/gcc/defconfig .config

      检查SDK 基础配置,如工程名、芯片型号、高频晶振、板级配置是否正确

      $ make menuconfig
      28728e4f-c49b-40ca-bb55-5c2c70bc5c18-image.png

      清理,切换工程时需要

      $ make build_clean
      cbcfcb61-ca75-498e-9d41-b338254babc4-image.png

      编译代码并生成镜像文件,生成的镜像文件为“out/xr_system.img”

      $ make build(建议使用make build -j 加速编译),编译通过如下
      bc868cd5-2ba1-4407-abf5-19f9ac478b1f-image.png

      在sdk安装文件夹下,有一个out文件夹,生成的镜像目标文件就在此处,可以查看生成的相关文件。
      1c43b858-62db-4989-932b-f0157abc3055-image.png

      然后我们就可以进行程序烧写,将开发板通过USB接到PC,并打开phoenixMC.exe,找到对应的镜像文件,并选择正确的端口号,点击右上角的升级固件即可开始下载。
      77c2757d-1492-4299-b032-4756bf411cbc-image.png

      下载成功之后,在PC端打开串口调试助手,选择正确的COM号和波特率,即可看到hello word例程打印的如下信息了。

      74641c9e-8eb7-4cb4-91bb-c9522a1aa61c-image.png

      需要注意的是,如果在下载的过程中提示如下错误
      dcbd11ce-bd24-46de-bde6-eade14090f5f-image.png

      ebdc91f5-5619-45cb-a370-567451a849e7-image.png

      可以通过重新安装CP2102的最新版本驱动,连接如下:
      https://www.silabs.com/documents/public/software/CP210x_Universal_Windows_Driver.zip

      下面来增加VSC的支持
      VSC的按爪个不赘述了,按照安装
      然后在扩展插件中搜索WSL,并安装
      57e866aa-3482-45dd-816a-752630255f8e-image.png

      安装完成就可以点击左下角
      99740167-2839-47fb-b8f7-7c64ee5b3177-image.png

      或者Ctrl+Shift+p
      5eab5fc5-6717-46cd-86ed-bb6e58dbc8e6-image.png

      点击连接到WSL了
      然后在终端中,cd进入到sdk所在路径
      47290d7a-22c8-4d0b-8292-dcbc3b3d6e96-image.png

      输入code . 即可打开sdk文件夹了
      41b4587c-bd88-4957-99a8-f41d340c21c6-image.png

      至此环境搭建完成。

      发布在 Wireless & Analog Series
      T
      Tristan_C
    • 【XR806开发板试用】+ 通过网络控制led并上报按键状态

      通过网络控制led并上报按键状态

      本次做一个手机通过mqtt服务器控制板子上的LED亮灭,板子也可以将按钮状态变化通过mqtt服务器上报给手机的功能
      硬件上,从原理图看,LED接到了PA21,高电平点亮。
      f8d503a6-686e-4602-a189-3496ecc6bfc1-image.png
      按键则时接到了PA11,并接了一个上拉电阻。
      f2487c6b-be8f-4acb-a54d-7613947bed84-image.png

      因此,设计上就可以通过按键上升沿中断,作为按键按下一次的事件,然后本地取反一次LED灯,并publish灯的状态给手机端,同时,会subscribe订阅灯的状态,接收手机端publish过来的LED控制数据。而手机端则可以publish控制数据,其中0作为关灯,发送1作为开灯,同时也subscribe订阅板子publish上来的LED状态数据。
      Mqtt的服务器使用自行搭建的emqx broker
      da08c02b-0346-47b8-9a19-3c32880519a1-image.png

      下面就开始整代码。首先拷贝mqtt demo代码默认配置
      cp project/demo/hello_demo/gcc/defconfig .config
      然后先make build_clean将之前的代码清掉
      然后使用vim打开mqtt的main.c代码

      先定义LED和key的io引脚
      5245cc42-30f4-42a9-a174-005e85c54a38-image.png

      再进行引脚的初始化,初始化中进行了LED亮灭2次闪烁,表示初始化成功。定义按键引脚为上升沿中断,中断中取反LED的亮灭状态,并更新led_state的值。
      abce267f-2a73-4e65-ba27-0a8b33c239a5-image.png

      然后在main函数中调用初始化。
      55d0793c-993c-44f1-b193-18f16f6aacaa-image.png

      下面进行mqtt服务器相关参数的配置,如下,这里定义了两个topic,分别是MQTT_DEMO_TOPIC和MQTT_DEMO_PUB_TOPIC,前者订阅LED的状态,以控制LED的亮灭,后者则可上报按钮状态。HOST_NAME为mqtt服务器主机的ip地址或者域名

      68186bbf-995e-43a6-8da1-2994a8aeae5f-image.png

      初始化 mqtt
      08b2d8bc-f84b-449e-adfd-beb85a8ffce9-image.png

      Mqtt连接
      49eed009-e8e7-4648-a9bd-1dbef1e45b9a-image.png

      订阅以及订阅的消息回调,其中在消息回调中,判断接收到的消息是字符0还是字符1,并进行响应的LED亮灭操作。

      发布则是进行对应主题的发布操作
      aaa6e02a-7fef-4022-a640-0b9cb60189f7-image.png

      接下去就是mqtt主处理功能函数,其中主要是维持mqtt连接,并根据本地的按键控制的LED状态是否改变,决定是否publish上报改状态
      7cfee316-0457-4f83-9336-b8bcd398205a-image.png

      最后就是主函数初始化硬件、功能和网络,并启动mqtt主进程了。

      编译,下载运行
      2f317d2d-6516-4540-a256-5a94ec8aec26-image.png

      使用mobaxterm打开端口终端,可以看到如下打印信息
      ee303a86-845c-4d2e-8f82-e2e06f344a5f-image.png

      Wlan的wifi ssid和password是通过命令行command line的方式进行配置的
      3a22b0ae-56eb-40fa-b4cd-d5a1522f2118-image.png

      6b4939c6-97b0-4385-af3e-5721a913bba3-image.png

      我们需要使用的主要是上面的三条,分别是
      配置ssid:net ap set ssid ssid_example
      配置password:net ap set psk psk_example
      使能启动连接:net ap enable
      连接wifi并成功连接mqtt服务器
      afce1e47-d3d8-4adb-8d1c-0236f5493a6b-image.png

      此时mqtt broker服务器上也就能看到开发板设备连接上了
      4355e358-fdb3-4834-859d-1ac264e10300-image.png

      打开手机的MQTTool工具app(iPhone)
      点击connect
      e54a4924-2ac3-4025-9daa-47681778bff4-image.png

      就可以在emqx上看到对应的手机设备连接了
      88c869f7-3f05-4e31-9c7a-410120176728-image.png

      App切换到subscribe选项卡,输入 KEY/STATE 订阅主题,并点击Subscribe订阅该主题
      d8008a53-f707-41fe-91bf-3ba14f0c9cfb-image.png

      轻按开发板上的按钮,可以看到板载的LED亮灭切换

      99c08f60-4d6b-45ef-8f3a-68f807233ada-image.png
      e8acb4c9-dcc8-48bb-8051-24b5fe2690a6-image.png

      同时串口终端中输出对应的信息
      51f78850-0f49-425a-8489-f953aa00f6e2-image.png

      而在手机端的app上,切换到subscr选项卡,就可以看到每按一次按键,开发板publish发不上来的消息了
      c0ebc3da-e265-41cf-8033-7ea0031e8506-image.png

      再切换到Publish选项卡,输入 LED/STATE 内容作为publish发布的主题
      此时在Message框中输入1,并点击publish,就可以看到灯亮起
      33c1d4a0-1e42-4fcd-89ff-dce5a6c59613-image.png
      796436a9-f84a-4d97-9000-b48f022a867f-image.png

      而输入0并点击publish发布,则看到灯灭
      598a96d5-643f-4c14-8e08-f8634dde7ab2-image.png

      1520055a-594e-4095-8282-487227d67cd7-image.png

      同时,开发板在收到上述的两次publish主题消息之后,还会在串口终端上打印如下内容。
      b700fb68-a653-482d-b5b3-caba3e2e728d-image.png

      在emqx上可以看到完整的主题
      6aa49719-40f3-491d-9d1f-05ac189b0512-image.png

      以及订阅方了
      966ef631-0b1d-4192-ade7-f2262b4e03f6-image.png

      至此,小制作实现了LED和按钮的功能,并通过mqtt,实现手机与板子之间的状态上报和控制信息下行。

      发布在 Wireless & Analog Series
      T
      Tristan_C
    • 1 / 1