日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

電子工程師 ? 來(lái)源:HarmonyOS社區(qū) ? 作者:HarmonyOS社區(qū) ? 2020-11-11 09:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

編寫(xiě)一個(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)

開(kāi)發(fā)者編寫(xiě)業(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、編寫(xiě)業(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、編寫(xiě)用于將業(yè)務(wù)構(gòu)建成靜態(tài)庫(kù)的BUILD.gn文件

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

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

1.4、編寫(xiě)模塊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等。

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

子系統(tǒng):applications

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

作用:這個(gè)路徑下存放了hi3681編寫(xiě)的應(yīng)用程序代碼,例如我們剛剛寫(xiě)的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之類(lèi)的文件。其中最重要的是

vendorhisihi3861hi3861appwifiiot_appinitapp_io_init.c

vendorhisihi3861hi3861appwifiiot_appsrcapp_main.c

其中,app_io_init.c 是hi3681內(nèi)核啟動(dòng)后的io口相關(guān)設(shè)置,用戶(hù)需根據(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一開(kāi)始打印了 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ù)名。

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

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

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

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

責(zé)任編輯:lq

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

    關(guān)注

    117

    文章

    3849

    瀏覽量

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

    關(guān)注

    3

    文章

    4422

    瀏覽量

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

    關(guān)注

    0

    文章

    2

    瀏覽量

    5569

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    【瑞薩RA2L1入門(mén)學(xué)習(xí)】串口打印 Hello World

    篇完成了開(kāi)發(fā)板點(diǎn)燈,說(shuō)明:? 工程創(chuàng)建正常 ? GPIO 配置正常 ? 程序下載正常接下來(lái)繼續(xù)學(xué)習(xí)最常用的功能之:串口打印 本文記錄如何在 瑞薩 RA2L1 上實(shí)現(xiàn):printf(\"
    發(fā)表于 04-28 17:23

    如何將evkbmimxrt1170_hello_world_cm7.bin下載到 QSPI Flash?

    我修改了 hello_world.c 如下 PRINTF(“測(cè)試你好世界。 那么,是否在調(diào)試 USB 端口上呈現(xiàn)“TEST hello world”? 1. 使用哪個(gè) USB 端口下載.bin
    發(fā)表于 04-22 11:20

    在 MCUXpresso for VSCode for imx93EVK 中導(dǎo)入 Trustzone hello_world_ns 的示例應(yīng)用失敗,為什么?

    了 25.6.0 和最新的 25.9.0)、MCIMX93-EVK 板、trustzone_examples/hello_world_ns、獨(dú)立應(yīng)用程序、項(xiàng)目名稱(chēng)和位置以及工具鏈 Arm GNU 14.2.1
    發(fā)表于 04-20 06:31

    IMX93 測(cè)試hello_world應(yīng)用報(bào)錯(cuò),是什么原因?qū)е碌模?/a>

    我正在按照記錄測(cè)試hello_world應(yīng)用程序,但我收到錯(cuò)誤。是什么原因?
    發(fā)表于 04-02 06:06

    基于凌羽派的OpenHarmony北向應(yīng)用開(kāi)發(fā):Hello World 示例應(yīng)用

    本示例是基于 OpenHarmony 開(kāi)發(fā)的第一個(gè)簡(jiǎn)單應(yīng)用,用于展示如何創(chuàng)建、構(gòu)建和部署個(gè)基本的應(yīng)用程序。 環(huán)境配置如下所示: API:1
    發(fā)表于 02-25 11:25

    基于凌羽派的OpenHarmony北向應(yīng)用開(kāi)發(fā):Hello World 示例應(yīng)用

    本示例是基于OpenHarmony開(kāi)發(fā)的第一個(gè)簡(jiǎn)單應(yīng)用,用于展示如何創(chuàng)建、構(gòu)建和部署個(gè)基本的應(yīng)用程序。環(huán)境配置如下所示:API:18SDK
    的頭像 發(fā)表于 02-25 10:23 ?351次閱讀
    基于凌羽派的OpenHarmony北向應(yīng)用開(kāi)發(fā):<b class='flag-5'>Hello</b> <b class='flag-5'>World</b> 示例應(yīng)用

    ICU-X0201 Hello Chirp示例應(yīng)用用戶(hù)指南

    DK-x0201開(kāi)發(fā)套件.pdf 、簡(jiǎn)介 Hello Chirp示例程序演示了如何使用Chirp SonicLib API和ICU-x0201傳感器驅(qū)動(dòng)構(gòu)建和運(yùn)行簡(jiǎn)單的超聲傳感應(yīng)用
    的頭像 發(fā)表于 12-26 10:25 ?615次閱讀

    VS Code運(yùn)行 pytest_hello_world.py

    VS Code運(yùn)行 pytest_hello_world.py
    的頭像 發(fā)表于 11-24 00:33 ?793次閱讀

    【瑞薩RA6E2】開(kāi)箱、Hello World(串口+OLED)

    ,完成以下兩個(gè)實(shí)驗(yàn): 串口打印 Hello World OLED 12864 顯示屏顯示 Hello World 【串口打印】 使用 FPS
    發(fā)表于 11-09 07:49

    根據(jù)書(shū)上教程在eclipse環(huán)境下hello_world程序編譯成功,但是燒寫(xiě)報(bào)錯(cuò),是什么原因?

    根據(jù)書(shū)上教程在eclipse環(huán)境下hello_world程序編譯成功,但是燒寫(xiě)報(bào)錯(cuò),請(qǐng)有理解的大神指點(diǎn)下。
    發(fā)表于 11-07 06:21

    ddr200t開(kāi)發(fā)板運(yùn)行hello world

    進(jìn)入hello world目錄進(jìn)行交叉編譯 下載驅(qū)動(dòng),板子和電腦連接后,驅(qū)動(dòng)正常的時(shí)候,查看設(shè)備管理器發(fā)現(xiàn)增加了個(gè)com4,數(shù)字可能不
    發(fā)表于 10-27 08:34

    【RA4E2開(kāi)發(fā)板評(píng)測(cè)】開(kāi)箱、Hello World(串口+OLED)

    ,完成以下兩個(gè)實(shí)驗(yàn): 串口打印 Hello World OLED 12864 顯示屏顯示 Hello World 【串口打印】 使用 FPS
    發(fā)表于 10-13 21:33

    【RA-Eco-RA6M4開(kāi)發(fā)板評(píng)測(cè)】開(kāi)箱、Hello World(串口+OLED)

    文章使用 Keil 開(kāi)發(fā),完成以下兩個(gè)實(shí)驗(yàn): 串口打印 Hello World OLED 12864 顯示屏顯示 Hello World
    發(fā)表于 07-19 04:09

    【Milk-V Duo S 開(kāi)發(fā)板免費(fèi)體驗(yàn)】2 - 安裝編譯環(huán)境并測(cè)試Hello world!

    Hello, World! [root@milkv]~# ./helloworld Hello, World! 結(jié)論 至此已經(jīng)配置應(yīng)用程序
    發(fā)表于 07-07 21:18

    【潤(rùn)開(kāi)鴻HH-SCDAYU800A開(kāi)發(fā)板試用體驗(yàn)】Hello World

    \\\\\\\\toolchains Hello World 編寫(xiě)一個(gè)應(yīng)用程序 :最簡(jiǎn)單
    發(fā)表于 07-01 00:52
    喀什市| 旅游| 莱州市| 楚雄市| 龙山县| 龙胜| 蕲春县| 遂川县| 浦东新区| 阜宁县| 高州市| 无极县| 墨江| 海南省| 名山县| 金秀| 南溪县| 五家渠市| 扶绥县| 孟津县| 化州市| 通山县| 松原市| 临洮县| 遵化市| 卢龙县| 巴林左旗| 南投县| 达日县| 孝昌县| 武夷山市| 桐柏县| 恭城| 宁晋县| 满洲里市| 阳春市| 新昌县| 蒙阴县| 塔河县| 湘潭县| 崇礼县|