《安富莱嵌入式周报》第282期:CMSIS-DSP手册引入计算图,树莓派单片机RP2040超频到1GHz,COBS字节编码算法,纯手工为PS1打造全新亚克力外壳

Posted 硬汉eric2013

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《安富莱嵌入式周报》第282期:CMSIS-DSP手册引入计算图,树莓派单片机RP2040超频到1GHz,COBS字节编码算法,纯手工为PS1打造全新亚克力外壳相关的知识,希望对你有一定的参考价值。

往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz!

 

目录

视频版:

1、CMSIS-DSP软件包升级至V1.12,添加更多f64双精度API,并首次引入计算图

2、纯手工为PS1打造一个全新的亚克力外壳,效果很拉风

3、树莓派单片机RP2040超频到1GHz

4、史上最全面的RISC-V相关资源搜集整理贴

5、瑞萨基于RISC-V内核推出一款低成本电机单片机R9A02G020

6、高效可靠的数据字节编码算法COBS,可用于串口通信

7、Embedded Wizard发布9期视频教程

8、深圳捷扬微电子发布中国首款通过FiRa联盟认证的UWB芯片

9、英特尔的13代CPU有望达6GHz主频,超频后达8GHz

10、H7-TOOL本周进展


视频版:

https://www.bilibili.com/video/BV1DV4y1u7Em

《安富莱嵌入式周报》第282期:CMSIS-DSP手册引入计算图,树莓派单片机RP2040超频到1GHz,COBS字节编码算法,纯手工为PS1打造全新亚克力外壳


1、CMSIS-DSP软件包升级至V1.12,添加更多f64双精度API,并首次引入计算图

https://github.com/ARM-software/CMSIS-DSP

ARM.CMSIS-DSP.1.12.0.pack (7.22MB)

本次更新最明显的就是增加了这个文件夹:

 MDK安装后,增加了这么个选项:

 具体玩法还没有研究,从计算图效果来看,确实方便了执行流程的理解和调试参数的调整测试。

 

 

 


2、纯手工为PS1打造一个全新的亚克力外壳,效果很拉风

作者:BitHead1000

原视频:https://www.youtube.com/watch?v=RgoWwO8Ul8M

原始的PS1效果:

 重新打造的PS1外壳,每个角落都全部重新设计。

大家有兴趣可以看下原视频,很帅

 

 

动图:

附图像地址: https://download.armfly.com/armbbs/bbs/115418/6.gif


3、树莓派单片机RP2040超频到1GHz

https://github.com/davidb990/rp2040_xoc

作者提供了测试代码,测试条件是将内核电压从1.1V提升到3.0V,通过制冷使工作温度为-40°

作者测试了几次跑分Demo,可以正常运行,但是运行一段时间容易损坏芯片。

 


4、史上最全面的RISC-V相关资源搜集整理贴

https://github.com/mikeroyal/RISC-V-Guide

几乎已经涵盖了市面上各种软件资源和硬件资源搜集,包含最近各家发布的硬件板子

 


5、瑞萨基于RISC-V内核推出一款低成本电机单片机R9A02G020

瑞萨电子推出全新电机控制ASSP解决方案,扩展其卓越的RISC-V嵌入式处理产品组合 | Renesas

RISC-V内核来自Andes。

R9A02G020框图如下:

 

套件:

 

 


6、高效可靠的数据字节编码算法COBS,可用于串口通信

https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing

以modbus rtu通信为例,一般是3.5字符作为帧间隔区分,而使用COBS就不需要这样了,他是将范围 [0,255] 内的任意字节字符串转换为 [1,255] 范围内的字节。从数据中消除所有0,现在可以使用0来明确标记转换后数据的结束

 

 

代码:

#include <stddef.h>
#include <stdint.h>
#include <assert.h>
 
/** COBS encode data to buffer
        @param data Pointer to input data to encode
        @param length Number of bytes to encode
        @param buffer Pointer to encoded output buffer
        @return Encoded buffer length in bytes
        @note Does not output delimiter byte
*/
size_t cobsEncode(const void *data, size_t length, uint8_t *buffer)

        assert(data && buffer);
 
        uint8_t *encode = buffer; // Encoded byte pointer
        uint8_t *codep = encode++; // Output code pointer
        uint8_t code = 1; // Code value
 
        for (const uint8_t *byte = (const uint8_t *)data; length--; ++byte)
        
                if (*byte) // Byte not zero, write it
                        *encode++ = *byte, ++code;
 
                if (!*byte || code == 0xff) // Input is zero or block completed, restart
                
                        *codep = code, code = 1, codep = encode;
                        if (!*byte || length)
                                ++encode;
                
        
        *codep = code; // Write final code value
 
        return (size_t)(encode - buffer);

 
/** COBS decode data from buffer
        @param buffer Pointer to encoded input bytes
        @param length Number of bytes to decode
        @param data Pointer to decoded output data
        @return Number of bytes successfully decoded
        @note Stops decoding if delimiter byte is found
*/
size_t cobsDecode(const uint8_t *buffer, size_t length, void *data)

        assert(buffer && data);
 
        const uint8_t *byte = buffer; // Encoded input byte pointer
        uint8_t *decode = (uint8_t *)data; // Decoded output byte pointer
 
        for (uint8_t code = 0xff, block = 0; byte < buffer + length; --block)
        
                if (block) // Decode block byte
                        *decode++ = *byte++;
                else
                
                        if (code != 0xff) // Encoded zero, write it
                                *decode++ = 0;
                        block = code = *byte++; // Next block length
                        if (!code) // Delimiter code found
                                break;
                
        
 
        return (size_t)(decode - (uint8_t *)data);


7、Embedded Wizard发布9期视频教程

大家有兴趣可以看下

Master Class Mondays - Embedded Wizard

 

 同时还为一家声学分析仪提供了界面设计,大家可以看看界面素材是否有值得参考的

 

 


8、深圳捷扬微电子发布中国首款通过FiRa联盟认证的UWB芯片

深圳捷扬微电子发布中国首款通过FiRa联盟认证的UWB芯片-深圳捷扬微电子有限公司

GT1000已经于2022年5月开始量产,将于2022年9月开始批量出货,规格介绍如下:

 


9、英特尔的13代CPU有望达6GHz主频,超频后达8GHz

Intel Raptor Lake details teased, including 6GHz stock clock speeds for 13th Gen CPUs | Windows Central

13代U还没有正式公布,根据外媒的消息,13代U至少有一款可达6GHz,超频后达8GHz。

如果这样的话,将超过AMD 5.7GHz的Ryzen 9 7950X。

 


10、H7-TOOL本周进展

H7-TOOL详细介绍:H7-TOOL开发工具,1拖4/16脱机烧录,高速DAPLINK,RTOS Trace,CAN/串口助手, 示波器, RTT等,支持WiFi,以太网,高速USB和手持 - H7-TOOL开发工具 - 硬汉嵌入式论坛 - Powered by Discuz!

(1)增加新的脱机烧录芯片中,其中新添加的NXP芯片MKE16Z64与其它MKE不同。

(2)H7-TOOL同步开发的还要一个重要功能,支持各种GUI的截图功能,无需再使用麻烦的SD卡/U盘截图方案 。

即使到今天,我们很多时候做产品效果展示,需要截屏时,依然采用的古老的SD卡/U盘这种的古老方案,不仅麻烦,而且繁琐。

emWin早期的时候有推出过emSPY截图功能,需要用户移植RTT或者网络协议栈,后续新版本更新,经常出现花屏,几乎没法使用。所以我们的新功能为此而生。

用户仅需接上SWD接口即可,无需用户嵌入代码到目标,填入显存地址即可,可以直接截图ThreadX GUIX,emWin,TouchGFX等各种UI的显示效果,包括大家自己做的裸屏UI也是可以截图出来的。

通过这个功能,会大大方便大家产品效果展示。

(3)初步把H7-TOOL的RTOS Trace工作流程整顺溜了,剩下可以专心添加各种OS和组态界面设计了。

uCOS-III的关键信息检索,基本都已经完成,不需要目标板额外做任何代码,实时检测RTOS任务执行情况。

下一步开始ThreadX的Trace功能支持,添加完毕几款RTOS的Trace后,再重新设计控件布局效果展示。

 

 

以上是关于《安富莱嵌入式周报》第282期:CMSIS-DSP手册引入计算图,树莓派单片机RP2040超频到1GHz,COBS字节编码算法,纯手工为PS1打造全新亚克力外壳的主要内容,如果未能解决你的问题,请参考以下文章

《安富莱嵌入式周报》第286期:8bit浮点数规范,VxWorks火星探测器故障原因修复,Matter V1.0智能家居规范,Wireshark 4.0发布

《安富莱嵌入式周报》第272期:2022.06.27--2022.07.03

《安富莱嵌入式周报》第260期:2022.04.04--2022.04.10

《安富莱嵌入式周报》第268期:2022.05.30--2022.06.05

《安富莱嵌入式周报》第269期:2022.06.06--2022.06.12

《安富莱嵌入式周报》第263期:2022.04.25--2022.05.01