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

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

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

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

“嵌入式系統是以應用為中心,以計算機技術為基礎,并且軟硬件可裁剪,適用于應用系統對功能、可靠性、成 本、體積、功耗有嚴格要求的專用計算機系統。”

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

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

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

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

今天,我們就給大家介紹幾款入門簡單、輕量好用的嵌入式開源軟件開發,讓大家共同學習、交流,一起豐富嵌入式開發的生態環境。


01 eventos-nano

開源許可證: MIT

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

項目地址: eventos-nano

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

推薦原因: eventos-nano 是一個企業級的嵌入式開發框架。之所以叫 Nano ,是因為它真的非常輕量。最低占用 ROM 1.5KB,RAM 172 字節。核心技術是事件總線,支持 Reactor 和狀態機兩種模式,協作式內核,極度可靠。可深度裁剪,移植方便。

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

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

/* include ------------------------------------------------------------------ */#include "eventos.h" // EventOS Nano頭文件#include "event_def.h" // 事件主題的枚舉#include "eos_led.h" // LED燈閃爍狀態機/* define ------------------------------------------------------------------- */static eos_u32_t eos_sub_table[Event_Max]; // 訂閱表數據空間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); // 事件池初始化 // 狀態機模塊的初始化 eos_led_init(); // LED狀態機初始化 // 啟動EventOS Nano。 eos_run(); // EventOS啟動并運行 return 0;}

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

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

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

/* include ------------------------------------------------------------------ */#include "eos_led.h" // 模塊頭文件#include "eventos.h" // EventOS頭文件#include "event_def.h" // 事件定義頭文件#include <stdio.h> // 標準輸入輸出庫/* 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 ---------------------------------------------------- */// 初始狀態static eos_ret_t state_init(eos_led_t * const me, eos_event_t const * const e);// Led的ON狀態static eos_ret_t state_on(eos_led_t * const me, eos_event_t const * const e);// Led的Off狀態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); // 狀態機初始化 // 狀態機啟動,以state_init作為初始狀態。 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就被發送一次。 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: // 狀態state_on的進入事件 printf("State On!n"); me->status = 1; return EOS_Ret_Handled; case Event_Time_500ms: // 收到Event_Time_500ms,跳轉到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: // 狀態state_on的進入事件 printf("State Off!n"); me->status = 0; return EOS_Ret_Handled; case Event_Time_500ms: // 收到Event_Time_500ms,跳轉到state_on return EOS_TRAN(state_on); default: return EOS_SUPER(eos_state_top); }}

02 Klite

開源許可證: MIT

項目作者: jiangxiaogang

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

項目簡介: KLite 的定位是一款入門級的嵌入式實時操作系統內核,以簡潔易用為設計目標,旨在降低嵌入式 RTOS 的入門難度。

項目操作準備:

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

03 GuiLite

開源許可證: Apache-2.0

項目作者: idea4good

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

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

項目圖層管理:

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

04 python-simple-http-server

開源許可證: MIT

項目作者: keijack

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

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

如何啟動服務器:

import simple_http_server.server as server# 如果你的控制器代碼(處理請求的函數)放在別的文件中,那么在你的 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 是一款功能強大、可移植性強、代碼復用率高的嵌入式系統 bootloader ,只需編寫一次,即可在任何地方運行。

項目演示:

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

06 nutzboot

開源許可證: Apache-2.0

項目作者: Nutz

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

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

項目演示:

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

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

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

(0)
上一篇 2023年3月18日 上午9:47
下一篇 2023年3月18日 上午10:03

相關推薦

  • 研究生科研項目排名

    研究生科研項目排名 隨著高等教育的日益普及,研究生教育也越來越受到關注。在研究生教育中,科研項目是一個非常重要的方面。本文將介紹一些當前比較熱門的研究生科研項目,并對其進行排名。 …

    科研百科 2025年4月12日
    2
  • 秦皇島市科技局科研項目申請秦皇島市科技局科研項目申請

    秦皇島市科技局科研項目申請 隨著科技的不斷發展,人們對于科學研究的需求也越來越高。秦皇島市科技局一直致力于推動科技創新,鼓勵科學家和研究人員開展深入的研究。現在,我們特別向您介紹一…

    科研百科 2024年9月10日
    1
  • 科研項目包括課題

    科研項目包括課題 科研項目包括課題是一種常見的做法,因為這樣可以讓科研項目更加具體,明確,并且更容易完成。科研項目的課題通常是指科研項目的具體方向,也就是科研項目將研究的方向。 例…

    科研百科 2025年2月28日
    8
  • 口袋閱怎么打開usb調試

    口袋閱是一款流行的電子書閱讀器,支持多種格式電子書的存儲和閱讀,同時也支持在線閱讀。但是,如果您想在手機上安裝第三方應用程序,比如電子書閱讀器應用程序,就需要打開USB調試功能。 …

    科研百科 2024年10月8日
    22
  • 財政項目申報管理系統

    財政項目申報管理系統:助力財政管理現代化 隨著數字化時代的到來,財政管理也逐漸走向現代化。財政項目申報管理系統是一種能夠有效地管理財政項目申報、審批、實施和績效評估的軟件系統。本文…

    科研百科 2024年12月17日
    6
  • 化工項目管理系統

    化工項目管理系統:高效管理化工項目的關鍵 隨著化工行業的迅速發展,化工項目的數量也在不斷增加。這些項目通常需要耗費大量的時間和精力,因此,建立一個高效的化工項目管理系統至關重要。本…

    科研百科 2024年12月11日
    4
  • 科研項目中的貢獻

    在科研項目中的貢獻 科研項目是科學家們不斷探索和創新的領域,他們通過不斷地實驗和思考,提出了許多新的理論和方法,為科學研究做出了杰出的貢獻。在這些研究中,個人的貢獻往往至關重要,他…

    科研百科 2024年12月3日
    34
  • 地鐵項目實驗管理系統

    地鐵項目實驗管理系統 隨著城市交通的不斷發展,地鐵項目已經成為了城市交通的重要工具之一。在地鐵項目中,實驗管理系統的成功與否將直接影響到項目的進展和產品的質量。因此,建立一套高效的…

    科研百科 2024年12月17日
    10
  • 優秀的項目經理,必須具備這兩項能力,你滿足了嗎?(一個合格的項目經理需具備的能力)

      項目經理是項目的負責人,項目出現任何問題,項目經理都要負責。成為一個優秀的項目經理必須具備一定的工作經驗,這樣才有益于自身和建筑項目的成長。阿筑以為,優秀的項目經理需要統籌協調…

    2022年7月6日
    571
  • 高校科研項目密級探討

    高校科研項目密級探討 隨著科技的不斷發展,高校科研項目也逐漸成為了公眾關注的焦點。然而,對于一些 sensitive or confidential projects,保護它們的安…

    科研百科 2025年3月18日
    2
久久久久无码国产精品一区| 久久国产精品99精品国产| 最近最新中文字幕2018| 免费看黄色毛片| 狠狠躁夜夜人人爽天96| 免费人成视频在线观看视频| 污网站在线免费看| 亚洲精品高清国产麻豆专区| 欧美性大战久久久久久片段| 亚洲成a人片在线观| 欧美视频久久久| 亚洲欧美日韩成人一区在线| 欧美视频在线观看网站| 亚洲熟女乱色一区二区三区| 欧美一级片免费在线观看| 亚洲中字慕日产2020| 日本高清黄色片| 亚洲av无码乱码在线观看| 欧美一级高清免费a| 亚洲中久无码永久在线观看同| 日韩一级电影在线观看| 久久久青草青青国产亚洲免观| 成人Av无码一区二区三区| 久久国产精品久久久久久 | 久久精品免费全国观看国产| 无码无套少妇毛多18pxxxx| 久久91综合国产91久久精品| 扶着大肚子从后面进| 中文亚洲成a人片在线观看| 性高湖久久久久久久久| 一区二区三区欧美日韩| 天海翼视频在线| 一级做a爰片久久毛片16| 图片区日韩欧美亚洲| 91蝌蚪在线播放| 国产成人在线网站| 麻豆www传媒| 国产欧美日韩精品a在线观看| 69视频免费观看l| 国产精品一在线观看| 草莓视频国产在线观看|