【说在前面的话】
Raspberry Pi Pico is a tiny, fast, and versatile board built using RP2040, a brand new microcontroller chip designed by Raspberry Pi in the UK.
https://www.raspberrypi.org/products/raspberry-pi-pico/
搭载了设计最大频率为133MHz的双核Cortex-M0+
实际可以轻松超频到250MHz,甚至是400MHz
256K + 8K 的SRAM
由多个SRAM总线从机接口构成,从而保证了多总线主机访问时不易出现冲突的问题——双向八车道的高速,几乎不会堵车——吞吐量杠杠的
大量充满奇思妙想的外设(这里就不做赘述)
在Pico官方论坛上,曾经有一个带节奏的帖子叫做《Pi Pico - the most user un-friendly MCU?》(中文:树莓派Pico——对用户最不友好的MCU)?如果你可以看懂英文,建议去观摩下这个13页的热帖。其中你可以看到:
https://www.raspberrypi.org/forums/viewtopic.php?f=144&t=315750&start=75
然而,MCU的开发并不同于MPU的开发。我的观察中,树莓派这类能跑Linux的系统,基本上使用的是Linux生态,在这一生态下,很多工具比如cmake、命令行、GDB或者OpenOCD之类都是如空气和水一样自然的东西。然而,树莓派团队在处理Pico这类MCU时可能多少有点“屁股决定脑袋”了,仍然按照自己的习惯照搬了Linux的那套开发习惯到MCU环境中。
MDK虽然老旧、不支持多级工程管理、偶尔闪退、语法提示经常出错、被破解的爹妈都不认识……被人骂了那么多,但Cortex-M用MDK开发仍然是主流。但无奈,人家的孩子人家说了算,官方明确态度说暂时不支持Arm Compiler 6,也不支持用MDK这样的不带cmake支持的IDE,你也没办法啊。
好在Pico-SDK是一个基于BSD 3-Clause协议的开源项目;RP2040的数据手册写的也很清晰。官方说不支持,我们就自己来呗?于是就有了这个MDK专属的Pico-Template开源项目。
实际上:
Pico-Template 是目前世界上第一个用MDK配合Arm Compiler 6开发Pico的模板;
使用该模板你可以使用Pico-SDK来访问全部的外设
实际使用中 Pico-Template 具有以下特点:
支持Arm Compiler 6
可以使用RTE和Pack-Installer获得各类中间件软件包
告别纯汇编编写的startup文件,使用纯C语言进行开发
配置栈和堆的大小更为简单
支持使用JLINK进行调试
默认搭载了perf_counter服务
一键切换不同的地址空间布局
在外部Flash里执行代码
在SRAM里执行代码(代码仍保存在外部Flash里)
在SRAM里调试
【裸机思维】对该开源项目提供持续的维护和更新
【Pico-Template的部署】
第一种方式:使用git工具进行下载
mkdir pico-mdk
cd pico-mdk
git clone https://github.com/GorgonMeducer/Pico_Template .
3、将Pico-Template所依赖的其它仓库以submodule的形式更新到本地:
git submodule update --remote --init
至此,我们已经成功的将Pico-Template同步到了本地一个叫做pico-mdk的目录下。
第二种方式:手工下载压缩包
1、打开Pico-Template在Github上的Release页面,下载最新版本的压缩包。
完成下载后,解压缩到本地。
完成下载后,解压缩到本地。打开解压后的目录,应该看到类似下图的内容:
全选上述目录列表中的内容后,将它们拷贝到Pico-Template的pico-sdk目录内
3、打开perf_counter在github上的Release页面,下载最新的压缩包:
完成下载后,解压缩到本地。打开解压后的目录,应该看到类似下图的内容:
全选上述目录列表中的内容后,将它们拷贝到Pico-Template/project/mdk/perf_counter目录内:
至此,我们成功的完成了Pico-Template的合体工作。恭喜恭喜!
第三种方式:网盘见
【如何编译和下载】
双击后,就可以见到我们熟悉的界面:
单击编译,应该可以顺利的看到类似如下的结果:
可以看到,在工程目录下(project/mdk/) 生成了一个名为 template.uf2 的文件——这就是Pico专用的镜像文件:
此时,我们可以按住Pico上的白色按钮不放、将Pico的USB接口连接PC。当我们在文件管理器中发现一个新的叫做 PRI-RP2 的U盘时,说明Pico已经成功进入烧录准备状态。
【如何配置栈和堆的大小】
单击图中红圈内选中的“Edit”按钮。
这里宏STACK_0_SIZE和HEAP_0_SIZE就是我们要配置的栈与堆的尺寸。请暂时无视其它宏的内容,也不要修改它们。
【如何在SRAM中执行代码】
这一操作的本质实际上是更换了对应的scatter-script脚本。所有用到的链接脚本都保存在工程目录下:
有兴趣的小伙伴可以自行把玩。
【如何使用MDK进行调试】
https://wiki.segger.com/Raspberry_Pi_Pico
【elf2uf2转换工具】
工程模板会在每次编译完成后执行 axf2uf2.bat,将生成的elf/axf文件转换成Pico可以直接使用的uf2文件,方便用户进行U盘拖放操作。
【说在后面的话】
就一个M0+而已,干嘛开发它我还要去用命令行、用Linux、学cmake?凭什么?
你们Linux玩家人均cmake、命令行、OpenOCD、GDB、gcc,所以就不管单片机玩家的死活了么?
跟我这儿玩啥凡尔赛?
老子就不想用cmake……你还不让我玩了?