本帖最后由 水清沙白 于 2019-6-27 20:04 编辑
IOT Board Plus (为潘多拉开发板换“芯”)
IoT Board 开发板,俗称潘多拉,是 RT-Thread 联合正点原子推出的一块多功能的 IOT 板卡,并提供丰富的例程和资源。东西是好,可是内部资源在运行了综合例程或者一些复杂的应用后,捉襟见肘。这样的情况遇到好几次,可谓是“苦秦久矣”,因此产生出换个资源大一点的 CPU 的想法。下面记录下过程。
步骤
因为 STM32L496VG 的引脚、时钟都和 L475 一致,但 Flash 有 1M,RAM 320K,是一个比较合适的选择,所以决定使用 STM32L496VG 。
首先在 X 宝的 ST 旗舰店购买了两块 STM32L496VG 的芯片,差不多 50 大洋一块。之所以买两块,是对自己的焊工没有信心,多一块备用。
更换过程是小伙伴帮忙的,分分钟就搞定,干净利落,下面是更换后的靓照:
打开
RT-Thread_IoT_SDKexamples 1_basic_led_blink 路径下的 project.uvprojx 工程文件,修改芯片型号为 STM32L496VGTx,如下图所示:
移除 STM32L4xx_HAL_Driver 分组下 L475 的启动文件,并添加 L496 的启动文件 startup_stm32l475xx.s,如下图。那么,问题来了,496 的启动文件哪里找?很简单,其实跟 475 的启动文件在同一级目录下————RT-Thread_IoT_SDKlibrariesCMSISDeviceSTSTM32L4xxSourceTemplatesarm,默认的 GCC、KEIL、IAR的分部都有。
这点让我严重怀疑,是不是他们早就发现资源不够用了,悄悄咪咪的更换了 L496 的芯片,不告诉我们!!!
完成上述两个步骤,还需要改一下工程里芯片的定义,如下图所示。默认是 L475 的信号,修改为 STM32L496xx,这点对熟悉 STM32 的人来说,应该都不陌生。
完成上面步骤,直接编译:0 Error(s), 0 Warning(s);然后下载,连上串口,一气呵成。
程序顺利运行,红 {MOD} LED 开始闪烁,打开串口,会打印下面的信息:
- | /
- - RT - Thread Operating System
- / | 4.0.1 build Jun 25 2019
- 2006 - 2019 Copyright by rt-thread team
- [D/main] led on, count: 1
- msh >[D/main] led off
- [D/main] led on, count: 2
- [D/main] led off
- [D/main] led on, count: 3
- [D/main] led off
- [D/main] led on, count: 4
- [D/main] led off
- [D/main] led on, count: 5
- [D/main] led off
- [D/main] led on, count: 6
- [D/main] led off
复制代码
此时,虽然程序运行了,但是可用的动态内存并没有变,因为 RAM 大小使用的还是旧的 L475 的配置。打开 board.h 头文件,修改第 26 行 STM32_SRAM_SIZE 大小为 320,如下,再次编译下载,动态内存已经是预期的 320K 了。
- #define STM32_SRAM_END &__ICFEDIT_region_IRAM1_end__
- #else
- #define STM32_SRAM_SIZE 320
- #define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024)
- #endif
复制代码后记
IOT Board 的 SDK 集成度比较高,L496 和 L475 的时钟、外设等一致,换芯片几乎没有什么软件的成本,但是更大的资源就可以意味着可以随意祸祸,玩点高难度的。上面的步骤直接在工程里改,好处是简单直观,一看就懂,但是弊端是过程略显粗暴,每次重新生成工程后配置会被还原,优雅的做法还是应该修改模板文件以及工程的 SConscript 脚本。
一周热门 更多>