国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    3846

    瀏覽量

    85232
  • 函數
    +關注

    關注

    3

    文章

    4417

    瀏覽量

    67501
  • 模塊接口
    +關注

    關注

    0

    文章

    2

    瀏覽量

    5567

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于凌羽派的OpenHarmony北向應用開發:Hello World 示例應用

    本示例是基于 OpenHarmony 開發的第一個簡單應用,用于展示如何創建、構建和部署基本的應用程序。 環境配置如下所示: API:1
    發表于 02-25 11:25

    基于凌羽派的OpenHarmony北向應用開發:Hello World 示例應用

    本示例是基于OpenHarmony開發的第一個簡單應用,用于展示如何創建、構建和部署基本的應用程序。環境配置如下所示:API:18SDK
    的頭像 發表于 02-25 10:23 ?159次閱讀
    基于凌羽派的OpenHarmony北向應用開發:<b class='flag-5'>Hello</b> <b class='flag-5'>World</b> 示例應用

    ICU-X0201 Hello Chirp示例應用用戶指南

    DK-x0201開發套件.pdf 、簡介 Hello Chirp示例程序演示了如何使用Chirp SonicLib API和ICU-x0201傳感器驅動構建和運行簡單的超聲傳感應用
    的頭像 發表于 12-26 10:25 ?411次閱讀

    VS Code運行 pytest_hello_world.py

    VS Code運行 pytest_hello_world.py
    的頭像 發表于 11-24 00:33 ?587次閱讀

    根據書上教程在eclipse環境下hello_world程序編譯成功,但是燒寫報錯,是什么原因?

    根據書上教程在eclipse環境下hello_world程序編譯成功,但是燒寫報錯,請有理解的大神指點下。
    發表于 11-07 06:21

    ddr200t開發板運行hello world

    進入hello world目錄進行交叉編譯 下載驅動,板子和電腦連接后,驅動正常的時候,查看設備管理器發現增加了com4,數字可能不
    發表于 10-27 08:34

    【RA4M2-SENSOR】開箱、Hello World(串口+OLED)

    ,完成以下兩實驗: 串口打印 Hello World OLED 12864 顯示屏顯示 Hello World 【串口打印】 使用 FPS
    發表于 10-16 00:03

    【RA4E2開發板評測】開箱、Hello World(串口+OLED)

    ,完成以下兩實驗: 串口打印 Hello World OLED 12864 顯示屏顯示 Hello World 【串口打印】 使用 FPS
    發表于 10-13 21:33

    【RA-Eco-RA6M4開發板評測】開箱、Hello World(串口+OLED)

    文章使用 Keil 開發,完成以下兩實驗: 串口打印 Hello World OLED 12864 顯示屏顯示 Hello World
    發表于 07-19 04:09

    【Milk-V Duo S 開發板免費體驗】2 - 安裝編譯環境并測試Hello world!

    Hello, World! [root@milkv]~# ./helloworld Hello, World! 結論 至此已經配置應用程序
    發表于 07-07 21:18

    【潤開鴻HH-SCDAYU800A開發板試用體驗】Hello World

    \\\\\\\\toolchains Hello World 編寫一個應用程序 :最簡單
    發表于 07-01 00:52

    DevEco Studio 寫簡單的頁面

    簡單的頁面 說明: 為確保運行效果,本文及之后的文檔示例都將以使用DevEco Studio 4.1 Release版本為例。 我們在構建第一個應用
    發表于 04-24 07:36

    零基礎入門:如何在樹莓派上編寫和運行Python程序

    在這篇文章中,我將為你簡要介紹Python程序是什么、Python程序可以用來做什么,以及如何在RaspberryPi上編寫和運行
    的頭像 發表于 03-25 09:27 ?2032次閱讀
    零基礎入門:如何在樹莓派上<b class='flag-5'>編寫</b>和運行Python<b class='flag-5'>程序</b>?

    在mimxrt1170_evk調試hello_world出現硬件傳輸錯誤怎么解決?

    我按照視頻在 cm7 中調試hello_world示例,我的鏈接服務器正在運行, debug prove 的 FW 也是最新的。 但是我仍然收到這個錯誤。 16:status-poll 中的目標
    發表于 03-25 07:31

    加載示例圖像時,COM7的調試控制臺hello_world不顯示消息怎么解決?

    板是 mimxrt1180_evk。 我無法從板中找到 JP5。 使用示例映像進行測試時,調試控制臺(通過 Windows11 電腦中的 J53、COM7 連接hello_world不顯示任何消息。 但是 gdb 在源文件中顯示了我的簡單代碼更改。 請盡快發現,謝謝!
    發表于 03-25 07:01