带Wi-Fi的树莓派Pico W上市了

Raspberry Pi Pico 是一款低成本,高性能的嵌入式开发板,也是树莓派基金会发布的第一款MCU。

它集成了 Raspberry Pi 自己的 RP2040 微控制器芯片,运行速度高达133 MHz的双核 Arm Cortex M0 + 处理器,264KB SRAM和2MB板载闪存,以及26个多功能GPIO引脚。

说的再好……Pico没有无线联网功能。

终于!赶在2022年上半年最后一天,Raspberry Pi发布了 Pico W。

带Wi-Fi功能的树莓派MCU,上市了。

关于无线芯片

树莓派基金会此次采用的无线芯片是英飞凌的CYW43439,该芯片同时支持Wi-Fi和低功耗蓝牙,不过目前只能在Pico W上启用Wi-Fi,蓝牙要再等等。

相关电路封装在一个金属屏蔽壳中,为相关集成商降低了合规成本。  

有了2.4GHz 802.11n无线功能之后,Pico W可以成为常见loT解决方案的重要一环。

关于引脚

引脚和老款Pico保持一致

关于固件

https://datasheets.raspberrypi.com/soft/micropython-firmware-pico-w-290622.uf2

开发文档

https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf

关于售价:

Pico W现在官方售价6美元一块,只是现在是全球缺货状态。粉丝们估计要再等一等了。

ARM发布Immortalis GPU旗舰芯片:手机端首次实现硬件光追

近日ARM发布了一系列新的芯片技术,其中包含了新的旗舰级处理器Immortalis GPU,这是首个在手机端实现硬件光线追踪的GPU。

ARM将Immortalis视为移动设备光线追踪技术转型的开端,并表示此前该公司已经成功出货了80亿个Mali GPU。

据悉,Immortalis基于Mali 设计,采用10-16核,并承诺性能比上一代Mali GPU提高15%。

根据ARM放出的路线图,该公司计划在2023年推出Immortalis新的旗舰GPU“Titan”,2024年推出“Krake”,这两颗芯片有望继续强化光追性能。

实际上,目前已经有不少手机厂商开始尝试布局光线追踪。

早些时候,三星曾宣布在Exynos 2200上引入类似的图像处理技术,OPPO也曾展示于手机上实现的光追Demo。

不过,需要承认的是,与硬件厂商对光追的积极态度不同,游戏开发商们对手机端的光追始终表现的兴趣平平,相应技术推出后是否会获得市场认可与生态支持仍是一个问题。

如何在树莓派上玩射击游戏,Raspberry Pi 安装Quake 3

在本指南中,记录下如何在树莓派上玩第一人称射击类游戏,需要安装和配置Quake 3。

《Quake 3》是第一人称射击游戏,可以进行多人竞技场射击竞赛。

虽然《Quake 3》早在1999年就已经发布,但在射击游戏爱好者中仍然备受推崇。

软件开发团队发布了引擎的源代码,现在它已经被移植到各种设备上运行,包括树莓派。

在本教程中,我将通过两种不同的方法让Quake 3在树莓派上运行。

第一个也是最直接的方法是使用通过包仓库提供的编译版本安装,这种方法虽然简单,但性能略差。

另一种方法是编译高度优化的Q3Lite,Q3Lite可以在树莓派上高帧数运行,这是比较好的选择。

既然要玩游戏,必然需要运行一个带有桌面界面的Raspberry Pi操作系统版本。

设备清单

下面是所有的设备清单,点击链接直达特别优惠购买

建议

可选

我在Raspberry Pi 4和Raspberry Pi 3B+上测试了本教程,运行的是Raspberry Pi OS的最新可用版本(Buster版本)。

软件包库中安装Quake 3

从Raspberry Pi OS软件包仓库安装Quake 3是最简单的方式。

与更快的Q3Lite相比,有几个优点。

首要原因是它的安装和运行超级简单。只需几个命令,就可以将Quake 3安装到Raspberry Pi上。

第二个原因是,如果使用的是树莓Pi 4,这是目前玩Quake 3 Arena的唯一方式。Q3lite目前还不支持Pi 4的硬件。

缺点是,性能还有很多需要改进的地方。一旦增加了多个玩家,帧数就会急剧下降。

将Quake 3安装到你的Raspberry Pi上

在本节中,完成Quake 3安装到Raspberry Pi上。

为了使这个过程简单化,我使用了Raspberry Pi OS资源库提供的Quake 3版本。

1. 第一个任务是更新操作系统。

可以通过运行以下两个命令来升级所有已经存在的软件包。

sudo apt update
sudo apt full-upgrade

2. 现在操作系统已经更新了,开始从资源库中下载Quake 3。

运行以下命令开始安装。

sudo apt install quake3

这个命令直接从Raspbian仓库下载软件包。请注意,这不包含游戏数据,只包含Quake 3 Arena引擎的移植版本。

3. 安装好Quake 3软件包后,需要通过下面的命令来下载游戏数据。

使用了一个名为game-data-packager的程序。这个程序会将Quake 3竞技场的演示数据下载到设备上。

game-data-packager quake3 -i --gain-root-command sudo

这个过程需要一些时间,因为它会下载Quake 3的数据并将其提取到所需位置。

4. 如果想使用Quake 3的零售版,那么你还需要遵循几个步骤。

首先,从Quake 3 Arena零售版安装中找到名为pak0.pk3的文件。

然后将该文件复制到Raspberry Pi上的以下目录/usr/local/games/quake3/baseq3。

在树莓派上运行Quake 3。

完成Quake 3的安装到Pi上,就可以运行它了。

1. 要在Raspberry Pi上找到Quake 3,打开开始菜单。

点击屏幕左上角的树莓图标即可打开。

2. 接下来需要将鼠标悬停在 “游戏 “菜单上(1. 将鼠标悬停在这个选项上,会弹出操作系统上安装的游戏列表。

在出现的菜单中,点击 “Quake 3 Arena “选项(2.

3. 现在已经在树莓派上运行Quake 3了,并且进入到它的主菜单。

在这个菜单中,可以开始一个新的游戏,并配置游戏的分辨率等设置。

在树莓派上编译Q3Lite

在本节中,完成在树莓派上编译Q3Lite。

使用Q3Lite版《Quake 3》最显著的优势是性能。

Q3Lite采用了ioquake3引擎,删去了不需要的功能,并实现了OpenGL ES渲染器。这两项改进结合在一起,使得所有的树莓PIS都能有更快的渲染速度。

使用此构建,可以在非超频的Raspberry Pi 3上轻松实现每秒超过60帧的速度。

现阶段,Q3Lite目前还没有对树莓派4的支持。不过,很快就应该会支持了。

编译Q3Lite到Raspberry Pi。

在本节中,完成将Quake 3编译安装到Raspberry Pi。

为了简化这个过程,使用Raspberry Pi操作系统仓库提供的Quake 3版本。

1. 在Pi上编译Q3Lite之前,需要确保操作系统是最新的。

可以运行以下命令更新所有现有的软件包。

sudo apt update
sudo apt full-upgrade

2. 接下来,需要安装编译Q3Lite所需的所有包。

运行下面的命令来安装所需的软件包。

sudo apt install git libasound2-dev libudev-dev libibus-1.0-dev libevdev-dev libdbus-1-dev libcurl4-openssl-dev fcitx-libs-dev libgbm-dev libsamplerate0-dev xinput

3. 包全部安装完毕后,来下载Q3Lite源码。

可以利用git程序来检索所需的代码。

git clone https://github.com/cdev-tux/q3lite.git

3. 现在cd到Q3Lite目录下。

cd ~/q3lite

4. 现在运行Q3Lite团队编写的bash脚本。

这个脚本将完成所有繁重的工作,编译Q3Lite软件以及下载它所需要的所有额外数据。

sudo ./make-raspberrypi.sh

这个编译过程会花费一些时间,这个过程在较新的Raspberry Pi上会更快些。

5. 下一步就是安装Quake 3 Arena的补丁数据。

使用make-raspberrypi脚本。

sudo ./make-raspberrypi.sh install

6. 在安装过程中,会被问到是否要下载更新的Quake 3 pak文件。

由于Q3Lite需要这些文件,输入y,然后按回车键。

7. 在脚本下载pak文件之前,需要同意idTech的EULA。

使用TAB键选择”<I Agree>”,然后按ENTER键。

8. 安装过程完成后,可以获取游戏数据来玩了。

获取Quake 3游戏数据

对于这一步,需要在其他设备上拥有Quake 3 Arena,或者下载并安装Quake 3 Demo。

1. 需要在Quake 3的安装目录下找到一个名为pak0.pk3的文件。

这个文件包含了Quake 3所需要的所有数据,包括关卡、角色和声音。

2. 找到了这个文件的位置,把它复制到Raspberry Pi上。

需要复制到的文件夹位于Raspberry Pi上的/usr/local/games/quake3/baseq3。

3. 把文件复制过来,就可以在目录上使用ls命令来验证一切是否正常。

ls -l /usr/local/games/quake3/baseq3/

从这个命令中,应该看到类似下面的东西。现在系统上已经有了所有需要的游戏包。

-rw-r--r-- 1 root root 479493658 Jun 11 09:30 pak0.pk3
-rw-r--r-- 1 root root    374405 Nov 14  2002 pak1.pk3
-rw-r--r-- 1 root root   7511182 Nov 14  2002 pak2.pk3
-rw-r--r-- 1 root root    276305 Nov 14  2002 pak3.pk3
-rw-r--r-- 1 root root   9600350 Nov 14  2002 pak4.pk3
-rw-r--r-- 1 root root    191872 Nov 14  2002 pak5.pk3
-rw-r--r-- 1 root root   7346884 Nov 14  2002 pak6.pk3
-rw-r--r-- 1 root root    320873 Nov 14  2002 pak7.pk3
-rw-r--r-- 1 root root    454478 Nov 14  2002 pak8.pk3
drwxr-xr-x 2 root root      4096 Jun 11 08:43 vm

在树莓派上玩Q3Lite

现在已经完成了Q3Lite的安装,终于可以在Raspberry Pi上启动它了。

1. 首先,打开Raspberry Pi上的开始菜单。

可以通过点击屏幕左上角的树莓图标打开开始菜单。

2. 在开始菜单中,需要将鼠标悬停在 “游戏 “选项上(1.

然后将鼠标悬停在 “Q3lite “文件夹上(2。

在弹出的菜单内,点击 “Q3lite “选项(3.

3. 现在有一个完全可以运行的Quake 3在Raspberry Pi上。使用优化后的Q3Lite引擎。

到这里,你应该已经在你的Raspberry Pi上安装并运行了Quake 3。

原文:

https://pimylifeup.com/raspberry-pi-quake-3/

翻译:

如何在树莓派上玩射击游戏,Raspberry Pi 安装Quake 3

Canonical正式发布专为物联网和嵌入式设备优化的Ubuntu Core 22操作系统

2022年6月16日,Canonical 宣布推出专为物联网和边缘设备优化的 Ubuntu 22.04 LTS 完全容器化的版本 Ubuntu Core 22,该操作系统现在可通过https://cn.ubuntu.com/download/iot下载。

结合 Canonical 提供的技术,该版本将 Ubuntu 全面且行业领先的操作系统和服务带到各种嵌入式和物联网设备中。

物联网制造商面临着复杂的挑战,他们需要控制在预算范围内并准时地部署设备。随着设备组的扩大,确保大规模安全性和远端管理也并非易事。Ubuntu Core 22通过提供具备超高安全性、自我修复且低接触的操作系统,帮助制造商应对这些挑战。该操作系统对不断扩大的芯片和物联网设备制造商合作伙伴生态系统提供支持。

Canonical 首席执行官 Mark Shuttleworth 表示:“Canonical 的目标是从开发环境到云端,再到边缘和设备的任何位置,提供安全、可靠的开源操作系统。通过发布新版操作系统,以及 Ubuntu 的实时内核(Real-Time Kernel),我们已经准备好为整个嵌入式世界提供 Ubuntu Core 的优势。”

支持实时内核

Ubuntu 22.04 LTS 的实时内核现已推出 beta 版,可提供高性能、超低延迟和工作负载可预测性,适用于对设备反应时间敏感的工业、电信、汽车和机器人等使用场景。

新版本包含一个完全先占式(Preemptible)内核,用以确保有时限的反应时间。Canonical 与芯片商和硬件制造商合作,在 Ubuntu 认证硬件上实现开箱即用的实时计算功能。

以物联网应用为中心

Ubuntu Core 提供功能强大、完全容器化的 Ubuntu,将 Ubuntu 拆分成被称为 snap 的软件包,包括内核、操作系统和应用程序。每个 snap 都是一个独立的沙箱,其中包含应用软件的依赖包,完全实现可移植性和可靠性。Canonical 的 Snapcraft 框架支持多通道的 snap 开发,进而实现快速迭代、自动化测试和可靠部署。

每台运行 Ubuntu Core 的设备都有一个专属的物联网应用商店平台(IoT App Store),不仅可以完全控制相应设备上的应用,还可在同一个物联网应用商店平台上创建、发布和分发软件。物联网应用商店平台还为企业提供高级的软件管理解决方案,从而实现一系列新的本地部署功能。

该系统可确保内核、操作系统和应用程序的事务化、任务关键型在线更新(OTA),更新始终会成功完成,否则会自动回滚到以前运行的版本,因此设备不会因更新未完成而“变砖”。Snap 还提供增量更新来尽量减少网络流量,并提供数位签名以确保软件的完整性和来源。

安全和低接触

Ubuntu Core 提供开箱即用的高级安全功能,包括安全启动(Secure Boot)、全储存加密(Full Disk Encryption)、安全的系统恢复以及对操作系统和应用程序的权限限制。

KMC Controls 的首席运营官 Brad Kehler 表示:“KMC Controls 的一系列物联网设备专门为关键任务型工业环境而设计。对我们的客户来说,安全最为重要。我们之所以选择 Ubuntu Core 是因为它具有内置的高级安全功能和功能强大的在线更新框架。Ubuntu Core 提供10年安全更新承诺,让我们能够在长期使用设备的过程中确保其安全性。借助已验证的应用支持框架,我们的开发团队可以专注于创建用于解决业务问题的应用。”

客户受益于 Canonical 提供为内核、操作系统和应用程序代码级别的10年长期安全维护服务,使设备及其应用能够满足企业和公共领域的数位安全要求。

不断发展壮大的合作伙伴生态圈

如今 Canonical 已与研华科技和联想等多家领先的芯片和硬件厂商建立合作伙伴生态圈,由此确立了 Ubuntu Core 的市场地位。

Ubuntu 认证计划更定义了一系列现有的物联网和边缘设备,这些受信任的设备可与 Ubuntu 配合使用。该计划的独特之处在于,在设备的整个生命周期内,Canonical 实验室会在认证硬件每次安全更新时对其进行持续测试。

研华 WISE-Edge+ 总监 Eric Kao 表示:“研华提供嵌入式、工业、物联网和自动化解决方案。我们将继续深入参与 Ubuntu 硬件认证计划。Canonical 认证的硬件会通过广泛的测试,提供稳定、安全和优化的 Ubuntu Core,帮助我们的客户加快产品上市和缩减开发成本。”

更多Ubuntu Core 22的详细资讯

如需了解 Ubuntu Core 22 的更多资讯,请访问 http://cn.ubuntu.com/internet-of-things/core 。Canonical 将发布一系列技术文章,对 Core 22 的功能进行更深入的探讨。

如需立即开始使用 Ubuntu Core 22,请通过此链接下载已支持的平台的镜像。


关于Canonical

Canonical 是 Ubuntu 发行商,Ubuntu 是用于容器、云、超大规模计算的领先的操作系统。大部分公有云工作负载都用Ubuntu,大部分的新智能网关、交换机、自动驾驶汽车和先进的机器人也如此。Canonical 为 Ubuntu 商业用户提供企业级支持和服务,公司创立于2004年,是一家私人控股公司。

让Apache IoTDB轻松部署到ARM开发板

Apache IoTDB(物联网数据库)是一体化收集、存储、管理与分析物联网时序数据的软件系统。

采用轻量式架构,具有高性能和丰富的功能,并与Apache Hadoop、Spark和Flink等进行了深度集成,可以满足工业物联网领域的海量数据存储、高速数据读取和复杂数据分析需求。

官方提供了x86的版本和源代码,但没提供ARM的版本。

这里编译了一个arm64的版本,方便广大的ARM玩家测试使用。

你可以在树莓派4B,Rockpi,Firefly,香蕉派等arm64架构的系统上调试,运行此镜像。

注:这里的v0.13版本,对应的是apache-iotdb-0.13.0-server-bin.zip这个官方包。

主要工作目录:

/iotdb/sbin

运行后,执行start-server.sh文件,即可启动IoTDB。

nohup start-server.sh >/dev/null 2>&1 &

默认用户名密码都是root。

命令行登录,请执行:

start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root

官方仓库说明:

https://hub.docker.com/r/verdureorange/iotdb_arm

直接拉取镜像:

docker pull verdureorange/iotdb_arm:v0.13

Python的打包神器 —— Nuitka

一. pyinstaller和Nuitka使用感受

1.1 使用需求

这次也是由于项目需要,要将python的代码转成exe的程序,在找了许久后,发现了2个都能对python项目打包的工具——pyintaller和nuitka。

这2个工具同时都能满足项目的需要:

  • 隐藏源码。这里的pyinstaller是通过设置key来对源码进行加密的;而nuitka则是将python源码转成C++(这里得到的是二进制的pyd文件,防止了反编译),然后再编译成可执行文件。
  • 方便移植。用户使用方便,不用再安装什么python啊,第三方包之类的。

1.2 使用感受

2个工具使用后的最大的感受就是:

  • pyinstaller体验很差!
    • 一个深度学习的项目最后转成的exe竟然有近3个G的大小(pyinstaller是将整个运行环境进行打包),对,你没听错,一个EXE有3个G!
    • 打包超级慢,启动超级慢。
  • nuitka真香!
    • 同一个项目,生成的exe只有7M!
    • 打包超级快(1min以内),启动超级快。

二. Nuitka的安装及使用

2.1 nuitka的安装

  • 直接利用pip即可安装:pip install Nuitka
  • 下载vs2019(MSVS)或者MinGW64,反正都是C++的编译器,随便下。

2.2 使用过程

对于第三方依赖包较多的项目(比如需要import torch,tensorflow,cv2,numpy,pandas,geopy等等)而言,这里最好打包的方式是只将属于自己的代码转成C++,不管这些大型的第三方包!

以下是我demo的一个目录结构(这里使用了pytq5框架写的界面):

├─utils//源码1文件夹├─src//源码2文件夹├─logo.ico//demo的图标└─demo.py//main文件

使用以下命令(调试)直接生成exe文件:

nuitka --standalone --show-memory --show-progress --nofollow-imports --plugin-enable=qt-plugins --follow-import-to=utils,src --output-dir=out --windows-icon-from-ico=./logo.ico demo.py

这里简单介绍下我上面的nuitka的命令:

  • --standalone:方便移植到其他机器,不用再安装python
  • --show-memory --show-progress:展示整个安装的进度过程
  • --nofollow-imports:不编译代码中所有的import,比如keras,numpy之类的。
  • --plugin-enable=qt-plugins:我这里用到pyqt5来做界面的,这里nuitka有其对应的插件。
  • --follow-import-to=utils,src:需要编译成C++代码的指定的2个包含源码的文件夹,这里用,来进行分隔。
  • --output-dir=out:指定输出的结果路径为out。
  • --windows-icon-from-ico=./logo.ico:指定生成的exe的图标为logo.ico这个图标,这里推荐一个将图片转成ico格式文件的网站(比特虫)。
  • --windows-disable-console:运行exe取消弹框。这里没有放上去是因为我们还需要调试,可能哪里还有问题之类的。

经过1min的编译之后,你就能在你的目录下看到:

├─utils//源码1文件夹├─src//源码2文件夹├─out//生成的exe文件夹
    ├─demo.build 
    └─demo.dist
		└─demo.exe//生成的exe文件├─logo.ico//demo的图标└─demo.py//main文件

当然这里你会发现真正运行exe的时候,会报错:no module named torch,cv2,tensorflow等等这些没有转成C++的第三方包。

这里需要找到这些包(我的是在software\python3.7\Lib\site-packages下)复制(比如numpy,cv2这个文件夹)到demo.dist路径下。

至此,exe能完美运行啦!

文章转载:Python编程学习圈(版权归原作者所有,侵删)

免费 “送” 芯片,Google为开源项目推出全新门户网站

自 2020 年 11 月起,Google 就与 SkyWater Technology 展开了合作,使用后者的开源工艺设计套件(PDK)来帮助小型开源项目进行芯片制造,在此过程中 Google 会承担芯片制造的费用。为了更好地帮助开发者,Google 在今天推出了一个新的芯片设计门户网站。

Google 的这项计划名为 Open MPW Shuttle Program,允许任何人利用开源 PDK 和其他开源 EDA 工具来提交开源集成电路设计,Google 会为他们免费制造,不会收取任何费用。虽然芯片制造是在 130 纳米工艺(SKY130)上完成的,但这一计划对资金有限的开源硬件项目具有巨大的推动作用(如:物联网的硬件原型设计等)。SKY130 成熟工艺节点为物联网应用原型提供了一种很好的方式,这些应用通常需要在成本、功耗与性能之间取得平衡。它提供比尖端工艺节点更快的周转率,而价格却只有几分之一。

新推出的芯片设计门户网站具备了详尽的教程,会根据初级、中级和高级制定了对应的学习路线,开发者或者学生群体可以按照自己的水平学习对应的技能。

网站还罗列出了芯片设计过程中需要使用的工具,里面的每一个工具都是开源工具。通过 Google 提供的教程和对应的工具,开发者可以快速完成芯片设计并提交,最终完成制造。

目前 Open MPW Shuttle Program 已经收到了诸如 Microwatt OpenPOWER 64 位芯片、RISC-V 芯片、数独加速器、各种游戏的硬件实现、SRAM/ReRAM 生成器以及其他小型 ASIC 的提交。

Google 与其合作伙伴正在为他们的下一轮制造接受开源项目,提交期限为 6 月 8 日,错过了也没关系,这是一项长期计划,开发者也可以等待下一个提交周期。

相关链接:https://developers.google.com/silicon

Ubuntu 22.04 LTS 测试版实时内核已可申请

在4月21日,Canonical宣布了Ubuntu 22.04 LTS的实时内核新特性,已可申请测试。

测试版实时内核基于上游 v5.15,22.04 LTS 内核集成了针对 x86_64 和 AArch64 架构的树外 PREEMPT_RT 补丁。一旦进入 GA (通用可用性),新的实时内核将为下一代机器人、物联网和电信创新提供确定性的响应时间,以满足其极低的延迟要求。

确定性的响应时间

实时 Ubuntu 测试版的调度程序可以抢占内核中的线程,包括关键部分、中断处理程序和中断禁用代码序列,保证有界的响应。通过最小化内核代码中不可抢占的关键部分,PREEMPT_RT 补丁(尚未完全上游)使测试内核比主线更具抢占性。

为生产做好准备

由于这是一个 beta 版本内核,它不提供任何支持,同时也建议不要将其用于生产工作负载。我们致力于将实时内核带入生产级别,而您的反馈将帮助我们实现此目标。请考虑通过此处报告您可能遇到的任何错误来测试并积极影响 Ubuntu 社区。

此外,请考虑加入我们的免费测试计划,与我们的团队建立一个开放的沟通渠道,提供反馈并分享建议。作为实时 Ubuntu beta 测试人员,一旦内核准备好用于生产,我们将首先通知您。

获得测试版实时内核

测试内核可通过Ubuntu订阅个人版(UA-I) 获得且免费供个人使用,这是最全面的 Linux 企业订阅,涵盖开放基础架构的所有方面。

要将您的个人计算机添加到 UA 订阅,请运行:

ua attach <免费的TOEKN>

确保你在使用至少27.8版本的ubuntu-advantage-tools软件包,可通过此命令查看当前版本:

ua version

要在Ubuntu 22.04(Jammy Jellyfish)中升级ubuntu-advantage-tools到27.8,请运行命令:

sudo apt install ubuntu-advantage-tools=27.8~22.04.1

要启用测试版实时内核,可运行:

ua enable realtime-kernel –beta

请注意,在启用实时内核后您需要手动配置 grub 以恢复到原始内核。更多内容请参考:

ua help realtime-kernel

来自:cn.ubuntu.com
作者:Edoardo Barbieri 

一条命令部署FreeRTOS for XR806交叉编译环境

之前,全志科技XR806主要是用来跑OpenHarmony(鸿蒙)的。

但由于鸿蒙这个操作系统还比较新,编译环境配置起来有些麻烦,于是我就做了一个基于Docker的交叉编译环境。

最近看到全志科技公布了XR806的FreeRTOS SDK,赶紧一探究竟。

其实全志之前出了几个版本,现在这个1.2.1版本经过多方测试,比较稳定。

先来看看这个版本的主要功能。

xr806_sdk-v1.2.1的主要功能描述如下:

1、支持WiFi STA/AP模式;
2、支持WiFi WPA3功能;
3、支持BLE扫描、广播、连接、配对;
4、支持BLE MESH;
5、支持SoundConfig、AirKiss、SmartConfig、APConfig配网;
6、支持MbedTLS、MQTT、WebSocket等多种网络协议;
7、支持PSRAM、DMA、GPIO、UART、PWM、CODEC播放与录音、ADC转换、硬件加解密、看门狗等多种外设;
8、支持MP3、M4A、AAC、AMR、TS、M3U8等音频的播放,支持Flash、HTTP、HTTPS、音频数据流播放。

FreeRTOS是国际上比较流行的一款MCU的嵌入式操作系统。

历史悠久,用户基础很大。

为了方便初学者调试,我这里顺便做了一个FreeRTOS交叉编译的Docker版本。

Docker官方仓库地址:

https://hub.docker.com/r/verdureorange/ubuntu_xr806

安装方式:

在已经安装Docker的情况下,执行以下命令:

docker run -it verdureorange/ubuntu_xr806:v2 /bin/bash

注:v1是OpenHarmony的环境,v2才是FreeRTOS的,请勿搞混。

全志XR806 FreeRTOS_BSP编译

1、构建工作文件夹
(1)cd ~
(2)mkdir work
(3)cd work
(4)mkdir xr806
(5)cd xr806
2、获取资源
(1)wget http://www.armsoc.cn/whycan/xr806/xr806_sdk_v1.2.1.tgz
(2)wget http://www.armsoc.cn/whycan/xr806/gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2

如果获取失败,直接whycan下载(可能需要积分)
–>freeRTOS bsp
    xr806_sdk_v1.2.1.tgz
–>gcc工具链   
    gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2
3、编译一个例程
(1)解压bsp
tar -xzvf xr806_sdk_v1.2.1.tgz
(2)选择一个例程进行编译
cd ~/work/xr806/xr806_sdk_v1.2.1/project/demo
ls
可以看到现在有一下几个例程

book@book-desktop:~/work/xr806/xr806_sdk_v1.2.1/project/demo$ ll
总用量 32
drwxrwxr-x  8 book book 4096 4月   2 16:50 ./
drwxrwxr-x 10 book book 4096 4月   2 16:50 ../
drwxrwxr-x  3 book book 4096 4月   2 17:26 at_demo/
drwxrwxr-x  4 book book 4096 4月   2 17:23 audio_demo/
drwxrwxr-x  8 book book 4096 4月   2 16:50 bluetooth/
drwxrwxr-x  3 book book 4096 4月   2 17:22 hello_demo/
drwxrwxr-x  4 book book 4096 4月   2 16:50 wlan_ble_demo/
drwxrwxr-x  3 book book 4096 4月   2 16:50 wlan_demo/

(3)选择hello_demo
    cd hello_demo
(4)进入gcc目录,进行编译
cd gcc
make
    结果,编译出错了,原因是我们没有安装交叉编译工具链。

...
/bin/sh: 1: /home/book/tools/gcc-arm-none-eabi-8-2019-q3-update/bin/arm-none-eabi-gcc: not found
../../../../project/project.mk:437: recipe for target 'hello_demo.elf' failed
make[1]: *** [hello_demo.elf] Error 127
make[1]: 离开目录“/home/book/work/xr806/xr806_sdk_v1.2.1/project/demo/hello_demo/gcc”
../../../../project/project.mk:426: recipe for target '__all' failed
make: *** [__all] Error 2

4、安装交叉编译工具链
(1)解压工具链
cd ~/work/xr806/
tar -xvf gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2
(2)复制到项目例程指定的目录
根据上面的错误信息,我们可以知道交叉编译工具链,应该是存放在这个位置:
/home/book/tools/gcc-arm-none-eabi-8-2019-q3-update/

cd ~
mkdir tools
cd ~/work/xr806/
cp -r gcc-arm-none-eabi-8-2019-q3-update ~/tools/

5、回到例程目录,重新编译
cd ~/work/xr806/xr806_sdk_v1.2.1/project/demo/hello_demo/gcc/
make
编译结果,看起来像是成功了

~/tools/gcc-arm-none-eabi-8-2019-q3-update/bin/arm-none-eabi-objcopy -O binary -R .xip   hello_demo.elf hello_demo.bin
~/tools/gcc-arm-none-eabi-8-2019-q3-update/bin/arm-none-eabi-objcopy -O binary -j .xip hello_demo.elf hello_demo_xip.bin
~/tools/gcc-arm-none-eabi-8-2019-q3-update/bin/arm-none-eabi-size hello_demo.elf
   text    data     bss     dec     hex filename
  39768    1576    2248   43592    aa48 hello_demo.elf
make[1]: 离开目录“/home/book/work/xr806/xr806_sdk_v1.2.1/project/demo/hello_demo/gcc”
book@book-desktop:~/work/xr806/xr806_sdk_v1.2.1/project/demo/hello_demo/gcc$ 

我们得到了两个bin文件,一个elf文件
hello_demo.bin
hello_demo_xip.bin
hello_demo.elf

6、烧写程序到开发板

(1)生成烧写镜像
上述make只是生成了bin文件,我们需要进一步生成烧写镜像,才可以顺利下载。
make image

Flash Layout:
sec bin 0 boot_40M.bin      :   flash_offs: 0x00000000(   0K)   data_size: 0x00002F28(  12K)
sec bin 1 app.bin           :   flash_offs: 0x00004000(  16K)   data_size: 0x00004920(  19K)
sec bin 2 app_xip.bin       :   flash_offs: 0x00029800( 166K)   data_size: 0x000058E0(  23K)

generate image: xr_system.img
cp -t ../../../../out/ ../image/"xr806"/*.bin ../image/"xr806"/xr_system.img *.map
book@book-desktop:~/work/xr806/xr806_sdk_v1.2.1/project/demo/hello_demo/gcc$ 

(2)获取工具
工具存放在bsp包./tools目录里,程序文件为phoenixMC.exe。

(3)烧写镜像

作者:LinjieGuo

来自:WhyCan Forum