鸿蒙 订阅
华为鸿蒙系统(英文:huaweiHarmonyOS,HongmengOS)。在2019年8月9日,华为在东莞举行华为开发者大会,正式发布操作系统鸿蒙OS。鸿蒙OS是一款“面向未来”的操作系统,一款基于微内核的面向全场景的分布式操作系统,现已适配智慧屏,未来它将适配手机、平板、电脑、智能汽车、可穿戴设备等多终端设备。 [1-2] 展开全文
华为鸿蒙系统(英文:huaweiHarmonyOS,HongmengOS)。在2019年8月9日,华为在东莞举行华为开发者大会,正式发布操作系统鸿蒙OS。鸿蒙OS是一款“面向未来”的操作系统,一款基于微内核的面向全场景的分布式操作系统,现已适配智慧屏,未来它将适配手机、平板、电脑、智能汽车、可穿戴设备等多终端设备。 [1-2]
信息
开发商
华为技术有限公司
类    别
微内核
发布日期
2019年8月9日
发布地点
东莞
别    名
HongmengOS
中文名
华为鸿蒙系统
注册时间
2019年5月14日
性    质
国产开源操作系统平台
外文名
huaweiHarmonyOS
华为鸿蒙系统系统简介
鸿蒙操作系统发布(3张) 鸿蒙微内核是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全,主要用于物联网,特点是低时延,甚至可到毫秒级乃至亚毫秒级。 [3]  鸿蒙OS实现模块化耦合,对应不同设备可弹性部署,鸿蒙OS有三层架构,第一层是内核,第二层是基础服务,第三层是程序框架 [4]  。可用于手机、平板、PC、汽车等各种不同的设备上。还可以随时用在手机上,但暂时华为手机端依然优先使用安卓、华为电脑端依然优先使用windows和Linux。 [5-6] 
收起全文
精华内容
下载资源
问答
  • 我看鸿蒙操作系统

    万次阅读 多人点赞 2019-06-18 19:58:00
    华为宣布推出鸿蒙操作系统。其实我觉得能理解,但也蛮无奈的,所谓不得已而为之,google不提供后续版本授权,不提供新的支持,怎么办,硬着头皮也要上。有些自媒体说什么安卓慌...
        

    华为宣布推出鸿蒙操作系统。


    其实我觉得能理解,但也蛮无奈的,所谓不得已而为之,google不提供后续版本授权,不提供新的支持,怎么办,硬着头皮也要上。


    有些自媒体说什么安卓慌了,google吓坏了,我真的想骂人,一群王八蛋为了点击率什么都敢写。


    自建操作系统,对华为来说,或许技术上不是什么多难的事情,但比技术更难的是什么?


    1、知识产权


    从青蒿素说一下专利与知识产权[更新]


    旧文提过,三星每年要给微软一大笔知识产权费用,那为什么呢?因为使用了安卓操作系统,那话说回来,使用了安卓为什么要给微软知识产权费用?因为安卓没有能跨过微软的专利墙。


    自主研发,就算每一行代码都是自己写的,一样有很大可能会触碰到别人的知识产权。专利保护的不是源代码,不是技术能力,而是首创的一些思想和逻辑。操作系统的思想和逻辑,很多都已经被申请专利了,你再怎么重写,也是绕不过去的。以谷歌安卓尚无法翻越微软的专利墙,请问,华为如何翻越安卓+微软的两层专利墙。


    有些人觉得,我不承认你们专利不就完了,我自己写的自己发,你管得着我么?


    国内自娱自乐,或许没问题。


    全球发行,只要人家追究,一告一个准。


    那你说华为是不是没戏了。


    我觉得,其实华为私下应该是很努力的在做工作,Google本身没有与华为作对的动机和意愿,人家也只是“守法”而已。私下是可以达成一些谅解,换皮也好,自主研发也好,推鸿蒙,接安卓生态,兼容Google框架,如果Google不追究,微软不追究,这事勉强可以向前走。


    但海外消费者能不能买帐,认同,依然是难上加难。


    任正非其实看的很清楚,华为手机的海外销量,如果不能快速达成和解的话,今年下半年,以及明年会暴跌。


    2、生态兼容


    中国互联网自成生态,以至于很多移动互联网用户都未必知道自己的手机用的是Google的操作系统。我们习惯了阉割Google框架的手机,习惯了使用厂商的应用市场。


    但是在海外,只有苹果和谷歌两个应用市场,强大如三星,长期销量第一的手机品牌,其自身应用市场一直无法对苹果和谷歌发起挑战。微软曾经试图三分天下,但也未能如愿。


    我就直说一句,如果华为手机操作系统不兼容google的生态,那么在海外没有一丁点的机会。


    那么,自主操作系统如何兼容Google生态,还记得当年阿里云操作系统么?还记得当年谷歌是如何封杀阿里云系统么?


    年轻人会说,你封杀我不用不就完了,还是那句话,海外市场,没有这个选项。要知道华为之所以让人佩服,并不是横扫国内市场,而是具有全球的顶级竞争力。


    有人可能觉得,国内市场牛逼不就得了,说的也对,炒房兴邦么。卖掉一个上海可以买回一个加州,就问川普怕不怕。


    回到自主研发这个话题,我这么解释吧。


    假如说,你有很强的技术团队,可以从头开始自主研发一套操作系统。假设这个难度是100。


    那么,完美绕过所有其他操作系统的专利墙,自主研发的难度,是1000。


    完美绕过所有其他操作系统的专利墙,自主研发,然后又能完美兼容其他操作系统生态的难度,是10000。


    我一丁点都不怀疑华为具有100的能力,但即便是Google,也做不到1000。


    那么,有些人会说了,被人掐脖子就应该束手就擒么,就不能奋起反抗么?


    其实华为能发展到今天特别不容易,在中国信息产业的技术贡献来说,我个人的观点,华为对中国在世界信息产业技术地位的贡献,大约相当于其他所有国内信息产业公司的总和。是的,包括BAT等等互联网公司,也包括中兴大唐等等通讯设备公司,以及联想小米等等消费电子的终端公司,华为在世界信息产业对中国技术地位的贡献,应该是等于甚至超过这些公司的总和。


    但华为能发展到今天,你看任正非的发言,人家自己很清醒,不是人有多大胆,地有多大产。不是三年赶英,五年超美。是一步一个脚印,实打实走过来的,部分自主研发,部分也要依赖于国际合作,这是世界科技发展的必然之路。


    自主研发,是为了更好的合作,毕竟你有底气,别人也很难卡你脖子,高通跟华为撕逼了很多年,据说已经和解了,交叉授权,可能华为还是要支付给高通一笔钱,虽然华为构筑了足够的专利壁垒,有了足够讨价还价的底气,但高通还是优势方,这点要承认。如果没有足够的专利壁垒,那就完全没有讨价还价的资格了。


    华为花了差不多二十年时间,终于翻过了思科这座大山,中间又花了十来年时间,差不多可能快要翻过高通这座大山。这已经是非常非常了不起的成绩了,非常非常值得钦佩,但有一说一,ARM这座大山,Google这座大山,仅凭华为现有的力量,是翻越不过去的。更不用说产业链里还有诸如阿斯麦,赛灵思等等等等不同的山头。


    现在可能很多读者觉得,好像也没看到华为哪里就不行了,其实是因为已有授权暂时不受影响,这点很重要,也就是当前版本的产品没有受到影响,以及华为可以继续使用已经授权的工具和芯片设计专利,但从长远来说,如果不能尽快达成和解,仅凭华为自身,与世界最强大的国家的科技体系对抗, 你说怎么赢?


    任正非说,未来两年,华为收入大约会减少300亿美金左右。很清醒的判断。


    世界科技的发展,一直都是踩在巨人肩头前进,每个新的突破,新的成就,都是基于大量已有的杰出的科研成果的积累,集结全人类的智慧。中国有很多聪明的天才,有不错的科学家,有非常专业的工程师,在世界名列前茅,但我们每前进一步,也都需要借助世界的力量。我们还不是科技的顶尖国家,要知道美国拥有的是全世界最优秀的人才,其中也包括中国最优秀的人才,闭门造车没有出路,我们有过教训。


    那么你说该怎么办,坦白说,我没这个本事,但我知道华为需要什么。


    说出来可能有人不爱听,华为需要的不是爱国者的口号,键盘党的支持,华为需要的是松绑,低调,尽量不要政治化,尽量不要背太多的政治标签和政治包袱。华为正在努力的是与各大技术体系的巨头们保持沟通,谋求彼此谅解,在对方合规的情况下,得以通过某种变通手段兼容已有的体系,尽量减少损失,尽量维持研发和生产。


    那些被迫终止与华为合作的国际巨头,不是华为的敌人,我希望读者能理解这一点,国内那些在海外设立公司并暂停于华为合作的公司,也不是华为的敌人,他们只是”遵从当地政策法规“,我觉得中国人应该更理解这一点才对。能理解这一点,才能有助于达成某种谅解,以及寻求一些”变通“的手段,得以让华为度过难关。


    今天这个话题忌讳太多,想留着这个号吃饭,有些问题也不敢讨论,就这样吧。


    展开全文
  • 鸿蒙

    2020-11-01 21:31:19
    [菜鸟入门鸿蒙之HiSpark WiFi IoT------OLED移植修改] 效果图 大家好,我是Gray,是一名默默无闻的嵌入式软件工程师,比较喜欢钻研新技术,一直关注鸿蒙,由于错过最佳申请板子的时间,现在手头没有开发板,申请的还...

    [菜鸟入门鸿蒙之HiSpark WiFi IoT------OLED移植修改]

    效果图

    大家好,我是Gray,是一名默默无闻的嵌入式软件工程师,比较喜欢钻研新技术,一直关注鸿蒙,由于错过最佳申请板子的时间,现在手头没有开发板,申请的还没有下文,现在借用别人的,下班回来搞搞,希望官方有多的板子能送我一套3861~~,今天就给大家分享一下我的在移植OLED到鸿蒙,其实也不叫移植,已经有大佬们移植好了,我只是修改一些函数,让它用起来更加的方便,更加符合我们程序猿的使用风格,今天的主要内容就是让OLED能通过Printf那样输出字符串,支持中英混合的那种,先看效果图:

    可以是这种姿势:

    ssd1306_Print(0,0,"哈喽鸿蒙", White);
    

    这种姿势:

    ssd1306_Print(0,0,"哈喽Harmony", White);
    

    甚至还可以这么搞:

    sprintf(buff,"温度 %d C",20);
    ssd1306_Print(0,32,buff, White);
    

    在这里插入图片描述

    这样用不比下面的这样的香吗??????

    		OLED_ShowCHinese(0,0,0);
    		OLED_ShowCHinese(16,0,1);
    		OLED_ShowCHinese(32,0,2);
    		OLED_ShowCHinese(48,0,3);
    		OLED_ShowCHinese(64,0,4);
    		OLED_ShowCHinese(80,0,5);
    		OLED_ShowCHinese(96,0,6); //显示 空气质量检测仪
    		
    
    		
    		OLED_ShowString(0,2,"T:");
        	OLED_ShowNum(16,2,temperature,2,16);//显示温度值
    		OLED_ShowCHinese(32,2,8);//显示温度符号
    		OLED_ShowString(56,2,"R:");
    		OLED_ShowChar(88,2,'%');//显示温度符号
    		OLED_ShowNum(72,2,humidity,2,16);
    

    传统的这种一个字一条语句,你还得算某个字体有没有越位,或者位置是不是有间隔了。。。这样浪费多少时间,怎么能容忍这样的事情发生呢?坚决不能容忍!!!!接下来看看怎么弄吧~~

    移植教程

    声明:跟着本教程操作默认你已经搭建好环境,环境搭建可移步:

    传送

    移植教程已经有了,我是参照润和许老师的教程修改的,移植教程请移步:

    [传送]

    教程是把代码下载到根目录,并运行,但是我们做项目都是把外设模块统一放在app下执行,所以我的移植是这样的:

    1.把代码下载并上传到 linux服务器,我的是虚拟机,直接通过共享文件夹上传到虚拟机桌面,然后敲命令

    unzip harmonyos-ssd1306-master.zip -d /home/harmony/harmony/code/code-1.0/applications/sample/wifi-iot/app/

    解压到app文件夹:

    在这里插入图片描述

    然后修改app目录下的BUILD.gn ,添加"harmonyos-ssd1306:app", 注意分号

    然后编译,下载即可。

    如何显示中文

    我们都知道,oled显示都是ascii码,那中文是用什么码来显示呢?这里普及一下汉字编码知识:

    中文汉字:

    字节数 : 2;编码:GB2312

    字节数 : 2;编码:GBK

    字节数 : 2;编码:GB18030

    字节数 : 1;编码:ISO-8859-1

    字节数 : 3;编码:UTF-8

    字节数 : 4;编码:UTF-16

    字节数 : 2;编码:UTF-16BE

    字节数 : 2;编码:UTF-16LE

    1、美国人首先对其英文字符进行了编码,也就是最早的ascii码,用一个字节的低7位来表示英文的128个字符,高1位统一为0;

    2、后来欧洲人发现尼玛你这128位哪够用,比如我高贵的法国人字母上面的还有注音符,这个怎么区分,得,把高1位编进来吧,这样欧洲普遍使用一个全字节进行编码,最多可表示256位。欧美人就是喜欢直来直去,字符少,编码用得位数少;
    3、但是即使位数少,不同国家地区用不同的字符编码,虽然0–127表示的符号是一样的,但是128–255这一段的解释完全乱套了,即使2进制完全一样,表示的字符完全不一样,比如135在法语,希伯来语,俄语编码中完全是不同的符号;
    4、更麻烦的是,尼玛这电脑高科技传到中国后,中国人发现我们有10万多个汉字,你们欧美这256字塞牙缝都不够。于是就发明了GB2312这些汉字编码,典型的用2个字节来表示绝大部分的常用汉字,最多可以表示65536个汉字字符,这样就不难理解有些汉字你在新华字典里查得到,但是电脑上如果不处理一下你是显示不出来的了吧。

    5、这下各用各的字符集编码,这世界咋统一?俄国人发封email给中国人,两边字符集编码不同,尼玛显示都是乱码啊。为了统一,于是就发明了unicode,将世界上所有的符号都纳入其中,每一个符号都给予一个独一无二的编码,现在unicode可以容纳100多万个符号,每个符号的编码都不一样,这下可统一了,所有语言都可以互通,一个网页页面里可以同时显示各国文字。

    6、然而,unicode虽然统一了全世界字符的二进制编码,但没有规定如何存储啊,亲。x86和amd体系结构的电脑小端序和大端序都分不清,别提计算机如何识别到底是unicode还是acsii了。如果Unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,文本文件的大小会因此大出二三倍,这对于存储来说是极大的浪费。这样导致一个后果:出现了Unicode的多种存储方式。
    7、互联网的兴起,网页上要显示各种字符,必须统一啊,亲。utf-8就是Unicode最重要的实现方式之一。另外还有utf-16、utf-32等。UTF-8不是固定字长编码的,而是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。这是种比较巧妙的设计,如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。

    8、注意unicode的字符编码和utf-8的存储编码表示是不同的,例如"严"字的Unicode码是4E25,UTF-8编码是E4B8A5,这个7里面解释了的,UTF-8编码不仅考虑了编码,还考虑了存储,E4B8A5是在存储识别编码的基础上塞进了4E25。

    9、UTF-8 使用一至四个字节为每个字符编码。128 个 ASCII 字符(Unicode 范围由 U+0000 至 U+007F)只需一个字节,带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及马尔代夫语(Unicode 范围由 U+0080 至 U+07FF)需要二个字节,其他基本多文种平面(BMP)中的字符(CJK属于此类-Qieqie注)使用三个字节,其他 Unicode 辅助平面的字符使用四字节编码。

    所以。。我们可以看看在鸿蒙系统上使用的是什么编码格式的,先写个demo验证一下

    void test(void)
    {
        uint8_t i = 0;
       
        char *ch = "鸿蒙";
        
        //uint32_t byte;
    
        printf("len is %d\r\n",strlen(ch));
    
        for (i = 0; i < strlen(ch); i++)
        {
            printf("code is %x \n", *(ch +i));
        }
    }   
       
    

    输出:

    len is 6
    code is ffffffe9 
    code is ffffffb8 
    code is ffffffbf 
    code is ffffffe8 
    code is ffffff92 
    code is ffffff99 
    

    整理一下就是 e9b8bf 和 e89299 两个汉字6字节,一个就3字节,证明编码使用UTF-8来的

    OK,确定了编码之后,该如何进行下一步?我们使用的ssd1306是不包含字库的,所以需要自己生成字库,那么通常的办法是把需要的字体生成字库数组,然后再通过索引找到这个字再显示出来,我这个也是这样的思路,只不过换了个方法来找字体,那就是通过编码来找。

    我们可以先把汉字转成utf-8编码,比如“鸿蒙”的编码就是 0xe9b8bf 0xe89299

    转换的网站是这个

    转换UTF-8

    在里面生成UTF-8编码,然后记住

    在代码里创建一个结构体:

    typedef struct 
    {
      unsigned int Index;   //汉字编码UTF-8
      unsigned char Msk[32]; //字模
    }typFNT_GB16;
    

    然后创建结构体数组:

    typFNT_GB16 CN16_Msk[2] = {  
    {
        0xE9B8BF,
        {       
            0x00,0x80,0x40,0x1F,0x84,0x44,0x44,0x04,0x24,0x44,0xC4,0x47,0x5C,0x48,0x40,0x00,
            0x10,0x20,0x7C,0x44,0x64,0x54,0x44,0x4C,0x40,0x7E,0x02,0x02,0x7A,0x02,0x0A,0x04,/*"鸿",0*/
        }
    },
    
    {
        0xE89299,
        {
            0x08,0xFF,0x08,0x7F,0x40,0x8F,0x00,0x7F,0x06,0x3B,0x04,0x19,0x62,0x0C,0x72,0x01,
            0x20,0xFE,0x20,0xFE,0x02,0xE4,0x00,0xFC,0x00,0x08,0xB0,0xC0,0xA0,0x98,0x86,0x00,/*"蒙",1*/
        }
    },
    };
    

    字模生成使用PCtoLCD 配置是 阴码,顺向,行列式,16进制。

    显示中文代码

    上面的准备工作做好之后,接下来就是编写显示的函数了,一开始想直接用代码自带的字库数组,无奈,这个代码的作者是使用u16类型来编码的,所以无法适配我们u8类型,所以还是得自己编写,那么实现的代码如下:

    void ssd1306_Print(uint8_t x, uint8_t y, char *s, SSD1306_COLOR color)
    {
    	unsigned char i,k,length;
    	uint32_t Index = 0;
        uint8_t b;
    	length = strlen(s);//取字符串总长
    	for(k=0; k<length; k++)
    	{
    		if((uint8_t)(*(s+k)) <= 127){//小于128是ASCII符号
                ssd1306_SetCursor(x,y);
                ssd1306_DrawChar_u8(*(s+k), color);
    			x += 8;//x坐标右移8
    		}
            else if((uint8_t)(*(s+k)) > 127){//大于127,为汉字,UTF-8是3个字节    
             	Index = ((uint8_t)(*(s+k)) << 16) | ((uint8_t)(*(s+k+1)) << 8) | (uint8_t)((s+k+2));
                //取汉字的编码
    			//printf("byte is %x  \r\n", Index );	
                for(i=0;i<sizeof(CN16_Msk)/34;i++){//查数组
    				if(Index == CN16_Msk[i].Index){
    					//查询到这个字
    				//	printf("Pindex is %d, %d\r\n",i,color);
                        for (uint8_t t = 0; t < 2; t++)
                        {                                                                 
                            for(uint8_t k = (0 + 16 * t); k < (16 + 16 * t); k++) {    //
                                b = CN16_Msk[i].Msk[k];
                                for(uint8_t j = 0; j < 8; j++) {
                                    if((b << j) & 0x80)  {                  
                                        ssd1306_DrawPixel(x + j, (y + k % 16), color);
                                    } else {                              
                                        ssd1306_DrawPixel(x + j, (y + k % 16), !color);
                                    }
                                }
                               // printf("\n");
                            }
                            x += 8;
                        }
    					k += 2; //汉字占3B,跳过2个	
    				}
    			}
    		}
    	}
    }
    

    核心也是画点函数,根据字节来确定是否点亮那个位置,

    适配英文字符

    为了适配英文,原生字库没有带有8x16大小的英文字符数组,最接近的也是7x10,所以我写了一个8x16显示字符的函数:

    char ssd1306_DrawChar_u8(char ch, SSD1306_COLOR color) {
        uint32_t i, j;
        uint8_t b;
        // Check if character is valid
        if (ch < 32 || ch > 126)
            return 0;
        // Check remaining space on current line
        if (SSD1306_WIDTH < (SSD1306.CurrentX + 8) ||
            SSD1306_HEIGHT < (SSD1306.CurrentY + 16))
        {
            // Not enough space on current line
            return 0;
        }
        // Use the font to write
        for(i = 0; i < 16; i++) {    //
            b = Font8x16[(ch - 32) * 16 + i]; 
            for(j = 0; j < 8; j++) {
                
                if((b << j) & 0x80)  {
                    ssd1306_DrawPixel(SSD1306.CurrentX + j, (SSD1306.CurrentY + i), (SSD1306_COLOR) color);
                } else {
                    ssd1306_DrawPixel(SSD1306.CurrentX + j, (SSD1306.CurrentY + i), (SSD1306_COLOR)!color);
                }            
            }
        }
        // The current space is now taken
        SSD1306.CurrentX += 8;
    
        // Return written char for validation
        return ch;
    }
    

    这个函数是对应8x16大小的ascii码,如果想换其他的大小的请自己修改。举一反三

    如果想使用原生字库,只需把ssd1306_DrawChar_u8(*(s+k), color); 改成ssd1306_DrawChar((s+k),(字体), color);

    就可以了,不过中英文混搭输出还是字体大小对应得上比较好。

    验证

    ​ 编写好代码之后就是验证阶段了,验证结果也就是开头的效果图,还别说写好这样的代码以后用起来是很方便的。

    代码链接:Gray

    展开全文
  • 关于鸿蒙OS的一些看法

    万次阅读 多人点赞 2020-09-13 08:26:08
    缘起昨天晚上在CSDN做了一个关于鸿蒙OS的观点交流。可惜受限于宾馆的网络条件,有些想法没有表达清楚。再加上交流过程中,也从其他老师那了学到了一些观点。故写下此文。以下以QA方式对我(结...

    缘起

    昨天晚上在CSDN做了一个关于鸿蒙OS的观点交流。可惜受限于宾馆的网络条件,有些想法没有表达清楚。再加上交流过程中,也从其他老师那了学到了一些观点。故写下此文。以下以QA方式对我(结合了其它老师)参与回答的问题和观点进行了回顾。

    Q1:本次鸿蒙2.0 发布,让您感受最深的一点是什么?您看好鸿蒙吗?

    我个人非常清晰的体会是鸿蒙不仅仅是针对智能手机的OS。作为一个简单对比,它应该是包含了Android、Android Things、Android Wear、Android Auto等一系列覆盖从IoT到车机再到智能手机的OS们。从目前已知的情况看,这套OS的发展规划是先解决iot,然后逐步上升到智能手机这样的高端设备上。

    我个人觉得这是一种务实的做法。在逐步发展过程中可以试错。其中,一个比较关键的阶段是128M-4G这个设备,会涉及到一些内核之外的关键技术,比如图形/图像模块的开发,多媒体系统、应用安装和管理等


    总体来说,我更关注在鸿蒙发展壮大过程中自己(或者大部分普通开发者)能做什么,能学到什么、能积累什么。我觉得只盯着鸿蒙OS未来结果是没有太大意义的。在鸿蒙OS发展过程中所培育的人才,所收获的经验教训才是技术上的星星之火。


    关于这点,每一个关注过Android Fwk的同学都会有深深的感受。例如SurfaceFlinger中最开始连VSYNC都没有。谷歌也是在以肉眼明显可见的速度在不断改进。我个人最畏惧的国内的IT研发状况是,很多事情只做0到1的工作,从1到N的工作就不闻不问。这种风气和价值观导向会严重干扰和阻挠我们的进步。

    Q2:下面想请老师们解读下鸿蒙的机遇和可能遇到的挑战。

    我个人定义鸿蒙OS组合的发展策略走得是一条农村包围城市的道路。先从量大的IOT设备开始,逐步上升到中端设备,再到智能手机这样的高端设备。借助分布式,设备虚拟化等概念,打造所谓的超级终端。

    发布会后,我和一些小伙伴沟通过,有很多人觉得分布式这个概念不是很好懂,也不清晰。我这里冒昧做一些猜测,尝试解释下整个概念背后的思考逻辑。

    华为的核心强项之一是它在通信/连接这块有着非常深厚的技术积累。而分布式最重要和关键的问题是如何解决设备之间的高效和稳定的连通。所以,分布式是华为在设备间联通能力的一个自然而然的升华。

    接着说为什么有虚拟化设备(或者设备虚拟化)的概念。这是因为看问题的视角不一样。我在做IoT(是的,你没看错,我做了一年多的IoT,和中移动物联网一起做的)的时候,从上层应用角度来看,我更倾向于把IoT设备看成是数据源,我其实不太关心也不想关心摄像头、传感器是哪家的(很多时候这涉及到设备的采购,非常麻烦),上面跑的是单片机还是OS,底层通信协议是NB-IOT还是LoRa。我只希望这些传感器按约定好的数据传输和交互就行了。

    这种把外部设备看做是数据源/数据目的端是非常通用(我甚至觉得是比设备虚拟化更抽象)的看法,比如我早年间做的DLNA就是这样。

    从华为角度看,如果通过数据这种抽象(其背后是协议的功劳)将硬件差异化都屏蔽了的话,鸿蒙的IoT OS就没有办法渗透到设备上去了。所以,分布式+设备虚拟化是将鸿蒙OS渗透到IoT设备上的关键支撑。

    以上推测是非常粗陋的。昨天蒋总补充了几点,他也问过王博(华为CBG软件部总裁王成录)类似的问题。答复是其中还有一些上面没提到的关键技术细节,比如软总线、设备间的软时钟同步等。意思是华为在分布式和虚拟化设备这两块是实实在在把远程设备当做本地设备在处理了(而不是我之前那种将它们看做数据源的方式,这种方式相对比较简单)。

    另外,鸿蒙这种做法的风险是什么?我个人觉得,虽然众多设备被虚拟化,分布式部署了,但目前来看毕竟还是有一个中枢系统——就是1+8+N中的1,手机。如果手机被掐脖子,就是单点问题,风险非常高。一个可能的解决办法就是将这套分布式、设备虚拟化的技术的协议标准化,让其他家手机也支持。

    另外,这里还忽略了边缘计算设备的存在感。边缘计算的核心是把来自更底层设备(比如传感器)的数据进行加工处理以提高响应速度。比如,车机就是一个边缘计算器,它会把大量的来自车载传感器的数据进行处理(如果这些数据发给一个云端服务器再处理的话时效性就很差,无法处理紧急情况)。在这种模式下,分布式,设备虚拟化就很难再渗透到车机之下的众多传感器了。

    有没有可能这套实现了分布式、设备虚拟化的技术赋能给非华为的公司?这不是一个幼稚的问题。看看高通,再看看SONY集团卖摄像头芯片的(对外部的大客户比对自家的SONY移动支持度更好)、以及三星卖存储、显示屏、甚至CPU芯片,他们的客户都不局限在集团内部。

    Q3:明年华为智能手机将全面使用鸿蒙,很多开发者关心鸿蒙是否真的能替代安卓系统,对此您怎么看?

    此问题原文不是这么问的,大致是这么个意思。我的观点如下:

    太多人纠结鸿蒙未来能不能取代安卓系统。这是个封闭性的问题,答案为是或者不是。我们不妨换个思路看这个问题。假设鸿蒙取代了安卓,皆大欢喜,大家回家洗洗睡。如果没取代安卓又怎样?微软没干成,三星没干成,又如何呢?这妨碍微软不牛吗,三星不牛吗?

    再者,在这个开发OS的过程中,我们难道毫无收获?显然不是,我们会培养,造就大量的OS方面的人才,这是多么大的一笔财富。前几个月神农班上某同学跑到清华去找合作,想找几个搞webkit底层的同学,结果人家博导说学生们都去搞AI,区块链这些能赚钱的事情了。

    我们一方面痛恨打着完全自主开发名号的OS、浏览器,一方面又把所有希望不合理的强加在一个公司上,这像是踏踏实实一步一个脚印搞研发的心态么?我个人觉得,中国要做到真正自主可控(注意,我说的是自主可控,意思是鬼子一旦撒手跑了,我们自己也能干。自主可控不是一个什么高大上的名称,凡是用过外包的企业都会要求这一点)的OS,浏览器,编译器至少还需要10年到20年的时间。如果没有华为这样的公司砸钱搞基础技术研发,这个时间恐怕还得大大延长。

    现在国家、很多公司都在往基础技术上做投入,这是一个好时代,非常感谢大洋对面的金毛及其团队。最后,科技竞争是一个长期的、艰苦的、胶着反复的过程,大家做好打持久战的准备即可。

    Q4:关于国产操作系统,我们还有很多路要走,请大家给一些建议和看法。

    我是作为一名普通开发者身份参与这次直播对话的。普通开发者构成了当前对鸿蒙乃至国产OS的评论主体,我觉得有必要传达和引导一种正向的,积极的态度。

    首先,作为一名普通开发者,碰到当前世界处于百年未有之大变局的时候,应该抱着积极心态主动参与。虽然神农班的班规中提倡个人自由表达不同的观点,但我觉得情绪宣泄过后,是不是可以考虑要不要做点什么?不做就没有收获。当然,一切都自便,大家开心就好。

    其次,要树立功成不必在我,功成必定有我的心态。这个心态并不是说压迫你干活还不给钱,而是说不要把“必须成功”当成个人甚至团队的唯一目标了。我们打得是持久战,注意积累,培养。很大可能是其他人会站在你们的肩膀上继续战斗乃至获得最终的成功。

    最后,星星之火可以燎原,OS以及更多基础核心技术自主可控的这面红旗无论如何都要竖起来,扛下去,我相信大家对此已经没有争议了。在这里希望能有更多人,甚至国外的开发者一起参与开发、建设、生态的培养等。

    恩,确实还有很多事情可以做,很多知识可以学,岂不乐哉?

    最后的最后

    • 我期望的结果不是朋友们从我的书、文章、博客后学会了什么知识,干成了什么,而应该是说,神农,我可是踩在你的肩膀上的喔。

    • 关于学习方面的问题,我已经讨论完了。后面这个公众号将对一些基础的技术,新技术做一些学习和分享。也欢迎你的投稿。不过,正如我在公众号里说的那样——郑渊洁在童话大王《智齿》里有一句话令我印象深刻,大意是“我有权保持沉默,但你说的每一句话都可能成为我灵感的源泉”。所以,影响不是单向的,很可能我从你那学到的东西更多。

                                                                                      神农和朋友们的杂文集

                                                                                      长按识别二维码关注我们

    展开全文
  • 鸿蒙OS是什么

    万次阅读 多人点赞 2020-09-25 14:41:54
    文章目录前言一、鸿蒙OS是什么?二、HarmonyOS的特点1.HarmonyOS的设计与理念2.HarmonyOS的创新3.方舟编译器特点分析4.HarmonyOS的应用研究结束 前言 提示: 2019年8月华为推出鸿蒙HarmonyOS,并运用在荣耀智慧屏,...

    前言

    提示: 2019年8月华为推出鸿蒙HarmonyOS,并运用在荣耀智慧屏,HDC 2020,华为消费者业务软件部总裁王成录将在9月11日进行《共建、共享 HarmonyOS 生态》的演讲,将分享 HarmonyOS 2.0发布的新进展以及给人们、给行业带来的价值。


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、鸿蒙OS是什么?

    华为公司新近推出的经历十年多时间自主研发的鸿蒙操作系统(HarmonyOS),是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全 。目前主要用于智能物联网,在将来无法使用Android时可扩展到智能手机上。HarmonyOS拥有分布架构、内核安全、生态共享、运行流畅四大优势,鸿蒙OS生态的两大核心要素包括自身的微内核结构和方舟编译器。

    二、HarmonyOS的特点

    1.HarmonyOS的设计与理念

    鸿蒙OS是全新的基于微内核的面向全场景的分布式操作系统。鸿蒙OS的微内核已发展到seL4,如下图(图1所示)。seL4的核心非常小,不到9000行C代码。对于微内核,由于用内存管理单元MMU对进程空间进行隔离保护,没有授权的进程将无法访问其他进程的空间,从而阻止了恶意程序对其他进程数据的窃取。鸿蒙OS核心只保留了处理的时间、内存、通信、中断等基本的资源管理,所有其他功能由应用层来管理,以服务的形式去提供功能。服务之间采用进程间通信IPC。
    在这里插入图片描述
    鸿蒙OS实现模块化耦合,对应不同设备可弹性部署;首次将分布式架构用于终端OS,实现跨终端无缝协同体验;采用的确定时延引擎和高性能IPC技术使系统更流畅;其基于微内核架构可重塑终端设备安全性;通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享。

    2.HarmonyOS的创新

    2.1 内部解耦 为适应不同的硬件,鸿蒙OS把每一层内部都解耦,形成几千个模块,每个模块的接口全部用头文件写好,打上标签说明该模块是怎样的设备。可针对应不同设备进行弹性部署,如智慧屏、穿戴设备、车机、音箱、手机等,同时创新的分布式软总线使得拥有不同功能的硬件可以彼此协同。如传统的相机、电视、音响等设备原本相互独立,利用鸿蒙的分布式软总线,这些设备可被虚拟化成摄像模组、显示模组、外放模组,并成为有机整体,用户无需另行设置即可按需调用各种功能,硬件终端之间形成相互协同。

    2.2 虚拟硬件 创新性地打破传统终端硬件的边界,使诸如手机中的显示器、处理器芯片、内存等等实体硬件,可以通过软件按需求组合成不同硬件形态的虚拟硬件功能模块。

    2.3 一次开发多端部署 通过用户接口UI控件的抽象和解耦,业务逻辑原子化,不同应用的适配,可以快速实现一次开发并进行多端部署。鸿蒙OS从设计之初就为多,终端而生,如边缘计算、IoT、服务器等。

    2.4 分布式微内核 鸿蒙OS的微内核所具有的分布式特点,有利于IoT的生态协同。现有各种操作系统只对应于某一种硬件,如Windows只对应x86 PC、iOS对应苹果手机等,无法满足IoT时代众多不同种类终端的需要,也无法针对每种硬件分别开发一种操作系统或应用程序,导致不同硬件终端的生态无法共享协同,开发效率低。因此鸿蒙OS在IoT应用中的优势更加明显。

    3.方舟编译器特点分析

    方舟编译器是华为2019年4月在P30系列手机发布会上公布的,定位于多终端系统,可协助鸿蒙操作系统进入更深层次布局边缘计算、服务器等领域,大幅提升手机端安卓系统的运行效率。

    3.1 编译点提前
    方舟编译器能够在应用程序执行之前,就将Java代码编译成机器语言,从而大量释放硬件资源,这对于多终端,尤其是物联网边缘计算尤为重要。克服了传统编译器边执行边翻译导致的程序执行效率低下,以及安卓系统虚拟机程序安装时间长的不足。方舟编译器将编译过程提前至开发环节,开发者能通过方舟预置算法进行代码优化,还可自行开发代码优化算法,未来代码优化甚至有可能迁移至云端。

    3.2 开发环境友好
    开发环境友好是鸿蒙搭建良好生态的重要因素。兼容Java和C、C++等多种语言,增强了鸿蒙OS的性能,并与自有麒麟、鲲鹏等硬件架构协同,形成类似微软和英特尔联盟的软硬件格局。克服了过去采用Java和C/C++等多种语言混合开发应用程序时,传统编译器下跨语言应用执行效率较低的问题。
    在这里插入图片描述

    4.HarmonyOS的应用研究

    鸿蒙OS的出现将导致与iOS和Android成三足鼎立之   势。尽管华为的鸿蒙OS目前只作为5G手机中Android的备胎,据已公开的资料,鸿蒙OS的UI设计、系统逻辑以及App安装界面,与现在华为手机上的EMUI并没有明显区别,这使现有EMUI用户可以尽快习惯新系统,降低学习成本。此外,由于鸿蒙OS与Android保持兼容,通过方舟编译系统,原来的应用还能够提速60%以上。

    鸿蒙OS的应用领域如图2所示。可应用于手机专有服务、智慧屏专有服务、穿戴设备专有服务、车机专有服务、音箱专有服务等领域,还可使这些不同设备协同工作,切换设备时实现无缝衔接。

    鸿蒙OS使手机、电脑、汽车、智能穿戴等设备的操作系统实现兼容,有利于物联网的升级管理和兼容,成为将来走向智能社会的一个操作系统。

    鸿蒙OS与具有高速、低延时、广接入的5G相结合,为智能手机与智能穿戴设备的联动、智能自动驾驶汽车、物联网系统提供了新的基础技术支撑。

    华为鸿蒙(HarmonyOS)支持多种协议混合适配不同业务场景,用100多种品类的控制组件,向开发者提供最丰富的连接方式。由于华为做了30多年通信,连通本来就是强项,这点是意料之中。
    在这里插入图片描述
    用“1+8+N”来总结华为的战略,就显得很直观。

    1:手机是一个核心入口;

    8:PC、平板、智慧大屏、车机、耳机、音箱、手表、眼镜这八个大小屏入口;

    N:摄像头、路由器、冰箱、空调等N种泛物联网设备。

    HarmonyOS把各终端硬件的能力虚拟成可共享的能力资源池,让应用通过系统调用其所需的硬件能力。在这个架构下,硬件能力,类似活字印刷术中的一个个单字字模,可以被无限次重复使用。简单来说,各终端实现了硬件互助,资源共享;应用拥有了调用远程终端的能力(像调用本地终端一样方便);而用户收获一个多设备组成的超级终端。

    结束

    猛一看,鸿蒙系统占据着绝对的劣势。但从纵观移动操作系统十几年的起起伏伏,鸿蒙系统并非没有机会。在2007年第二季度,塞班系统占据着63.75%的市场份额,Windows Mobile及BlackBerry OS则分别占据10&左右市场份额

    虽然目前主流操作系统大多被国外垄断,我国华为公司的HarmonyOS虽然起步不久,但却具有许多独特优势,其改进的跨平台功能、支持多场景应用、可以在各种设备和平台上使用、可以满足消费者对低延迟和强安全性需求的特点,使其具有广阔的应用前景。

    在硬件和软件之间,中国产业界一向“重硬轻软“。毕竟,硬件更容易被消费者感知,加一个摄像头、上一个大屏幕,用户一眼就看到了,发布会和营销都好找噱头。但是,软件,尤其是基础软件的革新,用户感知有很大很大的滞后性。因此,企业对于基础软件的投资,常常不被理解,甚至引来冷嘲热讽,这背后,是中国产业界普遍浮躁、急功近利的心态。

    从华为的历史来看,它是一家十分耐得住寂寞的公司。往远了说,80年代创业之初代理交换机就很赚钱,任正非却偏偏要赌上一切搞如此高风险的自主研发;往近了说,当年海思何曾被被看好过,最初几代产品也是在你我的嘲笑中成长,最终十年磨一剑,终成大器。

    【如果您想学习HarmonyOS 应用开发基础教程 请猛戳】

    以上内容节选自取自HarmonyOS特点与应用前景分析:四川工业科技学院电子信息与计算机工程学院 李艳\刘丹\田小东\谭琦

    展开全文
  • 华为鸿蒙系统初探之HUAWEI DevEco Studio Hello World

    万次阅读 多人点赞 2020-09-17 00:43:10
    2020年9月10日,华为鸿蒙系统升级至华为鸿蒙系统2.0版本.本文探索一下其推出的IDE
  • 抢先学鸿蒙(HarmonyOS)2.0,你就是下一个大咖!

    万次阅读 多人点赞 2020-09-16 18:48:30
    2020年9月10日,华为开发者大会发布了鸿蒙(HarmonyOS)2.0。我在2020-9-11日也发布了全球首套鸿蒙2.0 App开发视频课程《鸿蒙(HarmonyOS)2.0入门与实战》【提前一个月做完了,由于保密协议的原因,只能在发布会后...
  • 全网最全的鸿蒙源码结构分析(附自制4张架构图)

    万次阅读 多人点赞 2020-09-21 23:44:34
    前言:今天下午到晚上折腾了6个多小时,从官网一直到Gitee和CodeChina,把所有知道的资料都看了一下,整理了一份鸿蒙架构和源码对比图给大家,希望大家都来看看。 文章目录一、鸿蒙结构图自制版(结合源码重新制作...
  • 这次开启华为鸿蒙2.0系统手机开发者beta版公测招募的机型有华为P40 、P40 Pro、Mate 30、Mate 30 Pro、 MatePad Pro 设备,支持 OTA 升级。华为鸿蒙2.0系统手机在系统界面上跟华为EMUI11系统没有太大的区别,而且...
  • 一、鸿蒙远程模拟器、 二、鸿蒙远程模拟器运行手机应用
  • 逐行分析鸿蒙系统的 JavaScript 框架

    万次阅读 多人点赞 2020-09-15 16:49:06
    我在前文中曾经介绍过鸿蒙的 Javascript 框架,这几天终于把 JS 仓库编译通过了,期间踩了不少坑,也给鸿蒙贡献了几个 PR。今天我们就来逐行分析鸿蒙系统中的 JS 框架。文中的...
  • 尽管华为创始人任正非等高管多次辟谣鸿蒙并非是为手机设计的,但由于鸿蒙此前一直仅仅面向开发者进行推送,导致外界用户一直无法一窥鸿蒙的“真身”。 鸿蒙究竟是什么?能干什么?未来应该如何改进和优化?鸿蒙生态...
  • 鸿蒙OS开源代码精要解读之——init

    万次阅读 多人点赞 2020-09-25 09:34:26
    鸿蒙OS开源代码精要解读之——init 作者介绍: 中科创达OpenHarmony研究组 说明: 中科创达OpenHarmony研究组第一时间对https://codechina.csdn.net/openharmony上开源的代码进行了详尽的代码研读和学习。为此,...
  • 等等鸿蒙

    千次阅读 2020-09-25 09:30:19
    看了几页鸿蒙的介绍,我认为鸿蒙是对传统操作系统自顶向下的演进。 所谓自底而上,就是开发人员能够敏锐的扑捉到硬件系统的变革,然后带来操作系统的变化。譬如安卓和之前的嵌入式Linux相比,就顺应了多处理器的发展...
  • 支持鸿蒙

    2020-10-07 19:14:08
    支持鸿蒙
  • 鸿蒙HarmonyOS源码

    2020-10-24 20:09:55
    鸿蒙HarmonyOS源码 鸿蒙HarmonyOS源码 鸿蒙HarmonyOS源码 鸿蒙HarmonyOS源码 鸿蒙HarmonyOS源码
  • 让 Flutter 在鸿蒙系统上跑起来

    万次阅读 多人点赞 2021-01-21 19:59:00
    总第433篇2021年 第003篇鸿蒙系统 (HarmonyOS)是华为推出的一款分布式操作系统,那么如何在保证开发迭代效率的前提下,以相对低的成本将移动应用快速移植到鸿蒙平台上呢?美团...
  • 鸿蒙OS

    千次阅读 2020-11-18 10:53:51
    一、鸿蒙OS是什么? 华为公司新近推出的经历十年多时间自主研发的鸿蒙操作系统(HarmonyOS),是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全 。目前主要用于智能物联网,在将来无法使用Android时...
  • 鸿蒙OS下载地址

    万次阅读 多人点赞 2019-08-10 17:27:44
    奈何很多人不知道,鸿蒙OS的下载地址,随便写一点发个官网链接。 鸿蒙系统是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全,主要用于物联网,特点是低时延,甚至可到毫秒级乃至亚毫秒级...
  • 鸿蒙OS自定义组件之鸿蒙画板

    千次阅读 2020-09-20 12:03:54
    鸿蒙自定义组件之鸿蒙画板初识鸿蒙OS 2.0自定义Component代码效果声明 初识鸿蒙OS 2.0 华为的鸿蒙OS 2.0是目前唯一个有希望和安卓、IOS对抗的全新生态系统。9月10日,在东莞正式发布。华为喊出了“HarmonyOS 2.0 ...
  • 鸿蒙HarmonyOS应用开发系列 | 解读鸿蒙源码

    千次阅读 多人点赞 2020-12-14 15:44:10
    鸿蒙OS的系统调用是如何实现的? | 解读鸿蒙源码 鸿蒙开发环境搭建、源码下载和编译 鸿蒙OpenHarmony源码下载及构成简介 鸿蒙源码下载并编译 Harmony OS 开发避坑指南——源码下载和编译 全网最全的鸿蒙源码...
  • 本期是我们鸿蒙系列课程的第1期,主要目标是让大家先搞清楚鸿蒙的整体架构,开发环境搭建,代码构建和编译烧录测试等玩法。然后就是核心的代码解读和试验了,譬如liteos_a的启动流程,liteos的shell原理和用法,鸿蒙...
  • 本来华为的开发者大会,我都很少关注,可是所有人关心的鸿蒙操作系统,都会在发布会上放出消息。今年也不例外。这一次,鸿蒙将会在开发者大会上,发布 鸿蒙2.0。去年虽然发布了鸿蒙操作系统,但是并没有放出任何开发...
  • 鸿蒙系统应用开发初体验(一)

    万次阅读 多人点赞 2019-08-09 17:13:42
    上学时期就对操作系统非常有兴趣,甚至还想自己动手尝试尝试。 曾买来一堆关于操作系统的书籍肯,这... 最近关于华为 鸿蒙 的新闻特别多,也一直关注着。希望做头一批尝鲜着。这不, 就在今天,即2019年8月9日的...
  • 本文对鸿蒙OS内核进行了简单的分析,涉及鸿蒙OS内核的架构,鸿蒙OS内核的三大核心模块(进程管理,虚拟内存,文件系统)。首先,作者先阐述几个关键的名词。操作系统(Operating System): 操作系统的功能是负责管理各种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,038
精华内容 2,415
关键字:

鸿蒙