【说在前面的话】
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……你还不让我玩了?
1.2021年第9期《单片机与嵌入式系统应用》电子刊新鲜出炉!
2.苹果进军RISC-V
3.我是做驱动还是应用更好?
4.嵌入式项目生成器,了解一下!
5.嵌入式还有哪些风口值得入?
6.教你在RISC-V中使用DSP指令!
免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。