日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

入門簡單、輕量好用,原來嵌入式開發(fā)大神們都這樣玩(嵌入式開發(fā)入門教程)

入門簡單、輕量好用,原來嵌入式開發(fā)大神們都這樣玩(嵌入式開發(fā)入門教程)
入門簡單、輕量好用,原來嵌入式開發(fā)大神們都這樣玩(嵌入式開發(fā)入門教程)入門簡單、輕量好用,原來嵌入式開發(fā)大神們都這樣玩(嵌入式開發(fā)入門教程)

從現(xiàn)實生活來看,使用嵌入式的產(chǎn)品比比皆是。譬如常使用的手機、平板電腦、智能家居、智能汽車、物聯(lián)網(wǎng)以及航天航空設(shè)備等。可以說,嵌入式系統(tǒng)的市場前景是相當(dāng)巨大的。 尤其是當(dāng)前隨著物聯(lián)網(wǎng)上升為國家戰(zhàn)略后,造芯片成為各類科技企業(yè)發(fā)展必修課之后,作為芯片的底層技術(shù)————嵌入式系統(tǒng)也漸漸從后臺走到前臺

實際上,目前存在多種嵌入式系統(tǒng)的定義,但是從比較廣泛且官方的說法來看:

“嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對功能、可靠性、成 本、體積、功耗有嚴格要求的專用計算機系統(tǒng)?!?/span>

縱觀嵌入式系統(tǒng)的發(fā)展,至今已有30余年的歷史,但是這項系統(tǒng)并不只是包括為了解決特定問題而設(shè)計的硬件系統(tǒng),同時也有控制系統(tǒng)的軟件。從而,這對于嵌入式系統(tǒng)的開發(fā)人員而言,增添了新的挑戰(zhàn)。

首先對于嵌入式軟件的開發(fā)而言,主要的挑戰(zhàn)源自于嵌入式開發(fā)需要掌握底層「硬件」領(lǐng)域的知識,一旦硬件的更改將會對軟件開發(fā)帶來重大影響。

此外,對于嵌入式的開發(fā)者而言,搞嵌入式系統(tǒng)的入門門檻較高,畢竟擁有軟硬結(jié)合的能力,遠遠比單純掌握某種程序開發(fā)語言更為艱難。

雖然入門困難,但是目前越來越多的開發(fā)者主動將自己的嵌入式軟件開發(fā)開源出來了,分享給更多需要學(xué)習(xí)嵌入式的開發(fā)者們,從自己玩到大家一塊玩,既能讓更多的人使用開發(fā)者的開源軟件,了解學(xué)習(xí)并交流嵌入式開發(fā),從自己玩到大家一塊玩,同時還將軟件的價值最大化。

今天,我們就給大家介紹幾款入門簡單、輕量好用的嵌入式開源軟件開發(fā),讓大家共同學(xué)習(xí)、交流,一起豐富嵌入式開發(fā)的生態(tài)環(huán)境。


01 eventos-nano

開源許可證: MIT

項目作者: EventOS( EventOS 是一個 RTOS 項目)

項目地址: eventos-nano

項目地址: https://gitee.com/event-os/eventos-nano

推薦原因: eventos-nano 是一個企業(yè)級的嵌入式開發(fā)框架。之所以叫 Nano ,是因為它真的非常輕量。最低占用 ROM 1.5KB,RAM 172 字節(jié)。核心技術(shù)是事件總線,支持 Reactor 和狀態(tài)機兩種模式,協(xié)作式內(nèi)核,極度可靠??缮疃炔眉?,移植方便。

項目啟動代碼: 除源碼外,只需要實現(xiàn)三個代碼,就可以使用EventOS Nano來編寫程序。

1. main.c main 函數(shù),初始化和啟動 EventOS Nano 。

/* include ------------------------------------------------------------------ */#include "eventos.h" // EventOS Nano頭文件#include "event_def.h" // 事件主題的枚舉#include "eos_led.h" // LED燈閃爍狀態(tài)機/* define ------------------------------------------------------------------- */static eos_u32_t eos_sub_table[Event_Max]; // 訂閱表數(shù)據(jù)空間static eos_u8_t eos_heap_memory[1024]; // 事件池空間/* main function ------------------------------------------------------------ */int main(void){ // EventOS Nano的初始化 eos_init(); // EventOS初始化 eos_sub_init(eos_sub_table); // 訂閱表初始化 eos_event_pool_init(eos_heap_memory, 1024); // 事件池初始化 // 狀態(tài)機模塊的初始化 eos_led_init(); // LED狀態(tài)機初始化 // 啟動EventOS Nano。 eos_run(); // EventOS啟動并運行 return 0;}

2. eos_port.c 如 EventOS 在特定平臺上的接口實現(xiàn),也就是 EventOS Nano 移植的相關(guān)代碼。

可前往在《 UM-02-002 EventOS Nano 移植文檔》查看詳細說明。

3. .ceos_led.c LED 的閃爍狀態(tài)機。LED燈閃爍,就是單片機界的 Hello World 。

/* include ------------------------------------------------------------------ */#include "eos_led.h" // 模塊頭文件#include "eventos.h" // EventOS頭文件#include "event_def.h" // 事件定義頭文件#include <stdio.h> // 標(biāo)準輸入輸出庫/* data structure ----------------------------------------------------------- */typedef struct eos_led_tag { // LED類 eos_sm_t super; eos_bool_t status;} eos_led_t;static eos_led_t led; // led對象,單例模式/* static state function ---------------------------------------------------- */// 初始狀態(tài)static eos_ret_t state_init(eos_led_t * const me, eos_event_t const * const e);// Led的ON狀態(tài)static eos_ret_t state_on(eos_led_t * const me, eos_event_t const * const e);// Led的Off狀態(tài)static eos_ret_t state_off(eos_led_t * const me, eos_event_t const * const e);/* api ---------------------------------------------------- */void eos_led_init(void){ static eos_u32_t queue[32]; // 事件隊列 eos_sm_init(&led.super, 1, queue, 32); // 狀態(tài)機初始化 // 狀態(tài)機啟動,以state_init作為初始狀態(tài)。 eos_sm_start(&led.super, EOS_STATE_CAST(state_init)); led.status = 0;}/* static state function ---------------------------------------------------- */static eos_ret_t state_init(eos_led_t * const me, eos_event_t const * const e){ // 訂閱事件Event_Time_500ms EOS_EVENT_SUB(Event_Time_500ms); // 使事件Event_Time_500ms,每隔500ms就被發(fā)送一次。 eos_event_pub_period(Event_Time_500ms, 500); return EOS_TRAN(state_off);}static eos_ret_t state_on(eos_led_t * const me, eos_event_t const * const e){ switch (e->topic) { case Event_Enter: // 狀態(tài)state_on的進入事件 printf("State On!n"); me->status = 1; return EOS_Ret_Handled; case Event_Time_500ms: // 收到Event_Time_500ms,跳轉(zhuǎn)到state_off return EOS_TRAN(state_off); default: return EOS_SUPER(eos_state_top); }}static eos_ret_t state_off(eos_led_t * const me, eos_event_t const * const e){ switch (e->topic) { case Event_Enter: // 狀態(tài)state_on的進入事件 printf("State Off!n"); me->status = 0; return EOS_Ret_Handled; case Event_Time_500ms: // 收到Event_Time_500ms,跳轉(zhuǎn)到state_on return EOS_TRAN(state_on); default: return EOS_SUPER(eos_state_top); }}

02 Klite

開源許可證: MIT

項目作者: jiangxiaogang

項目地址: https://gitee.com/kerndev/klite

項目簡介: KLite 的定位是一款入門級的嵌入式實時操作系統(tǒng)內(nèi)核,以簡潔易用為設(shè)計目標(biāo),旨在降低嵌入式 RTOS 的入門難度。

項目操作準備:

//只需要包含這一個頭文件#include "kernel.h"//用于初始化應(yīng)用程序的線程void init(void *arg){ //在這里完成外設(shè)和驅(qū)動初始化 //并創(chuàng)建更多線程實現(xiàn)不同的功能 //thread_create(...)}//空閑線程,只需調(diào)用kernel_idle即可void idle(void *arg){ kernel_idle();}//C語言程序入口void main(void){ static uint8_t heap[HEAP_SIZE]; /* 定義堆內(nèi)存 */ kernel_init(heap, sizeof(heap)); /* 系統(tǒng)初始化 */ thread_create(idle, 0, 0); /* 創(chuàng)建idle線程 */ thread_create(init, 0, 0); /* 創(chuàng)建init線程 */ kernel_start(); /* 啟動系統(tǒng) */}

03 GuiLite

開源許可證: Apache-2.0

項目作者: idea4good

項目地址: https://gitee.com/idea4good/GuiLite

推薦原因: GuiLite 是一款能運行在“ Docker ”上的輕量嵌入式UI框架,僅 4 千行 C 代碼, 0 依賴,單一頭文件庫( GuiLite.h ),單片機上也能流暢運行。

項目圖層管理:

入門簡單、輕量好用,原來嵌入式開發(fā)大神們都這樣玩(嵌入式開發(fā)入門教程)入門簡單、輕量好用,原來嵌入式開發(fā)大神們都這樣玩(嵌入式開發(fā)入門教程)

04 python-simple-http-server

開源許可證: MIT

項目作者: keijack

項目地址: https://gitee.com/keijack/python-simple-http-server

推薦原因: python-simple-http-server 是一個超輕量級的 HTTP Server,支持嵌入到 WSGI 標(biāo)準中。

如何啟動服務(wù)器:

import simple_http_server.server as server# 如果你的控制器代碼(處理請求的函數(shù))放在別的文件中,那么在你的 main.py 中,你必須將他都 import 進來。import my_test_ctrldef main(*args): # 除了 import 外,還可以通過 scan 方法批量加載 controller 文件。 server.scan("my_ctr_pkg", r".*controller.*") server.start()if __name__ == "__main__": main()

05 xboot

開源許可證: MIT

項目作者: xboot

項目地址: https://gitee.com/xboot/xboot

推薦原因: xboot 是一款功能強大、可移植性強、代碼復(fù)用率高的嵌入式系統(tǒng) bootloader ,只需編寫一次,即可在任何地方運行。

項目演示:

入門簡單、輕量好用,原來嵌入式開發(fā)大神們都這樣玩(嵌入式開發(fā)入門教程)

06 nutzboot

開源許可證: Apache-2.0

項目作者: Nutz

項目地址: https://gitee.com/nutz/nutzboot

推薦原因: nutzboot 是一款開放的企業(yè)級微服務(wù)框架,提供自動配置,嵌入式web服務(wù)。

項目演示:

入門簡單、輕量好用,原來嵌入式開發(fā)大神們都這樣玩(嵌入式開發(fā)入門教程)

入門簡單、輕量好用,原來嵌入式開發(fā)大神們都這樣玩(嵌入式開發(fā)入門教程)

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部
冕宁县| 荔波县| 瑞丽市| 大方县| 威海市| 中江县| 商河县| 吉林市| 会泽县| 曲松县| 商城县| 阿城市| 桃源县| 新田县| 阜康市| 辛集市| 平遥县| 福州市| 永春县| 南皮县| 筠连县| 肇庆市| 泾源县| 普兰店市| 政和县| 西平县| 济阳县| 鸡东县| 年辖:市辖区| 边坝县| 海口市| 三门县| 延寿县| 金堂县| 宁乡县| 渭南市| 沧州市| 柏乡县| 和田市| 莫力| 临潭县|