HaaS技术社区大玩家 - 专注RTOS维测的技术狂人

article/2025/11/3 2:09:23

点击查看活动详情:https://t.csdnimg.cn/L4B8

HaaS技术社区

在物联网方案多样化与场景碎片化等大背景下,基于阿里云物联网数亿设备落地经验,阿里云物联网团队推出了HaaS这个加速AIoT中小开发者的创新平台。HaaS(Hardware as a service)硬件即服务。通过向用户提供物联网场景中的的标准硬件以及嵌入到硬件中的软件驱动及功能模块,为用户提供物联网设备高效开发服务。旨在帮助AIoT中小开发者聚焦业务,能做到低门槛快速组装软硬件积木,实现设备安全上云,加速AIoT创新迭代。

HaaS设备端搭载阿里IoT团队全面开源的物联网操作系统AliOS Things。该操作系统发布于2017年杭州云栖大会,是HaaS家族中面向IoT领域的、高可伸缩的物联网操作系统,目前已经开源到3.1版本。

HaaS技术社区旨在推广物联网操作系统AliOS Things和HaaS云端钉全链路解决方案。HaaS技术涵盖物联网操作系统AliOS Things,JS轻应用,HaaS UI等软件积木,以及HaaS标准硬件和周边生态等硬件积木。HaaS为开发者提供了一种高效的积木的开发方式。

 

社区之星推荐语

尹鑫,一直从事嵌入式相关的工作,最近两三年主要研究嵌入式RTOS维测相关的技术,立志于开发一款基于RTOS、适合广大嵌入式开发者的维测工具,并将很多代码贡献给AliOS Things和HaaS技术社区。同时在HaaS技术社区投稿了一系列关于AliOS Things 维测的学习心得。

4116057641553710406.JPG

 

技术成长之路

跟广大嵌入式开发者的技术成长路线一样,我也是从helloworld开始,到点亮数码管led、驱动传感器外设、操作LCD显示、通过WIFI/BT连接各种设备等一步步走过来的。在这过程中,我们需要不断地学习硬件电路、计算机体系结构、编译、操作系统、网络协议等一系列知识,深深感受到嵌入式开发栈的博大精深。

在最近两三年的项目研发期间发生了2件事,让我将注意力转移嵌入式RTOS的维测工具的设计上来。

第一件事,我还在华为的手机部门,从事手机底层设备驱动的开发工作。有一次需要将手机大核上(跑linux)的传感器驱动移植到小核(跑嵌入式RTOS)上面去,本来已经经过大量验证运行很稳定的驱动,在RTOS上出现了问题,系统跑了一段时间就死机了。经过痛苦的不断加打印--重新编译--烧录芯片的定位过程,两三天过去了,发现是一个典型的内存泄漏问题,是在移植过程中新增的一个bug,修改了几行代码后解决。当时我就想,虽然嵌入式RTOS上的运行场景没有linux复杂,但是一旦出现了bug,我们却没有顺手的工具来快速定位它。这个对比Linux就有巨大差距,Linux的强大无需多说,仅在工具方面,也是有足够的维测工具来支持的,如Valgrind里的memcheck就可以方便的检测出内存泄漏、释放内存后的使用(use-after-free)等。但是在RTOS上,我们没有这样的工具,网上这样的支持也比较少,但我觉得,维测工具对嵌入式开发也是有价值的,至少减少一些定位bug的时间,也是对工作效率的巨大提升!

第二件事,让我彻底坚信了RTOS维测工具的价值。在一个智能音箱项目中,我们遇到了可能是RTOS史上最复杂的使用场景—— 线程数量100+、多核、几十人共同开发、WIFI/BT多协议栈、云端链路、语音唤醒和识别、众多交互场景....在产品量产测试过程中不断遇到死机、踩内存、内存泄漏、系统卡死、网络吞吐性能下降等一系列稳定性问题和性能问题。从开始的束手无策只能靠加打印定位问题,到后面可以分分钟定位出80%以上的问题,这个工作效率的巨大提升是基于我们从0到1开发出的一套适用于嵌入式RTOS的维测工具。基于AliOS Things,我们可以不连仿真器,不加打印,快速定位bug是什么,定位内存泄漏点,定位踩内存点。如果没有这套维测工具,整个项目的开发难度是不可想象的。

我觉得随着物联网的快速普及,嵌入式RTOS作为物联网的操作系统也一定会受到越来越多的关注。今年有幸遇到了阿里云的HaaS平台,它为开发者提供了一种高效的积木的开发方式,代表了物联网发展的方向。HaaS使用的RTOS是AliOS Things。所以我也计划在为HaaS技术社区贡献维测工具的代码和RTOS维测工具的文章系列,希望可以给HaaS技术社区的广大物联网开发者和爱好者带来帮助。

 

开发者寄语

我们知道,维测工具可以帮助嵌入式开发人员提高bug的解决效率,进而关注自己的事情,提高工作效率;同时,再好的维测工具,它的作用范围也是有限的,所以也希望大家(包括我自己)继续修代码内功,写出优美代码,不产生bug才是我们的追求!


http://chatgpt.dhexx.cn/article/xWgopVBE.shtml

相关文章

【粉丝限时福利】个人技术社区正式开始搞福利活动咯。。。奖品丰厚。。。

朋友们,大家好! 最近我创建了一个CSDN技术社区:AIoT技术交流社区 最近刚好突破1W人,非常感谢大家的加入! 社区简介: 【技术成长】的捷径是【交流与分享】。社区由【嵌入式物联网架构师李肯】创建&#xf…

十大程序员最实用的技术社区网站

今天给大家整理一份国内程序员最实用的开源社区网站清单,希望可以给大家带来一点帮助。 第一名:CSDN 中国专业IT社区CSDN (Chinese Software Developer Network) 创立于1999年,致力于为中国软件开发者提供知识传播、在线学习、职业发展等全生…

中国十大技术社区你都知道哪些?

社区是聚集一类具有相同爱好或者相同行业的群体,IT技术社区就是聚集了IT行业内的技术人,在技术社区可以了解到行业的最新进展,学习最前沿的技术,认识有相同爱好的朋友,在一起学习和交流。 技术社区一般有三类人&#x…

程序员必备的技术社区都有哪些?

文章说明:本篇文章主要是分享相关程序员常用社区,非广告。 以下排序不分先后,分享态度。 一、csdn 专业开发者社区 地址:https://www.csdn.net/ 介绍:CSDN是全球知名中文IT技术交流平台,创建于1999年,包含原创博客、精品问答、职…

android摄像头预览功能,android通过camera和surfaceview选择摄像头并即时预览

在使用android设备的摄像头的时候我们有两种选择: 1.调用intent方法使用摄像头 2.通过camera类使用摄像头 第一种方法非常方便,不过需要跳到新的activity中,这样的用户体验并不是特别好 使用camera能有更大的自定义空间! 使用camera就需要用surfaceview显示摄像头的即时画…

SurfaceView绘图、调用Camera

一、使用surfaceview绘图 * <p>* Android系统提供了View进行绘图处理&#xff0c;我们通过自定义的View可以满足大部分的绘图需求&#xff0c;但是这有个问题就* 是我们通常自定义的View是用于主动更新情况的&#xff0c;用户无法控制其绘制的速度&#xff0c;由于Vi…

Android相机开发那些坑

版权声明&#xff1a;本文由王梓原创文章&#xff0c;转载请注明出处: 文章原文链接&#xff1a;https://www.qcloud.com/community/article/168 来源&#xff1a;腾云阁 https://www.qcloud.com/community 最近我负责开发了一个跟Android相机有关的需求&#xff0c;新功能允…

Android SurfaceView使用详解(很好的实战例子)

一、surfaceview 在显示时才会调用callback中的surfaceCreated。注意&#xff0c;是在显示时&#xff0c;在初始化时不会调用 在隐藏时会调用callback中的surfaceDestroyed 二、清屏操作 public void clearDraw(SurfaceHolder holder,int color) {Log.w("tan",&qu…

android绘制黑色画面,Android音视频技术入门之绘制一张图片

Android 的音视频入门学习&#xff0c;首先了解一下绘制图片。在 Android 平台绘制一张图片&#xff0c;使用至少 3 种不同的 API&#xff0c;ImageView&#xff0c;SurfaceView&#xff0c;自定义 View作绘制图片。下面我以SurfaceView作重点来讲&#xff0c;为什么不用其他的…

Android图形系统之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的联系

SurfaceHolder 版本&#xff1a;Android 2.2 r1 结构 继承关系 public interface SurfaceHolder android.view.SurfaceHolder 概述 抽象接口持有人显示表面。允许您控制面的大小和格式&#xff0c;编辑在suface的橡树&#xff0c;并监测到变化。此接口通常可通过SurfaceView类…

Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系

一、Surface Surface就是“表面”的意思。在SDK的文档中&#xff0c;对Surface的描述是这样 的&#xff1a;“Handle onto a raw buffer that is being managed by the screen compositor”&#xff0c;翻译成中文就是“由屏幕显示内容合成器(screen compositor)所管理的原生缓…

android surfaceview学习(一)

推荐阅读&#xff1a; https://blog.csdn.net/luoshengyang/article/details/8661317 https://www.cnblogs.com/xuling/archive/2011/06/06/android.html https://blog.csdn.net/zcmain/article/details/14454953 1、surfaceview默认是黑色的背景&#xff0c;并且给sfv设置背景…

Activity、Fragment和Surface的生命周期

这里首先推荐大家一本Android的学习书籍&#xff1a;《第一行代码》&#xff0c;这本书还是写得非常好的。好了&#xff0c;进入正题&#xff0c;我们先来了解一下Activity、Fragment的的生命周期中经历的几个阶段。 ActivityFragment 下面我们假设有如下的场景&#xff0c;Act…

Java进度条

转自&#xff1a;点击打开链接 进度条用在很多的地方&#xff0c;比如登录验证等待过程、程序加载、数据下载、数据更新与删除等&#xff0c;它可以一目了然的让用户知道程序执行的进度。下面给大家看一个登录验证的进度条&#xff0c;首先上效果图&#xff1a; 在代码中未连接…

java窗口进度条_java进度条窗口具体如何制作?

可视化窗口是大部分游戏的常态&#xff0c;今天我们就来了解下如何编写进度条窗口&#xff0c;快跟小编一起看看吧。 一、在包右击new->other->WindowBuilder->JFrame->name叫Guithreadpackage guithread; import java.awt.BorderLayout; import java.awt.EventQue…

java进度条_「java进度条」Java JProgressBar类(进度条) - seo实验室

java进度条 简介 利用JprogressBar类可以实现一个进度条。它一般是一种颜色部分或完全填充的矩形。缺省情况下,进度条配备了一个凹陷的边框,并水平放置。 进度条还可以选择显示一个字符串,这个字符串在进度条矩形的中央位置上显示。这个字符串缺省时为耗时任务已完成的百分比…

Java 进度条

效果 代码 思路&#xff1a;使用NumberFormat类来格式化数字&#xff0c;显示完后&#xff0c;退格覆盖重新显示新的数字 import java.text.NumberFormat;public class Test {public static void main(String[] args) throws Exception {System.out.print("Progress:"…

Java图形化界面---进度条

目录 一、进度条的介绍 二、创建进度条 三、简单案例 四、子线程创建进度条 &#xff08;1&#xff09;为什么要使用子线程创建进度条 &#xff08;2&#xff09;子线程创建进度条的代码 五、创建进度对话框 &#xff08;1&#xff09;如何创建进度对话框 &#xff08;2&…

Java图形化界面编程超详细知识点(7)——进度条

目录 4 JProgressBar、ProgressMonitor、BoundedRangeModel实现进度条 4.1 创建进度条 4 JProgressBar、ProgressMonitor、BoundedRangeModel实现进度条 进度条是图形界面中广泛使用的GUI组件&#xff0c;当复制一个较大的文件时&#xff0c;操作系统会显示一个进度条&#…

Java制作进度条

【效果图】 【描述】 进度条宽度保持和窗口宽度一致&#xff0c;进度最小值为0&#xff0c;最大值为100&#xff0c;每100毫秒进度值1&#xff0c;进度条中间显示进度百分比 【代码】 package test;import java.awt.*; import java.awt.event.*;import javax.swing.*;public…