@hctdqz 我也是苦于lv2啊
Tristan_C 发布的最佳帖子
-
【飞凌 OK113i-C 全志T113-i开发板】3.开发环境准备和搭建
3.开发环境准备和搭建
这次就来准备搭建一下T113i的开发环境,其实对于初入门的Linux开发者而言,开发环境的搭建真的也是一大课题,有时候甚至要耗费相当多的时间搭建环境,配置环境,配置工具等等。因此这部分是否能方便快捷,至少能顺利搭建也成了一大关键。而我也算是作为初入门的Linux开发者,本次也难免要经历这个过程。
Linux的开发环境一般使用Linux机器进行开发编译等工作,这个Linux机器可以是实体机,也可以是虚拟机,飞凌官方已经将虚拟机和整个开发环境,包括需要用到的一些工具等都打包起来了,很方便。但现在Windows已经支持WSL,之前熟悉其它Linux芯片开发的时候也尝试过,也是非常方便,不用额外再增加安装虚拟机了,因此这次也打算尝试一下。本机已经安装了如下的Ubuntu-20.04版本
下面先登录该WSL,然后在Home文件夹下新建forlinx文件夹
然后将源码拷贝如该文件夹
此后进行MD5校验,并于上述文件夹中的sdk_md5sum.txt原始MD5进行对比
没问题就可以进行解压了
解压完成
解压完成可以看到如下文件信息
进行sdk配置
开始内核全编译
提示了这个错误
这个可能是包没有安装好
还是不行,按照提示安装另一个
然后接着编译
然后开始打包
提示最终打包成功,并在out文件中生成img镜像文件
从宿主机的文件资源管理器中也能看到最新生成的镜像文件
由此编译打包成功。
还可以尝试编译一下内核
这里也能看到其编译使用的工具链情况
toolchain_archivedir=/home/forlinx/OK113i-linux-sdk/build/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz
编译成功
编译完会在/home/forlinx/OK113i-linux-sdk/out/t113_i/OK113i/longan/路径下生成 boot.img
boot.img 可用于在线单独更新内核,用户需将其从虚拟机中拷贝到 OK113i 板卡/home 路径下,之后执行:dd if=/home/boot.img of=/dev/mmcblk0p4 conv=fsync
完成之后,重启板卡,即替换内核
注意单独编译内核只针对内核源码进行编译,影响驱动,适用于仅修改内核时进行编译执行./build.sh clean可以清除所有中间文件。但不影响源文件,包括已经有改动的源文件。
总结:看起来sdk在解包出来之后,整个编译的过程还是非常的顺利的,这个也得益于sdk的设计和打包。
-
【XR806开发板试用】+ 开箱及环境搭建
开箱及开发环境准备
一、开箱
很感谢极术和全志给与评测的机会,对于初学者来讲能有机会体验也是很幸运。收到第一时间开箱,实物如下。评估版采用成品模块+测试底板的方式,其中,模块采用XR806AF2L,采用QFN32封装芯片,使用PCB天线,做成模块也非常适合直接商用。模块板载一颗高频40MHz晶振,未使用32KHz低频晶振,应该是使用了内部的RC。模块上的器件比绍,集成度还是非常高的,模块体积尺寸看起来还可以做得更小。
底板则除了XR806之外,包含供电系统,并增加了USB接口,接了一片CP2102做USB转串口。外接两颗按钮和一颗LED,并将空闲管脚引出
作为评估版,基本功能已经够用。
下面看下主芯片XR806
这是21变全志发布的芯片,是一款基于安谋科技的STAR-MC1处理器来研发设计的支持WiFi和BLE的高集成度无线MCU,目前已经支持鸿蒙系统和Free RTOS系统。
下图为其芯片内部框图
芯片最高主频可达160MHz,内置SIP 288KB SRAM,SIP 160KB Code ROM,以及2MB的XIP Flash
二、开发环境准备
下面来准备一下开发环境
产品目前支持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
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安装路径
并使用vim打开gcc.mk,然后将CC_DIR更改为如下路径
4.应用开发示例
接下来就可以使用代码编译和镜像创建了,以 hello_demo 工程为例复制默认配置文件到顶层目录(不切换工程可不要此步骤)
$ cp project/demo/hello_demo/gcc/defconfig .config
检查SDK 基础配置,如工程名、芯片型号、高频晶振、板级配置是否正确
$ make menuconfig
清理,切换工程时需要
$ make build_clean
编译代码并生成镜像文件,生成的镜像文件为“out/xr_system.img”
$ make build(建议使用make build -j 加速编译),编译通过如下
在sdk安装文件夹下,有一个out文件夹,生成的镜像目标文件就在此处,可以查看生成的相关文件。
然后我们就可以进行程序烧写,将开发板通过USB接到PC,并打开phoenixMC.exe,找到对应的镜像文件,并选择正确的端口号,点击右上角的升级固件即可开始下载。
下载成功之后,在PC端打开串口调试助手,选择正确的COM号和波特率,即可看到hello word例程打印的如下信息了。
需要注意的是,如果在下载的过程中提示如下错误
可以通过重新安装CP2102的最新版本驱动,连接如下:
https://www.silabs.com/documents/public/software/CP210x_Universal_Windows_Driver.zip下面来增加VSC的支持
VSC的按爪个不赘述了,按照安装
然后在扩展插件中搜索WSL,并安装
安装完成就可以点击左下角
或者Ctrl+Shift+p
点击连接到WSL了
然后在终端中,cd进入到sdk所在路径
输入code . 即可打开sdk文件夹了
至此环境搭建完成。
-
【XR806开发板试用】+ 通过网络控制led并上报按键状态
通过网络控制led并上报按键状态
本次做一个手机通过mqtt服务器控制板子上的LED亮灭,板子也可以将按钮状态变化通过mqtt服务器上报给手机的功能
硬件上,从原理图看,LED接到了PA21,高电平点亮。
按键则时接到了PA11,并接了一个上拉电阻。
因此,设计上就可以通过按键上升沿中断,作为按键按下一次的事件,然后本地取反一次LED灯,并publish灯的状态给手机端,同时,会subscribe订阅灯的状态,接收手机端publish过来的LED控制数据。而手机端则可以publish控制数据,其中0作为关灯,发送1作为开灯,同时也subscribe订阅板子publish上来的LED状态数据。
Mqtt的服务器使用自行搭建的emqx broker
下面就开始整代码。首先拷贝mqtt demo代码默认配置
cp project/demo/hello_demo/gcc/defconfig .config
然后先make build_clean将之前的代码清掉
然后使用vim打开mqtt的main.c代码先定义LED和key的io引脚
再进行引脚的初始化,初始化中进行了LED亮灭2次闪烁,表示初始化成功。定义按键引脚为上升沿中断,中断中取反LED的亮灭状态,并更新led_state的值。
然后在main函数中调用初始化。
下面进行mqtt服务器相关参数的配置,如下,这里定义了两个topic,分别是MQTT_DEMO_TOPIC和MQTT_DEMO_PUB_TOPIC,前者订阅LED的状态,以控制LED的亮灭,后者则可上报按钮状态。HOST_NAME为mqtt服务器主机的ip地址或者域名
初始化 mqtt
Mqtt连接
订阅以及订阅的消息回调,其中在消息回调中,判断接收到的消息是字符0还是字符1,并进行响应的LED亮灭操作。
发布则是进行对应主题的发布操作
接下去就是mqtt主处理功能函数,其中主要是维持mqtt连接,并根据本地的按键控制的LED状态是否改变,决定是否publish上报改状态
最后就是主函数初始化硬件、功能和网络,并启动mqtt主进程了。
编译,下载运行
使用mobaxterm打开端口终端,可以看到如下打印信息
Wlan的wifi ssid和password是通过命令行command line的方式进行配置的
我们需要使用的主要是上面的三条,分别是
配置ssid:net ap set ssid ssid_example
配置password:net ap set psk psk_example
使能启动连接:net ap enable
连接wifi并成功连接mqtt服务器
此时mqtt broker服务器上也就能看到开发板设备连接上了
打开手机的MQTTool工具app(iPhone)
点击connect
就可以在emqx上看到对应的手机设备连接了
App切换到subscribe选项卡,输入 KEY/STATE 订阅主题,并点击Subscribe订阅该主题
轻按开发板上的按钮,可以看到板载的LED亮灭切换
同时串口终端中输出对应的信息
而在手机端的app上,切换到subscr选项卡,就可以看到每按一次按键,开发板publish发不上来的消息了
再切换到Publish选项卡,输入 LED/STATE 内容作为publish发布的主题
此时在Message框中输入1,并点击publish,就可以看到灯亮起
而输入0并点击publish发布,则看到灯灭
同时,开发板在收到上述的两次publish主题消息之后,还会在串口终端上打印如下内容。
在emqx上可以看到完整的主题
以及订阅方了
至此,小制作实现了LED和按钮的功能,并通过mqtt,实现手机与板子之间的状态上报和控制信息下行。