精华内容
下载资源
问答
  • 华为开源操作系统鸿蒙开源地址链接: 华为开发资源: https://developer.huaweicloud.com/ 华为终端开发者论坛: https://developer.huawei.com/consumer/cn/forumupgrading 华为系统liteOS老地址:...

    华为开源操作系统鸿蒙开源地址链接:

    华为开发资源: https://developer.huaweicloud.com/

    华为终端开发者论坛: https://developer.huawei.com/consumer/cn/forumupgrading

    华为系统liteOS老地址:https://github.com/LiteOS/LiteOS

    系统资料下载地址:https://github.com/Awesome-HarmonyOS/HarmonyOS

    系统中文文档:https://github.com/Awesome-HarmonyOS/HarmonyOS/blob/master/doc/README-zh.md

    系统Huawei LiteOS 开发指南:https://github.com/Awesome-HarmonyOS/HarmonyOS/blob/master/Huawei_LiteOS/doc/Huawei_LiteOS_Developer_Guide_zh.md

    开发工具Huawei LiteOS Studio,下载地址:https://static.huaweicloud.com/upload/files/sdk/LiteOS_IDE.zip

     

    展开全文
  • 华为开源操作系统鸿蒙开源地址链接: 华为开发资源:https://developer.huaweicloud.com/ 华为终端开发者论坛:https://developer.huawei.com/consumer/cn/forumupgrading 华为系统liteOS老地址:...
    展开全文
  • 鸿蒙开源kernel学习记录(一)

    千次阅读 2020-09-14 17:46:37
    基于鸿蒙开源的code-1.0,学习 鸿蒙kernel代码初识 经常使用的是linux内核,直接看到鸿蒙的代码,没有找到详细的配置说明手册有点摸不清楚从哪入手。 编译环境搭建完成,尝试了编译成功后,决定按照自己的学习方法,...

    前言

    基于鸿蒙开源的code-1.0,学习

    鸿蒙kernel代码初识

    经常使用的是linux内核,直接看到鸿蒙的代码,没有找到详细的配置说明手册有点摸不清楚从哪入手。
    编译环境搭建完成,尝试了编译成功后,决定按照自己的学习方法,先从kernel的编译配置入手,开始学习下鸿蒙的kernel。
    在linux中kernel的配置一般使用了arch/arm/config中的配置文件进行配置。那么鸿蒙的kernel是从哪里找到的config呢?
    进入鸿蒙的kernel/liteos_a,可以看到目录下有几个文件
    Makefile
    Kconfig
    config.mk
    build.sh
    BUILD.gn

    Makefile和Kconfig

    首先先看下makefile和kconfig
    因为这两个文件linux内核中经常修改,一看名字比较亲切
    粗略看了下Kconfig,和linux的一样,主要是对config的宏进行处理。生成代码中的CONIFG_XX对应的宏。
    Makefile主要是编译相关

    help:
    	$(HIDE)echo "-------------------------------------------------------"
    	$(HIDE)echo "1.====make help:    get help infomation of make"
    	$(HIDE)echo "2.====make:         make a debug version based the .config"
    	$(HIDE)echo "3.====make debug:   make a debug version based the .config"
    	$(HIDE)echo "4.====make release: make a release version for all platform"
    	$(HIDE)echo "5.====make release PLATFORM=xxx:  make a release version only for platform xxx"
    	$(HIDE)echo "6.====make rootfsdir: make a original rootfs dir"
    	$(HIDE)echo "7.====make rootfs FSTYPE=***: make a original rootfs img"
    	$(HIDE)echo "8.====make test: make the testsuits_app and put it into the rootfs dir"
    	$(HIDE)echo "9.====make test_apps FSTYPE=***: make a rootfs img with the testsuits_app in it"
    	$(HIDE)echo "xxx should be one of (hi3516cv300 hi3516ev200 hi3556av100/cortex-a53_aarch32 hi3559av100/cortex-a53_aarch64)"
    	$(HIDE)echo "*** should be one of (jffs2)"
    	$(HIDE)echo "-------------------------------------------------------"
    
    debug:
    	$(HIDE)echo "=============== make a debug version  ==============="
    	$(HIDE) $(MAKE) all
    

    BUILD.gn

    .gn文件,以前从来没有接触过,还好文件内容比较简单,对着内容加百度大概学习了一下

    import("//build/lite/config/subsystem/lite_subsystem.gni")
    **#导入了gni相关模板,文件是lite_subsystem.gni
    #在这个文件中主要定义lite_subsystem模板,**
    # Defines a subsystem
    #
    # The lite_subsystem template defines all the modules contained in a subsystem
    #
    # Parameters
    #
    #   subsystem_components (required)
    #     [list of scopes] Defines all modules in the subsystem.
    #
    #
    **例如:
    template("lite_subsystem") {
    #申明lite_subsystem模板,模板定义了一个类似于函数的自定义名称*
        assert(defined(invoker.subsystem_components), "subsystem_components in required.")
    #gn系统函数assert,判断是否定义魔术变量subsystem_components
    #defined:返回是否定义了标识符。
    #如果定义了给定参数,则返回true。
    #assert如果条件为false,则生成将失败并出现错误。
    #如果提供了可选的第二个参数,将打印该字符串
    #显示错误消息。**
    
        lite_subsystem_components = invoker.subsystem_components
    **#将加载的subsystem_components变量赋值给lite_subsystem_components
    #subsystem_components变量可以在项目配置中找到定义**
    
        group(target_name) {
    **#创建一个当前目标名称的节点,target_name是当前目标的名称,在这里是使用模板创建的的名称
    #例如lite_subsystem("kernel"),则target_name就是kernel
    #group就是创建一个节点,这个节点是引用一个或多个其他目标的虚拟依赖关系**
            deps = []
    **#定义一个空的私有链接依赖**
            if(defined(invoker.deps)) {
                deps += invoker.deps
    **#如果已经有deps依赖,就将依赖加入引用
    #deps就是保存需要引入的代码的路径,有点类似于include**
            }
            **# add subsystem packages**
            foreach(pkg_label, lite_subsystem_components) {
    **#foreach就是循环整个 lite_subsystem_components列表,pkg_label代表列表的第几个成员
    #pkg_label会从指向第一个成员开始
    #mylist = [ "a", "b", "c" ]
    # foreach(i, mylist) {
    #   print(i)
    #  }
    #
    #  Prints:
    #  a
    #  b
    #  c**
                deps += [ pkg_label ]
    **#将 lite_subsystem_components每个成员加入依赖**
            }
        }
    }
    
    
    
    
    declare_args() {
        enable_ohos_kernel_liteos_a_ext_build = true
        LOSCFG_TEST_APPS = false
    }
    **#将给定参数引入当前范围。
    #如果未在命令行或工具链的参数中指定它们,则将使用declare_args块中给定的默认值。但是,这些默认值不会
    #覆盖命令行值。**
    
    lite_subsystem("kernel") {
    **#创建一个kernel名的lite_subsystem,类似于创建一个lite_subsystem的函数,函数名是kernel
    #这个模板的参数就是kernel{}中所写的,类似于函数传递的参数**
        subsystem_components = []
    
        if (enable_ohos_kernel_liteos_a_ext_build == false) {
            subsystem_components += [
                "//kernel/liteos_a/kernel",
                "//kernel/liteos_a/net",
                "//kernel/liteos_a/lib",
                "//kernel/liteos_a/compat",
                "//kernel/liteos_a/fs",
                "//kernel/liteos_a/arch:platform_cpu",
            ]
            if (LOSCFG_SHELL) {
                subsystem_components += [ "//kernel/liteos_a/shell" ]
            }
        } else {
            deps = [":make"]
        }
    }
    
    action("make") {
    **#执行make**
        script = "//build/lite/build_ext_components.py"
    **#脚本路径**
        outputs = [ "$target_gen_dir/liteos_a_build_log.txt" ]
    **#输出文件**
        exec_path = rebase_path(rebase_path(".", root_build_dir))
        outdir = rebase_path(get_path_info(".", "out_dir"))
        command = "make clean OUTDIR=$outdir && make rootfs VERSION=\"${ohos_version}\" -j 16 OUTDIR=$outdir"
        args = [
            "--path=$exec_path",
            "--prebuilts=sh build.sh ${board_name} ${ohos_build_compiler} ${ohos_build_type}",
    **#调用了一个build.sh脚本**
            "--command=${command}"
        ]
    }
    

    build.sh

    现在来看看这个build.sh

    set -e
    
    echo "sh param:$1,$2,$3"
    #获取运行build.sh时后面跟着的三个参数
    #$1 ${board_name}
    #$2 ${ohos_build_compiler}
    #$3 ${ohos_build_type}
    
    source="tools/build/config/$1_release.config"
    #加载config文件
    destination=".config"
    if [ "$2" = "clang" ]; then
        if [ "$3" = "debug" ]; then
            source="tools/build/config/debug/$1_$2.config"
        else
            source="tools/build/config/$1_$2_release.config"
        fi
    elif [ "$2" = "gcc" ]; then
        if [ "$3" = "debug" ]; then
            source="tools/build/config/$1_debug_shell.config"
        else
            source="tools/build/config/$1_release.config"
        fi
    fi
    if [ -d "./out" ]; then
        rm -rf ./out
    fi
    if [ -f "$destination" ]; then
        rm -rf $destination
    fi
    cp $source $destination
    #把对应项目的config 拷贝到kernel/.config
    

    所以kernel的config文件在对应的tools/build/config/文件目录下。
    进入目录tools/build/config/下,看到很多项目对应的config文件

    config.mk

    打开文件,看到很多配置,不太清楚是做什么的

    ############### this is a makefile that you can config it ###############
    -include $(LITEOSTOPDIR)/tools/build/mk/los_config.mk
    
    TOP_LD_PATH      = $(LITEOSTOPDIR)
    SCRIPTS_PATH     = $(LITEOS_SCRIPTPATH)
    LITEOS_MK_PATH   = $(MK_PATH)
    LITEOS_SUBDIRS   = $(LIB_SUBDIRS)
    LIB_BIGODIR      = $(LITEOS_LIB_BIGODIR)
    
    ##### liteos tables -u ldflags #####
    -include $(LITEOS_MK_PATH)/liteos_tables_ldflags.mk
    
    
    LITEOS_COPTS   := $(LITEOS_COPTS_DEBUG) $(LITEOS_COPTS_BASE)  \
                      $(LITEOS_COPTS_EXTRA) $(LITEOS_CORE_COPTS)
    LITEOS_CXXOPTS  := $(LITEOS_CXXOPTS_BASE)
    LITEOS_INCLUDE  := $(LITEOS_KERNEL_INCLUDE)  $(LITEOS_EXTKERNEL_INCLUDE) \
                       $(LITEOS_COMPAT_INCLUDE)  $(LITEOS_FS_INCLUDE) \
                       $(LITEOS_NET_INCLUDE)     $(LITEOS_LIB_INCLUDE) \
                       $(LITEOS_DRIVERS_INCLUDE) $(LOSCFG_TOOLS_DEBUG_INCLUDE) \
                       $(LITEOS_PLATFORM_INCLUDE) $(LITEOS_DFX_INCLUDE) \
                       $(LITEOS_SECURITY_INCLUDE)
    LITEOS_LIBDEP   := $(LITEOS_BASELIB)
    LITEOS_ASFLAGS  := $(LITEOS_ASOPTS)      $(LITEOS_INCLUDE)
    LITEOS_CFLAGS   := $(LITEOS_COPTS)       $(LITEOS_CMACRO) \
                       $(LITEOS_CMACRO_TEST) $(LITEOS_IMAGE_MACRO) \
                       $(LITEOS_INCLUDE)
    LITEOS_CXXFLAGS := $(LITEOS_CXXOPTS)     $(LITEOS_CXXMACRO) \
                       $(LITEOS_CMACRO)      $(LITEOS_CXXINCLUDE)
    LITEOS_LDFLAGS  := $(LITEOS_LD_OPTS)     $(LITEOS_LD_PATH) \
                       $(LITEOS_LD_SCRIPT)
    

    根据配置路径,找到kernel/tools/build/mk/los_config.mk
    打开los_config.mk文件看,发现里面是根据config的配置,将需要的代码或者path或者路径加入配置的标志中。

    展开全文
  • 鸿蒙采用了分布式架构,微内核,同时华为在软件生态上选择了共享,兼容安卓系统,“如果谷歌还愿意提供服务的话”,余承东有些尴尬地表示,最后宣布,鸿蒙开源。 分布式架构的选择使得鸿蒙OS可以实现模块化解耦,在...
        

    【TechWeb】8月9日,华为开发者大会在东莞举行,华为消费电子CEO余承东在这里宣布了一个重磅消息——发布鸿蒙OS操作系统,鸿蒙采用了分布式架构,微内核,同时华为在软件生态上选择了共享,兼容安卓系统,“如果谷歌还愿意提供服务的话”,余承东有些尴尬地表示,最后宣布,鸿蒙开源。

    分布式架构的选择使得鸿蒙OS可以实现模块化解耦,在不同设备间可以实现互联,打通了PC、平板、汽车、音响、可穿戴设备等等多种设备之间的连接,可以实现不同设备间的协同调用,比如,PC无法拍照的时候可以直接调用手机摄像头进行操作。余承东表示,这是一种“1+8+N”的用户无缝体验。1是指华为手机,8是8款华为产品,包括了电脑、平板、智能手表等,N则是华为下游生态伙伴的产品,鸿蒙可以更好地建立起这种开放生态。

    本次发布鸿蒙,系统版本是鸿蒙1.0,其实对于内核来讲,鸿蒙内核已经更新到了2.0版本,余承东表示华为已经为此准备了两年,微内核在性能上相比安卓、Linux、苹果代码利用率大大提升,进程间通信效率提升5倍。目前,鸿蒙内核除了鸿蒙微内核之外,还包含了Linux和LiteOS,以求对于多个系统完成完美兼容,随着后期生态的建立逐渐转向微内核。同时华为还推出面向多终端开发的IDE,可以大幅度提升开发者的开发效率,建立良好的开发环境。

    余承东宣布鸿蒙开源之后,会场一片沸腾,这对于开发者、用户都振奋人心的消息,鸿蒙将在开发者大会第二日,即10号下午的荣耀智慧屏发布会上首次实现落地。

    展开全文
  • 华为鸿蒙开源

    千次阅读 2019-08-10 17:53:24
    作者 | 胡巍巍 发自东莞篮球中心来源 | CSDN(ID:CSDNnews)鸿蒙真的来了!余承东宣布,鸿蒙的英文名叫HarmonyOS!对于华为来讲,8月9日是华为开发...
  • 华为鸿蒙开源,优先国产开源协议

    千次阅读 2019-08-10 12:59:05
    (给技术最前线加星标,每天看技术热点)原创:技术最前线(id:TopITNews)8月 9 日,在华为开发者大会上,余承东宣布华为鸿蒙操作系统正式亮相。》昨天余承东明确...
  • 基于安卓平台的OpenGL(http://androidxref.com/9.0.0_r3/),实现功能的鸿蒙化迁移和重构,全球首发鸿蒙平台的OpenGL-ISRC,代码已经开源到(https://gitee.com/iscas-ohos/OpenGL_ISRC/tree/main),欢迎各...
  • 大数据文摘编辑部出品昨天,在东莞篮球中心的华为开发者大会现场,余承东向世界发布了鸿蒙操作系统,并公布了鸿蒙OS的历程及路标。2019年,将是鸿蒙OS的落地元年,而第一款搭载鸿蒙OS的终端——荣耀智慧屏系列,也在...
  • 作者 | 胡巍巍出品 | CSDN(ID:CSDNnews)鸿蒙真的来了!余承东宣布,鸿蒙的英文名叫HarmonyOS!对于华为来讲,8月9日是华为开发者大会2019的...
  • 作者 | 胡巍巍 发自东莞篮球中心出品 | CSDN(ID:CSDNnews)鸿蒙真的来了!余承东宣布,鸿蒙的英文名叫HarmonyOS!对于华为来讲,8月9日是华为开发...
  • 作者 | 胡巍巍 发自东莞篮球中心出品 | CSDN(ID:CSDNnews)鸿蒙真的来了!余承东宣布,鸿蒙的英文名叫HarmonyOS!对于华为来讲,8月9日是华为开发者大会2019的首日,对于上台演讲的华为消费者业务CEO余承东来说,...
  • 鸿蒙OS开源代码精要解读之——init

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

    千次阅读 2020-09-10 22:28:29
    华为的鸿蒙系统可能一直是听说过没见过的系统,在今天也终于正式宣布开源了。 鸿蒙系统托管在了国内的 Gitee 上,也就是码云上面,其地址如下: https://openharmony.gitee.com 在它的托管主页上有一个项目...
  • 华为鸿蒙系统开源

    千次阅读 2020-09-11 00:42:56
    华为鸿蒙系统开源:https://openharmony.gitee.com/openharmony
  • 华为宣布鸿蒙OS开源

    千次阅读 多人点赞 2019-08-09 15:18:00
    华为消费者业务CEO、华为技术有限公司常务董事余承东正式向全球发布其全新的基于微内核的面向全场景的分布式操作系统——鸿蒙OS,并宣布鸿蒙OS开源。 “随着全场景智慧时代的到来,华为认为需要进一步提升操作系统...
  • 鸿蒙OS开源代码精要解读之——init作者介绍:中科创达OpenHarmony研究组说明:中科创达OpenHarmony研究组第一时间对https://codechina.csdn.net/openharmony上开源的代码进行了详尽的代码研读和学习。为此,我们打算...
  • 点击上方的终端研发部,右上角选择“设为星标”前言华为消费者业务CEO余承东在华为开发者大会HDC 2020上正式发布了鸿蒙OS 2.0系统,并开源其源代码。OpenHarmony广泛应用...
  • 蒙OS开源代码精要解读之—— 系统服务框架子系统(服务启动) 作者介绍: ...随着对代码的了解,广大开发者想亲自动手参与的意愿和信心也会随之增强——这也是鸿蒙OS开源的意义所在。 本篇内容摘要: Samgr
  • 【招才纳士】鸿蒙OS开源技术工程师

    千次阅读 2020-08-15 12:00:00
    鸿蒙系统(鸿蒙OS,HarmonyOS)是第一款基于微内核的全场景分布式OS,由华为公司自主研发。2019年8月9日,华为在HDC.2019上正式发布鸿蒙系统。鸿蒙系统将率先部署在智慧...
  • 近日,华为发布鸿蒙2.0操作系统,该系统应用开发框架采用JavaScript作为开发语言,这对于前端开发工程师来说无疑是一个好消息!果然JavaScript才是全世界最好的语言……JavaScript优势:JS 生态圈目前来看形势很好,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 500
精华内容 200
关键字:

鸿蒙开源