色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

編寫一個簡單的Hello world程序

電子工程師 ? 來源:HarmonyOS社區 ? 作者:HarmonyOS社區 ? 2020-11-11 09:56 ? 次閱讀

一、編寫一個簡單的Hello world程序

編寫一個Hello world程序比較簡單,可以參考官網:

https://device.harmonyos.com/cn/docs/start/introduce/oem_wifi_start-0000001050168544

本文在這里做下總結。

1.1、確定目錄結構

開發者編寫業務時,務必先在./applications/sample/wifi-iot/app路徑下新建一個目錄(或一套目錄結構),用于存放業務源碼文件,例如:在app下新增業務my_first_app,其中hello_world.c為業務代碼,BUILD.gn為編譯腳本,具體規劃目錄結構如下:

1.2、編寫業務代碼

在hello_world.c中新建業務入口函數HelloWorld,并實現業務邏輯。并在代碼最下方,使用 HarmonyOS啟動恢復模塊接口SYS_RUN()啟動業務。(SYS_RUN定義在ohos_init.h文件中)

1.3、編寫用于將業務構建成靜態庫的BUILD.gn文件

如步驟1所述,BUILD.gn文件由三部分內容(目標、源文件、頭文件路徑)構成,需由開發者完成填寫。以my_first_app為例,需要建./applications/sample/wifi-iot/app/my_first_app/BUILD.gn,并完如下配置。

static_library中指定業務模塊的編譯結果,為靜態庫文件libmyapp.a,開發者根據實際情況完成填寫。sources中指定靜態庫.a所依賴的.c文件及其路徑,若路徑中包含"http://"則表示絕對路徑(此處為代碼根路徑),若不包含"http://"則表示相對路徑。include_dirs中指定source所需要依賴的.h文件路徑。

1.4、編寫模塊BUILD.gn文件,指定需參與構建的特性模塊

配置./applications/sample/wifi-iot/app/BUILD.gn文件,在features字段中增加索引,使目標模塊參與編譯。features字段指定業務模塊的路徑和目標,以my_first_app舉例,features字段配置如下。

my_first_app是相對路徑,指向./applications/sample/wifi-iot/app/my_first_app/BUILD.gn。

myapp是目標,指向./applications/sample/wifi-iot/app/my_first_app/BUILD.gn中的static_library("myapp")。

二、Hi3861相關代碼結構

目前hi3861用的是liteos-m內核,但是目前hi3681的liteos-m被芯片rom化了,固化在芯片內部了。所以在harmonyOS代碼是找不到hi3861的內核部分。但是這樣不妨礙我們去理清hi3861的其他代碼結構。hi3861平臺配置文件

buildliteplatformhi3861v100_liteos_riscvplatform.json

該文件描述了hi3681平臺相關的代碼路徑,例如application、startup等。

這里我列舉出來幾個比較重要的:

子系統:applications

路徑:applications/sample/wifi-iot/app

作用:這個路徑下存放了hi3681編寫的應用程序代碼,例如我們剛剛寫的hello world 代碼就放在這個路徑下。

子系統:iot_hardware

路徑:base/iot_hardware/frameworks/wifiiot_lite

作用:存放了 hi3681 芯片相關的驅動、例如spi、gpio、uart等。

子系統:vendor

路徑:vendor/hisi/hi3861/hi3861

作用:存放了 hi3681 相關的廠商SDK之類的文件。其中最重要的是

vendorhisihi3861hi3861appwifiiot_appinitapp_io_init.c

vendorhisihi3861hi3861appwifiiot_appsrcapp_main.c

其中,app_io_init.c 是hi3681內核啟動后的io口相關設置,用戶需根據應用場景,合理選擇各外設的IO復用配置。

app_main.c 是內核啟動進入的應用程序入口。

三、Hi3861啟動流程

由于hi3681的liteos-m被芯片rom化了,固化在芯片內部了。所以我們主要看內核啟動后的第一個入口函數。

代碼路徑:

app_main一開始打印了 SDK版本號,最后一行會調用HOS_SystemInit(); 函數進行鴻蒙系統的初始化。我們進去看下初始化做了哪些動作。

路徑:base/startup/services/bootstrap_lite/source/system_init.c

我們可以看到主要是初始化了 一些相關模塊、系統,包括有bsp、device(設備)。其中最終的是MODULE_INIT(run),它負責調用了所有run段的代碼,那么run段的代碼是哪些呢?事實上就是我們前面application中使用SYS_RUN() 宏設置的函數名。

還記得我們前面寫的hello world應用程序嗎?

也就是說所有用SYS_RUN() 宏設置的函數都會在使用MODULE_INIT(run);的時候被調用,為了驗證這一點,我們可以加一些打印信息,如下:

我們重新編譯后燒錄。打開串口查看打印信息,如下:

可以看到在35行之后,就打印 Hello world的信息。符合預期。

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 程序
    +關注

    關注

    117

    文章

    3792

    瀏覽量

    81183
  • 函數
    +關注

    關注

    3

    文章

    4338

    瀏覽量

    62768
  • 模塊接口
    +關注

    關注

    0

    文章

    2

    瀏覽量

    5488

原文標題:只要三步!連老師帶你初探Hi3861代碼結構

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用MCUXpresso for VS Code插件開發Zephyr的hello world

    本期來到Zephyr實戰經驗演練,小編帶著大家起使用MCUXpresso for VS Code插件來開發屬于Zephyr的hello wor
    的頭像 發表于 01-03 09:21 ?466次閱讀
    使用MCUXpresso for VS Code插件開發Zephyr的<b class='flag-5'>hello</b> <b class='flag-5'>world</b>

    esp32運行make flash燒寫hello world遇到的疑問求解

    串口驅動安裝正常,連接正常 在demo目錄里hello world程序下,運行make all,編譯正常, 然后運行 make flash 出現
    發表于 06-26 06:25

    使用make flash命令燒錄Hello_world程式失敗了,為什么?

    請問我使用 make flash 命令要燒錄 Hello_world 程式失敗了 看起來像是COM3 Port有連上,但找不到開發板上芯片,無法寫入 狀況如下e3.JPG (119.44 KiB
    發表于 06-26 06:10

    hello_world例程里面CONFIG_FREERTOS_HZ沒定義,但又能編譯燒錄,為什么?

    hello_world例程里面CONFIG_FREERTOS_HZ沒定義,但又能編譯燒錄,這是什么情況?
    發表于 06-19 07:25

    鴻蒙ArkUI-X跨平臺開發:【 編寫一個ArkUI-X應用】

    通過構建簡單的ArkUI頁面跳轉示例,快速了解資源創建引用,路由代碼編寫和UI布局編寫等應用開發流程。
    的頭像 發表于 05-21 17:36 ?737次閱讀
    鴻蒙ArkUI-X跨平臺開發:【 <b class='flag-5'>編寫</b>第<b class='flag-5'>一個</b>ArkUI-X應用】

    鴻蒙OpenHarmony【輕量系統 編寫Hello World程序】 (基于Hi3861開發板)

    下方將通過修改源碼的方式展示如何編寫簡單程序,輸出“Hello world”。請在下載的源碼目錄中進行下述操作。
    的頭像 發表于 05-16 18:15 ?1009次閱讀
    鴻蒙OpenHarmony【輕量系統 <b class='flag-5'>編寫</b>“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3861開發板)

    鴻蒙OpenHarmony【小型系統 編寫Hello World程序】 (基于Hi3516開發板)

    展示如何在單板上運行第一個應用程序,其中包括新建應用程序、編譯、燒寫、運行等步驟,最終輸出“Hello World!”。
    的頭像 發表于 05-10 16:26 ?726次閱讀
    鴻蒙OpenHarmony【小型系統 <b class='flag-5'>編寫</b>“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3516開發板)

    鴻蒙OpenHarmony【標準系統 編寫Hello World程序】(基于RK3568開發板)

    下方將展示如何在單板上運行第一個應用程序,其中包括新建應用程序、編譯、燒寫、運行等步驟,最終輸出“Hello World!”。
    的頭像 發表于 05-09 17:58 ?917次閱讀
    鴻蒙OpenHarmony【標準系統 <b class='flag-5'>編寫</b>“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】(基于RK3568開發板)

    鴻蒙OpenHarmony【標準系統編寫Hello World程序】 (基于RK3568開發板)

    編寫Hello World程序 下方將展示如何在單板上運行第一個應用程序,其中包括新建應用
    的頭像 發表于 04-24 17:32 ?854次閱讀
    鴻蒙OpenHarmony【標準系統<b class='flag-5'>編寫</b>“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于RK3568開發板)

    鴻蒙OpenHarmony【小型系統編寫Hello World程序】 (基于Hi3516開發板)

    下方將展示如何在單板上運行第一個應用程序,其中包括新建應用程序、編譯、燒寫、運行等步驟,最終輸出“Hello World!”。
    的頭像 發表于 04-22 21:55 ?377次閱讀
    鴻蒙OpenHarmony【小型系統<b class='flag-5'>編寫</b>“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3516開發板)

    鴻蒙OpenHarmony【輕量系統編寫Hello World程序】 (基于Hi3861開發板)

    下方將通過修改源碼的方式展示如何編寫簡單程序,輸出“Hello world”。請在下載的源碼目錄中進行下述操作。
    的頭像 發表于 04-21 21:44 ?356次閱讀
    鴻蒙OpenHarmony【輕量系統<b class='flag-5'>編寫</b>“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3861開發板)

    全志D1s開發板軟件入門之Hello World演示

    NeZha 如果你看到 \"Hello NeZha\" 這行打印,那么恭喜你,你已經開發出在哪吒上的第一個應用了! 進階:使用makefile編寫
    發表于 03-06 11:30

    用于EK-RA8D1 MIPI LCD顯示器的GUIX Hello World

    電子發燒友網站提供《用于EK-RA8D1 MIPI LCD顯示器的GUIX Hello World.pdf》資料免費下載
    發表于 02-20 09:48 ?0次下載
    用于EK-RA8D1 MIPI LCD顯示器的GUIX <b class='flag-5'>Hello</b> <b class='flag-5'>World</b>

    如何將HC-SR04連接到Arduino并編寫簡單程序來測量距離

    種流行的Arduino超聲波傳感器是HC-SR04。它廣泛用于非接觸式距離測量,通常用于機器人和自動化項目。本指南將向您展示如何將HC-SR04連接到Arduino并編寫
    的頭像 發表于 02-11 10:17 ?2401次閱讀
    如何將HC-SR04連接到Arduino并<b class='flag-5'>編寫</b><b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>簡單</b>的<b class='flag-5'>程序</b>來測量距離

    經典的PLC程序編寫套路

    對同一個控制要求,即使選用同一個機型的PLC,用不同設計方法所編寫程序,其結構也可能不同。盡管幾種程序都可以實現同
    發表于 01-15 10:13 ?559次閱讀
    經典的PLC<b class='flag-5'>程序</b><b class='flag-5'>編寫</b>套路
    主站蜘蛛池模板: 欧美日韩精品久久久免费观看 | 一级无毛片| 别插我B嗯啊视频免费| 蜜桃99影院| 2021年国产精品久久| 久久中文电影| 在线精品国精品国产不卡| 久草网国产自偷拍| 一二三四在线观看韩国| 精品国产高清自在线看| 一本道无码字幕在线看| 久久国产精品永久免费网站 | 网红主播 国产精品 开放90后| 草莓视频免费看| 软糯白嫩双性受h| 福利一区国产| 校花在公车上被内射好舒服| 国产亚洲欧洲日韩在线观看| 亚洲精品在线看| 久久久久久久网站| 2019在秋霞理论| 漂亮的保姆3中文版完整版| 大肥女ass樱桃| 午夜DV内射一区二区| 黑人 尺寸 强行害怕 痛哭| 在线成 人av影院| 欧美性暴力变态xxxx| 国产精品美女久久久久AV超清 | 台湾佬休闲中性娱乐网| 国内精品久久久久影院男同志| 一个人在线观看免费视频| 两性色午夜视频免费国产| 99热婷婷国产精品综合| 四虎影视库永久免费| 黑人巨茎vide抽搐| 777黄色片| 桃隐社区最新最快地址| 久久99精品久久久久久园产越南| 95国产精品人妻无码久| 色欲天天天综合网免费| 精品无码久久久久久久久|