Yongci

View on GitHub
../ 返回上级目录🔙

基于Zephyr的RTOS移植和SoC升级

背景

我有一款基于STM32F103C8T6的开发版,大概是2015年买的;板上资源如下:

SC1

当时只是裸跑的厂家程序,板子是一个叫做Hikit的小公司设计的(型号为SC1,现在这个公司已经倒闭了),然后就没再管它了。最近想起这个板子,就想把它刷成Zephyr RTOS,顺便也升级一下SoC。 由于原来的固件是基于STD库的,不太利于RTOS的移植,此外,STM32F103C8T6的Flash只有64KB,运行Zephyr RTOS有点吃力,所以我决定把SoC换成STM32L562CEU6, 该SoC引脚封装和STM32F103C8T6基本一致,Flash有512KB,并且具有256KB的SRAM,运行Zephyr RTOS富足很多。

步骤

从淘宝上采购了两片MCU,别问为啥只有两片,因为太TM贵了(65软妹币一片😑)

  1. 焊接,忘记拍照了(略),用风枪先把103吹下来,补点锡膏和助焊剂再把旧的焊上去。
  2. 拉取最新的Zephyr repository到本地,新建一个Zephyr的App。
  3. 根据图纸修改Zephyr的DT文件,该文件在位于新建的App目录下和CMake那些放一块(Device Tree),主要是以下配置:
    • 根节点为SoC型号,这会将SoC相关的头文件和库包含进去
    • RCC初始化代码,这里需要声系统时钟源,HSI/HSE以及频率和PLL配置
    • Serial console log初始化,HSART1初始化配置,代码中log函数的输出可以打印到串口,方便调试需要。
    • LED、按键、继电器、DHT11初始化
    • RTC初始化。
    • I2C初始化,需要在I2C的节点下再声明设备节点,比如I2C1总线上挂了24C02就需要将该型号加入I2C1节点下;另外将BH1750挂在I2C2下。
    • SPI和W5500初始化
  4. 修改内核配置,因为要执行多个thread,需要修改栈大小。

更新中。。。