PikaScript实践记录(1)之hello world

PikaScript实践记录之"hello world !"

Author:onceday Date:2022年8月26日

也信美人终做土,不堪幽梦太匆匆!

前言: 本文章基于PikaScript脚本语言在阿波罗Stm32F429开发板的实践记录。PikaScript是跨平台的超轻量级嵌入式 Python 引擎,零依赖,零配置,中文资料非常丰富。可获取关于它们的详细资料:

1.引言

嵌入式是一个非常广泛的概念,但在这里,它指嵌入式MCU,以下是百度百科的解释:

微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器(Central Process Unit;CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。

PikaScript并不局限于MCU这块,它可以在嵌入式Linux上也大放光彩,但这并不是本文的侧重点。这里只谈嵌入式MCU,只做裸机开发,只用寄存器编程,这是一种浪漫,源自于热爱。

本文的内容会很基础,这是一个小白的成长之路,记录都是随处可见,唾手可得的基础知识,并希望留下一点回忆。本文并不会是绝对正确的,但它一定是自由的,何为自由?那就是你可以拒绝本文的观点,这是你的自由,这也是我的自由。

本文所用的阿波罗Stm32F429是一个外设非常丰富开发板,且拥有正点原子提供的众多资料。单片机的种类很多,学习一定要挑一个简单的,基础的,资料众多的开发板。并且把所有的常见功能都亲自试一遍,这是一种明智的策略,可避免几个月下来,只会控制几个GPIO和通信外设。至于熟悉这些外设,将是一辈子的事情。

在这里插入图片描述

图1.1 正点原子出品的阿波罗Stm32F429开发板
2.在Windows 10下搭建开发环境

其他平台,如Linux,mac等请自行寻找资料。

2.1 下载交叉编译平台

单片机的架构和常见的ARM和X86有很大的不同,因此我们需要在Win 10下编译C源文件,然后在MCU上运行,这种在一个平台上生成另外一个平台的可执行目标文件,或者二进制文件,就是交叉编译。

详细解释可查看文档:交叉编译_百度百科 (baidu.com)

我们能用的编译软件很多,有收费的,也有开源的。免费的编译软件大多基于eclipse的深度定制,你可以发现他们就像亲兄弟一样相似。

这里使用收费的ARM Keil v5,不过是破解白嫖,因为本文是仅供学习交流之用,不要使用破解版去开发产品卖钱!

其他软件自行了解,国内关于keil的开发资料很多,站在巨人的肩膀上才能看得更远,如果N年以后,你觉得Keil垃圾,甚至说用集成IDE开发是菜鸟行为。这很正常,得恭喜你,这N年你没有虚度,变得很强。在《第一性原理》里面,混沌大学创始人李善友说过,如果一个人一直在成长,一直打破自己的认知界限,那么他就会觉得之前的自己很幼稚。单片机的学习过程是一样的,所以说希望我们一直是菜鸟,一直在学基础知识。

下载Keil非常简单,除了下载速度有点慢之外。

在这里插入图片描述

图2.1 Keil官网下载软件

如图所示,MDK-ARM就是Stm32F429所需要的编译IDE,适用于常见的Cortex-M系列MCU。

Cortex-M是非常典型的单片机内核架构,但不在鄙视链的高端,学这个可能会让你“低人一等”,要有心理准备。

旁边还有一个51单片机,STC宏晶科技这个产品做得挺不错的,可以看看:

Keil官网:Keil Product Downloads

点击进去,然后填写信息,随便填就行,然后就会出现下载界面了。

在这里插入图片描述

图2.2 ARM Keil下载(点击MDK537.EXE即可下载)

作为一个计算机业余爱好者,是无法忍受官网下载的速度,这个时候可以使用一款“软件”—迅雷来提提速。

在这里插入图片描述

图2.3 从浏览器复制链接到迅雷下载

类似的其他同类软件都可以试一试,只要能提速就好。

下载好了之后,双击运行安装。

在这里插入图片描述

图2.4 自定义安装位置

这里core就是软件安装位置,Pack是交叉编译所需的库文件,后面会用到。 请选择一个合适的位置安装。

其他界面直接选择,个人和公司信息随便填写,然后等待安装完成。

然后会弹出一个Pack安装界面,这是单片机开发编译所需的库文件集合,可以看到装置(单片机)类型很多,这需要根据所开发的单片机类型来下载。

本文开发Stm32F429,所以选择STM32F429IGT6,下载它的包文件。

在这里插入图片描述

图2.5 包下载器里下载单片机编译所需的库文件

这里的包也可能下不动,视不同网络情况,如果下不动,就需要手动使用迅雷下载

keil安装包默认是放在微软云平台Azure上面,国内访问速度有限,可以使用迅雷离线链接下载这些安装包。

官网离线包地址:https://www.keil.com/dd2/pack/#!#eula-container

网页上面找到所需包的下载链接(根据Pack Installer里面的包名找,如STM32F4xx_DFP),复制到迅雷中下载即可!

  • 在Pack installer的导航栏,file->import,即可手动导入离线下载的包文件。
  • 如果一直卡更新下载,手动在Pack installer的导航栏,Packs->Check For Updates On launch,取消选择,然后重新打开Pack installer,再手动安装。

这个时候,已经解决了大部分问题了,但是软件未破解,代码数量受限制。

破解软件可自行在网上寻找合适的,这里提供一把钥匙:

需要以管理员身份启动ARM keil,然后在导航栏的file->License Management打开许可证页面,把

Computer ID(CID)复制到合适的软件 ,Target选ARM,然后将你的序列号,复制到许可证页面的New license ID code,然后add LIC

成功的话,将看到Support Period变成Dec 2032

到这里,已经完成ARM keil的安装了。

2.2 配套辅助开发软件

第一个是VScode,免费的打字软件,很好用。

第二个是STM32CubeMX,可以快速可视化查看Stm32单片机外设,以及配置情况,一键生成keil工程。

Keil+VScode+STM32CubeMX是本文主要使用的开发工具。

3.下载PikaScript工程

PikaScript官方文档教程提供了多种快速上手路径,Stm32F429所属应为BSP工程开始,但是很可惜的是,Stm32F429开发板不在官方的支持板上。

这里面有keil和linux下的仿真工程,无需实际MCU来运行。还有大量的BSP工程,目前Stm32F1系列支持比较完善,可以尝试从这些模块开始。最为特殊的就是官方定制的Pika派,专门为了PikaScript设计和制造,拥有完善的代码支持库。

所以目前学习PikaScript的一个比较好的方式是购买官方开发板,非常优惠!

可选配置:

  • Lite 青春版:STM32G030 + CH340 串口芯片 64k flash 8k ram
  • Pro 专业版:STM32G030 + DAPLink 调试器 64K flash 8k ram
  • Plus 顶配版:STM32G070 + DAPLink 调试器 128k flash 32k ram

在这里插入图片描述

图3.1 Pika派的样貌

这个开发板由 PikaScript 项目官方支持,持续滚动更新,PikaScript 的最新内核,最新功能,都可以在这个开发板上抢先体验到。

这个开发板也由项目官方适配了丰富外设模块、包括 GPIO、TIME、ADC、IIC、LCD、KEY、PWM 等模块的驱动都已经开发好,可以直接用 python 进行编程。

非常可惜,要是买一个Pika派就好了。

现在暂时无需下载PikaScript,直接进入下一步骤吧。

4.下载BSP代码

哪里有BSP代码呢?当然是互联网上,之前在Keil下载的Pack已经包含了标准头文件、可重定位目标文件、说明文档等。但是这是最基础的BSP代码,离我们想显示hello world,那还远远不够。

所以需要更“高级”的BSP代码,非常幸运的是,国内有两个比较好的免费资料提供网站:

阿波罗Stm32F429本来就是正点原子的产品,因此直接下载他们全套资料,非常多,包含上百个项目例程。

选择一个合适的,就实验62 综合测试实验吧。

在这里插入图片描述

图4.1 选择一个合适的工程项目

在keil里面打开该工程,最好复制到一个新的文件夹里面,并且更改一个合适的文件名。

在keil导航栏,Project->Open Peoject,然后浏览到该项目文件夹内即可,一般在项目文件夹内的USER内,有绿色的keil图标显示。

导入之后,会发现,好多文件,好多代码。这些工程是已配置好的keil工程,有头文件包含路径、C源文件、静态库文件、全局宏定义、编译选项、下载选项、调试选项等,都预先配好。

在这里插入图片描述

图4.2 导入一个示例工程

直接编译一下,就是导航栏file、Edit、View下的几个向下箭头图标。

需要使用rebuild这个,它两个箭头在匣子里面,与众不同。

在这里插入图片描述

图4.3 编译按钮

然后下载到Stm32F429开发板上,下载可以直接点图4.3中的Load图标,但这个需要连接调试器才行,如Stlink,Jlink,CMSIS-DAP。

如果没有调试器,要使用串口下载,这个要考虑具体的情况,购买成品开发板商家肯定会讲解如何下载可执行目标文件。

事实上,绝大多数单片机都会内置bootloader程序,通过该程序可以使用串口,usb,can等通信接口来烧录flash。

问题是,这个烧录过程,有的可能做到一键下载,有得怕是要一系列的步骤操作后才能下载。所以这是极度依赖单片机生产厂家和售卖厂家的操作。

关键就一点,狂问卖给你的人如何烧录就行了。

5.显示hello world

激动人心的时候来了,Stm32F429在烧录新的代码启动后,进入一个可以操作的界面。

在这里插入图片描述

图5.1 Stm32F429的主界面

双击记事本,输入"Hello World!"。

在这里插入图片描述

图5.2 成功显示hello world

非常简单就显示了hello world,似乎很容易。

但是可以看看这个项目有多少C代码文件,难道随便实现点功能就要重新编译一次代码,然后下载?

这不太好,如果它能支持PikaScript,无需重新编译,别说显示"hello world",写个游戏运行都可以。

不过中间有个拦路虎,就是BSP代码,哪些是BSP代码?为什么要写BSP代码?

这是一个过程抽象,过程抽象可以有很多层次,显然,高层次应该是Pikascript,低层次是汇编和C。但中间分水岭得看具体情况。BSP代码就是底层的过程抽象,为上面PikaScript提供统一的接口,从而屏蔽底层硬件的差异。

所以接下来的,将干掉这个拦路虎(BSP库),用上PikaScript,享受高效率编程。

问题是,这个BSP库,可能随着项目功能的增加,会越来越多,干掉一批,又来一批。

但好消息是,有很多人写过这个BSP代码,因此去网上找就行了。

那么,接下来的任务就是先让单片机启动并且通过串口输出一个hello world,这是真正意义上的第一步,而且将使用Pikascript来调用BSP输出。

(--------------------------------------------未完待续--------------------------------------------)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值