2023-12-22 10:57:40 +08:00
2023-07-08 16:14:18 +08:00
2023-07-11 10:03:35 +08:00
2023-07-01 23:15:55 +08:00
2023-12-22 10:57:40 +08:00
2023-06-16 12:13:06 +08:00
2023-06-25 17:08:07 +08:00
2023-06-06 15:56:23 +08:00
2023-06-16 18:39:43 +08:00
2023-06-28 20:09:19 +08:00
2023-06-06 15:56:23 +08:00
2023-06-30 17:16:48 +08:00
2023-06-14 14:38:28 +08:00
2023-06-06 15:56:23 +08:00
2023-06-06 15:56:23 +08:00
2023-06-06 15:56:23 +08:00
2023-06-06 15:56:23 +08:00
2023-06-28 17:10:59 +08:00
2023-06-08 14:54:10 +08:00
2023-06-06 15:56:23 +08:00
2023-06-30 17:16:48 +08:00
2023-06-06 15:56:23 +08:00
2023-06-06 15:56:23 +08:00
2023-07-03 16:47:04 +08:00

说明

这是一个使用rt-thread开发Air105的例子(仅供测试)。

硬件

本工程中使用一些板级外设可在Kconfig中打开或关闭。

硬件板级驱动支持配置在Kconfig的→ Hardware Drivers Config → Onboard Peripheral Drivers中。

menuconfig_onboard_drivers

以太网

Air105本身不支持以太网,但可以使用W5500作为全硬件以太网栈。默认情况下占用SPI24个引脚:

Air105引脚 功能
PB4/GPIO20 SPI2_MOSI
PB3/GPIO19 SPI2_CSN
PB2/GPIO18 SPI2_CLK
PB5/GPIO21 SPI2_MISO

注意:W5500对电源要求极高需要支持较大的瞬时电流,电源不稳定将导致Air105运行不稳定。

显示屏

Air105的内存较大,非常适合用于驱动显示屏,其较大的flash空间也可用于中文字体存储。

本工程采用SSD1306驱动的128x64 OLED显示屏,采用U8G2作为显示库。

硬件接口采用硬件I2C(可与其它设备共用I2C总线)。默认情况下占用I2C(两个引脚):

Air105引脚 功能
PE6/GPIO70 I2C_SCL
PE7/GPIO71 I2C_SDA

注意:由于U8G2采用的是在线软件包,若编译失败请尝试执行bootstrap下载。

LED

在Air105核心版上,引出了3个LED灯。默认情况下占用3个引脚(此引脚在开发板上未引出):

Air105引脚 功能
PD14 LED0
PD15 LED1
PC03 LED2

内置Flash布局

由于官方手册对flash的描述较少,因此本章纯属个人分析,仅供参考。按照数据手册,内置Flash共4MBytes。

名称 起始地址 长度 说明
整个Flash 0x01000000 0x400000 (4MBytes) Flash地址可能是重映射后的地址(以下地址同理)。
header 0x01000000 0x1000 (4KBytes) Flash 参数信息
bootloader 0x01001000 0xF000 (60KBytes) bootloader.bin由官方提供,详见pack .
app 0x01010000 0x2F0000 (3008KBytes) app即为应用程序,在本工程为rtthread.bin。注意:app前0x400字节为app信息(由bootloader识别),真正的向量表基址为0x01010400。
script 0x01300000 0x80000 (512KBytes) 似乎是luatos时的lua脚本所在。本工程暂未使用。
fs 0x01380000 0x80000 (512KBytes) 似乎是luatos时的可读写flash文件系统所在。本工程暂未使用。

综合网上(github.com)关于MH1903(s)的工程,初步推断Flash内部参数同X25QXX系列SPI Flash,部分参数如下:

名称 说明
扇区大小 4096 字节 擦除时需要按扇区擦除。
页大小 256 字节 写入时需要按页写入Flash。

按键

按键复用BOOT按键,占用引脚PA10。按键具有以下功能:

  • 长按
  • 单击
  • 双击

源代码下载

注意:由于换行符问题,请在Rt-Thread Env中使用git下载或者下载后在下载目录执行git reset --hard。

由于本源代码包含第三方源代码,故直接下载可能有部分源代码缺失,需要通过以下方法解决:

  • 在进行git clone 使用--recurse-submodules参数。

  • 若已通过git clone下载,则在源代码目录中执行以下命令下载子模块:

     git submodule update --init --recursive
    

脚本说明

Windows

所有脚本均需要在Rt-Thread Env中执行。

  • bootstrap.bat:工程初始化脚本
  • flash.bat:烧录脚本

Ubuntu

  • bootstrap :工程初始化脚本

资源文件

类似于桌面程序的资源文件。源代码实现的目录为 rc

在固件编写中很多时候需要大量的固定数据直接手工嵌入到C文件里比较麻烦。

通过读取文件转换到对应C文件可大大节省时间可添加常用的文件如各种证书或者不适宜放在可读写的文件系统中的文件(如需要在格式化中保留或者初始参数)。转换程序源代码为rc/fsgen.cpp

使用步骤如下:

  • 将待添加的文件放入 rc/fs目录下。

  • 使用文件名调用以下函数(需包含相应头文件RC.h):

    //通过名称获取资源大小
    size_t RCGetSize(const char * name);
    
    //通过名称获取资源指针
    const unsigned char * RCGetHandle(const char * name);
    

注意:在RT-Thread中,支持使用ROMFS挂载RC资源代码说明如下:

//头文件
#include <dfs_fs.h>
#include "dfs_romfs.h"
//挂载所需参数
extern const struct romfs_dirent romfs_root

    
...
{
    ...
    //挂载romfs。注意:似乎DFSV1只支持挂载到/,挂载到其它地方无效。
    dfs_mount(RT_NULL, "/", "rom", 0, &(romfs_root)
    ...
}
...

测试截图

Air105

编译

Windows

工具

  • RT-Thread Env:RT-Thread脚本执行环境(包含编译器及配置工具)。注意:需要v1.3.5或更新版本,否则可能失败。
  • CMake:用于生成*.cbp工程。注意:安装时需要添加CMake到PATH。CMake_Install_set_path

编译步骤

编译操作同bsp下的编译操作,只是需要先使用bootstrap.bat初始化工程。

  • 打开Rt-Thread Env工具(运行env.exe,最好使用管理员权限),切换至工程目录(即bootstrap.bat所在目录)。
  • 运行bootstrap.bat,将初始化工程并产生build/rtthread.cbp(可采用CodeBlocks打开编辑)。
  • 使用scons命令执行编译并打包。

注意:bootstrap.bat通常只需要在需要更新build/rtthread.cbp时使用,最终生成rtthread_air105.soc仍然使用scons命令。

Ubuntu

工具(软件包)

  • build-essential
  • gcc-arm-none-eabiarm编译工具链
  • python3
  • python3-requests
  • scons
  • wget
  • git
  • cmake
  • ninja-build
  • make

可使用以下命令安装:

sudo apt-get update
sudo apt-get install -yy build-essential gcc-arm-none-eabi python3  python3-requests scons wget git cmake ninja-build make

编译步骤

编译步骤同Windows,使用bootstrap初始化工程,使用scons编译固件并打包。

注意:如需进入env环境如执行menuconfig命令,需要先执行:

#以下命令仅当bootstrap成功后有效
source ~/.env/env.sh

烧录

Air105是通过UART0烧录的,烧录格式为.soc,烧录工具为Luatools。

详细工具请查看:https://wiki.luatos.com/pages/tools.html

注意:Luatools下载后默认会占用串口,如需其它工具打开手动关闭Luatools打开的串口。

除了使用Luatools,还可使用flash.bat烧录(需要在RT-Thread Env中运行):

rem 烧录命令为 flash 串口编号,如使用COM9烧录命令如下.
flash 9

flash_bat_flash

调试

串口

UART0 :1500000 8N1

由于串口的波特率较高,有些工具可能不能正常打开(如putty 0.78)。

其它工程

其它工程通常用于参考。

Description
No description provided
Readme MIT 8.5 MiB
Languages
C 46.7%
Python 23.4%
HTML 14.9%
C++ 9%
Ada 1.1%
Other 4.6%