通信模块设计说明
特性概述 | 详细说明 |
---|---|
较强的接收容错能力 | 自动从下一个起始符继续匹配 |
丰富的协议解析能力 | 同一个端口支持解析多种协议 |
灵活的端口转发能力 | 支持在任意端口之间相互转发(转发时支持协议转换) |
良好的协议扩展能力 | 采用星形拓扑|方便后期扩展 |
特性概述 | 详细说明 |
---|---|
较强的接收容错能力 | 自动从下一个起始符继续匹配 |
丰富的协议解析能力 | 同一个端口支持解析多种协议 |
灵活的端口转发能力 | 支持在任意端口之间相互转发(转发时支持协议转换) |
良好的协议扩展能力 | 采用星形拓扑|方便后期扩展 |
vscode + scons + arm-none-eabi-gcc + cortex-debug + jlink
install vscode extentions: C/C++ & C/C++ Extension Pack |
install vscode extentions: Cortex-Debug |
install vscode extentions: RTOS-Views, Memory-View, Peripheral-Viewer |
对比条目 | FreeRTOS | RT-Thread |
---|---|---|
许可协议 | MIT | Apache License 2.0 |
内核开销 | ROM: 5KB RAM: 2KB |
ROM: 3KB RAM: 1KB |
实测开销 | ROM: 11KB RAM: 1KB |
|
抢占调度 | 支持 | 支持 |
轮转调度 | 支持 | 支持 |
多任务 | 支持 | 支持 |
优先级 | 32 | 8/32/256 |
信号量 | 支持 | 支持 |
互斥量 | 支持 | 支持 |
事件集 | × | 支持 |
邮箱 | × | 支持 |
信号 | × | 支持 |
消息队列 | 支持 | 支持 |
内存管理 | heap1 - heap5 | 内存堆管理 | 内存池管理 |
系统兼容 | × | 提供 FreeRTOS_Wrapper 兼容层 |
posix | × | 支持 |
shell | × | MSH, FINSH |
网络系统 | × | SAL + AT / LwIP |
文件系统 | FATFS | DFS + FATFS / RomFS / Yaffs2 / Uffs2 / DevFS |
spiflash | × | FlashDB + FAL + SFUD |
设备框架 | × | 支持 |
电源管理 | × | 支持 |
图形界面 | × | 支持 |
对于「引导程序+应用程序」之类的方案,我们通常是在系统初始化函数(SystemInit())中配置中断向量表偏移寄存器来实现中断向量表的重定向。但是这种直接修改官方库的方式往往会给后期的版本管理带来诸多不便。基于此,本文给出一个替代方案,供诸位参考。
#include "xxx32xxxx.h" |
Reset_Handler PROC |
对比条目 | HC32F460 | HC32F4A0 |
---|---|---|
工作频率 | 200MHz | 240MHz |
内核架构 | Cortex-M4 + FPU + DSP + MPU | Cortex-M4 + FPU + DSP + MPU |
芯片封装 | ||
ROM | 512KB | 256KB | 1024KB | 2048KB |
RAM | 192KB | 516KB |
PGA | ×1 | ×4 |
CMP | ×3 | ×4 |
ADC | ×2 | ×3 |
DAC | ×2 | ×4 |
TMR | Timer6 ×3 (16bit 高级 PWM Timer) Timer4 ×3 (16bit 电机 PWM Timer) TimerA ×6 (16bit 通用 PWM Timer) Timer0 ×2 (16bit 通用 ___ Timer) |
Timer6 ×8 (16bit 高级 PWM Timer) Timer4 ×3 (16bit 电机 PWM Timer) TimerA ×C (16bit 通用 PWM Timer) Timer2 ×4 (16bit 通用 ___ Timer) Timer0 ×2 (16bit 通用 ___ Timer) |
RTC | ×1 | ×1 |
WDT | WDT & SWDT | WDT & SWDT |
URT | ×4 | ×10 |
SPI | ×4 | ×6 |
QSPI | ×1 | ×1 |
I2C | ×3 | ×6 |
I2S | ×4 | ×4 |
CAN | ×1 | ×2 |
USB | ×1 | ×1 |
ETH | - | ×1 |
SDIO | ×2 | ×2 |
与上文类似,对 tinyuz 也进行二次封装以便上层调用:
#ifndef __tinyuz_port_h__ |