女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

編寫一個(gè)簡(jiǎn)單的Hello world程序

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

一、編寫一個(gè)簡(jiǎn)單的Hello world程序

編寫一個(gè)Hello world程序比較簡(jiǎn)單,可以參考官網(wǎng):

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

本文在這里做下總結(jié)。

1.1、確定目錄結(jié)構(gòu)

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

1.2、編寫業(yè)務(wù)代碼

在hello_world.c中新建業(yè)務(wù)入口函數(shù)HelloWorld,并實(shí)現(xiàn)業(yè)務(wù)邏輯。并在代碼最下方,使用 HarmonyOS啟動(dòng)恢復(fù)模塊接口SYS_RUN()啟動(dòng)業(yè)務(wù)。(SYS_RUN定義在ohos_init.h文件中)

1.3、編寫用于將業(yè)務(wù)構(gòu)建成靜態(tài)庫的BUILD.gn文件

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

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

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

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

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

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

二、Hi3861相關(guān)代碼結(jié)構(gòu)

目前hi3861用的是liteos-m內(nèi)核,但是目前hi3681的liteos-m被芯片rom化了,固化在芯片內(nèi)部了。所以在harmonyOS代碼是找不到hi3861的內(nèi)核部分。但是這樣不妨礙我們?nèi)ダ砬録i3861的其他代碼結(jié)構(gòu)。hi3861平臺(tái)配置文件

buildliteplatformhi3861v100_liteos_riscvplatform.json

該文件描述了hi3681平臺(tái)相關(guān)的代碼路徑,例如application、startup等。

這里我列舉出來幾個(gè)比較重要的:

子系統(tǒng):applications

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

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

子系統(tǒng):iot_hardware

路徑:base/iot_hardware/frameworks/wifiiot_lite

作用:存放了 hi3681 芯片相關(guān)的驅(qū)動(dòng)、例如spi、gpio、uart等。

子系統(tǒng):vendor

路徑:vendor/hisi/hi3861/hi3861

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

vendorhisihi3861hi3861appwifiiot_appinitapp_io_init.c

vendorhisihi3861hi3861appwifiiot_appsrcapp_main.c

其中,app_io_init.c 是hi3681內(nèi)核啟動(dòng)后的io口相關(guān)設(shè)置,用戶需根據(jù)應(yīng)用場(chǎng)景,合理選擇各外設(shè)的IO復(fù)用配置。

app_main.c 是內(nèi)核啟動(dòng)進(jìn)入的應(yīng)用程序入口。

三、Hi3861啟動(dòng)流程

由于hi3681的liteos-m被芯片rom化了,固化在芯片內(nèi)部了。所以我們主要看內(nèi)核啟動(dòng)后的第一個(gè)入口函數(shù)。

代碼路徑:

app_main一開始打印了 SDK版本號(hào),最后一行會(huì)調(diào)用HOS_SystemInit(); 函數(shù)進(jìn)行鴻蒙系統(tǒng)的初始化。我們進(jìn)去看下初始化做了哪些動(dòng)作。

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

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

還記得我們前面寫的hello world應(yīng)用程序嗎?

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

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

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

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3824

    瀏覽量

    82440
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4371

    瀏覽量

    64221
  • 模塊接口
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5531

原文標(biāo)題:只要三步!連老師帶你初探Hi3861代碼結(jié)構(gòu)

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DevEco Studio 寫個(gè)簡(jiǎn)單的頁面

    個(gè)簡(jiǎn)單的頁面 說明: 為確保運(yùn)行效果,本文及之后的文檔示例都將以使用DevEco Studio 4.1 Release版本為例。 我們?cè)跇?gòu)建第一個(gè)應(yīng)用
    發(fā)表于 04-24 07:36

    零基礎(chǔ)入門:如何在樹莓派上編寫和運(yùn)行Python程序

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

    在mimxrt1170_evk調(diào)試hello_world出現(xiàn)硬件傳輸錯(cuò)誤怎么解決?

    我按照視頻在 cm7 中調(diào)試hello_world示例,我的鏈接服務(wù)器正在運(yùn)行, debug prove 的 FW 也是最新的。 但是我仍然收到這個(gè)錯(cuò)誤。 16:status-poll 中的目標(biāo)
    發(fā)表于 03-25 07:31

    加載示例圖像時(shí),COM7的調(diào)試控制臺(tái)hello_world不顯示消息怎么解決?

    板是 mimxrt1180_evk。 我無法從板中找到 JP5。 使用示例映像進(jìn)行測(cè)試時(shí),調(diào)試控制臺(tái)(通過 Windows11 電腦中的 J53、COM7 連接hello_world不顯示任何消息。 但是 gdb 在源文件中顯示了我的簡(jiǎn)單代碼更改。 請(qǐng)盡快發(fā)現(xiàn),謝謝!
    發(fā)表于 03-25 07:01

    用Labview寫個(gè)電子稱的485串口程序

    關(guān)鍵詞:Labview + 串口程序 232、485串口通訊是最常見的儀器儀表通訊方式之,本文詳細(xì)介紹,用Labview編寫個(gè)電子秤的
    的頭像 發(fā)表于 03-06 09:54 ?544次閱讀
    用Labview寫<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>電子稱的485串口<b class='flag-5'>程序</b>

    用MCUXPresso for VS Code插件 從0開始打造HelloWorld

    了~本期小編就帶著大家從0開始寫個(gè)自己的Hello World程序,達(dá)成心愿! 開始前,我們先看下我們都需要什么,打開
    的頭像 發(fā)表于 01-16 09:20 ?1157次閱讀
    用MCUXPresso for VS Code插件 從0開始打造HelloWorld

    使用MCUXpresso for VS Code插件開發(fā)Zephyr的hello world

    本期來到Zephyr實(shí)戰(zhàn)經(jīng)驗(yàn)演練,小編帶著大家起使用MCUXpresso for VS Code插件來開發(fā)個(gè)屬于Zephyr的hello wor
    的頭像 發(fā)表于 01-03 09:21 ?1131次閱讀
    使用MCUXpresso for VS Code插件開發(fā)Zephyr的<b class='flag-5'>hello</b> <b class='flag-5'>world</b>

    全志T113雙核異構(gòu)處理器的使用基于Tina Linux5.0——RTOS系統(tǒng)定制開發(fā)

    。 可以看到有新增的hello_world命令,控制臺(tái)輸入hello_world命令,控制臺(tái)輸出如下: hello,world! RTOS下一個(gè)
    發(fā)表于 11-22 09:36

    關(guān)于esp8266串行調(diào)試的問題求解

    我是 esp8266 固件編程的新手。我正在嘗試從編寫簡(jiǎn)單程序開始。 我正在使用帶有 esp-open-sdk 的 ubuntu linux。我可以編譯和刷新簡(jiǎn)單
    發(fā)表于 07-19 07:57

    如何在i2c中將hello world發(fā)送到LCD屏幕?

    有誰知道如何在 i2c 中告訴這個(gè)以將 hello world 發(fā)送到 LCD 屏幕?當(dāng)我查找我的 4BIT 引腳時(shí),我可以很好地做到這點(diǎn),但是當(dāng)使用 i2c 時(shí),我似乎在任何地方都找不到協(xié)議的任何細(xì)節(jié),每個(gè)人都只想談?wù)撎炷牡?/div>
    發(fā)表于 07-11 06:10

    編寫個(gè)簡(jiǎn)單的SSL應(yīng)用程序,用于向服務(wù)器發(fā)送HTTPS請(qǐng)求,SSL握手失敗的原因?

    編寫個(gè)簡(jiǎn)單的SSL應(yīng)用程序,用于向服務(wù)器發(fā)送HTTPS請(qǐng)求。在數(shù)千個(gè)請(qǐng)求之后,應(yīng)用
    發(fā)表于 07-10 08:05

    編譯IDF example/hello_world例程時(shí),編譯報(bào)錯(cuò)說找不到lwip inet.h頭文件,為什么?

    大家好,我在編譯IDF example/hello_world例程時(shí),編譯報(bào)錯(cuò)說找不到lwip inet.h頭文件,但是我到該路徑下發(fā)現(xiàn)了該頭文件,這是為什么?還有組件lwip并沒有源碼,該如何更新
    發(fā)表于 06-26 07:33

    esp32運(yùn)行make flash燒寫hello world遇到的疑問求解

    串口驅(qū)動(dòng)安裝正常,連接正常 在demo目錄里hello world程序下,運(yùn)行make all,編譯正常, 然后運(yùn)行 make flash 出現(xiàn)
    發(fā)表于 06-26 06:25

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

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

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

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