(文章目錄) 前言 相信大多數人都有自己搭建博客網站的想法,本文就手把手一步一步的進行,最終結果類似如下樣式: 一、網站軟體的選擇 軟體選擇成熟而免費的WordPress,WordPress是一款能讓您建立出色網站、博客或應用程式的開源軟體。 可充分利用超過55,000個插件擴展WordPress, ...
EventOS Nano是什麼?
EventOS Nano是一個面向單片機、事件驅動的、分散式的、可跨平臺開發的嵌入式開發平臺。主要有兩大技術特色:事件驅動和超輕量
EventOS主要特性如下:
- 事件匯流排為核心組件,靈活易用,是進行線程(狀態機)間同步或者通信的主要手段,也是對EventOS分散式特性和跨平臺開發進行支持的唯一手段。事件支持廣播發送,或者發佈-訂閱機制兩種方式(二選一)
- 全局事件隊列,摒棄每個線程擁有自己的事件隊列的方式,只有一個全局事件隊列,極限對壓縮對RAM的占用
- 協作式內核,優點是不會產生資源競爭,非常可靠。
- 功能強大的軟體定時器,以時間事件的形式對軟定時器功能,進行功能強大的實現
- 極度輕量,便於嵌入其他系統,除事件匯流排外的所有特性(層次狀態機,平面狀態機,發佈-訂閱機制,事件橋等)均可裁剪,資源可低至ROM1.2Kb,RAM 172Byte,可以作為子系統,嵌入到其他軟體系統中去
- 未來會使用Event Bridge(事件橋)機制與EventOS打通事件匯流排,以便對EventOS的分散式特性進行支持。
- 重點關註三種應用場景:中小資源單片機,作為模塊向其他軟體系統的嵌入和可靠性要求較高的嵌入式場景。
如何理解事件?
嵌入式系統中,一切發生或者已發生的事情,只要導致了內部數據的變化,都可以被認為是事件
比如,按鍵的按下或者抬起,串口接收到一組數據,CAN匯流排接收到一個報文,某個通信協議連接失敗,定時500ms時間到,電池電量將到某個閾值之下,溫度感測器高於某個閾值,避障感測器檢測到障礙物,等等,都可以認為是事件。
是對系統中所發生的事,進行的高級抽象
運用事件機制,可以有效地對RTOS中存在的多種IPC(線程間通信)方式,進行整合。
EventOS Nano主張的編程思想
1.事件驅動與事件匯流排
EventOS Nano的核心是事件驅動和事件匯流排,事件機制與RTOS中的事件概念不同,它更像是windows編程中的消息。事件,可以認為是主題+不定長數據,通過事件,可以極大的解耦模塊間的耦合,增強軟體的可測試性,還可以進行跨平臺和分散式開發
2.防禦式編程
EventOS Nano使用了大量的斷言,對系統的運行過程和用戶對EventOS Nano使用大量的檢查。在實際的產品代碼中,依然打開斷言。這樣軟體將非常快速的收斂於穩定狀態
3.跨平臺開發
EventOS Nano提倡跨平臺開發。所謂跨平臺開發,就是在windows和Linux等便捷友好的開發環境里,完成絕大部分開發工作,包括編程、調試、運行和單元測試等工作,然後再目標平臺上進行最後的移植、調試和適配工作
4 .消除耦合
無論是廣播式的事件發送機制,還是發佈 -訂閱式的事件發送機制,都是為了消除軟體模塊間的耦合。
EventOS Nano的代碼結構
1.核心代碼
- eventos/eventos.c EventOS Nano狀態機框架的實現
- eventos/eventos.h 頭文件
- eventos/eventos_config.h 對EventOS Nano進行配置與裁剪
2.三方代碼庫
- RTT Segger Jlink所提供的日誌庫,依賴JLink硬體。
- unity 單元測試框架
3.常式代碼
- freertos對FreeRTOS的適配常式
- posix對符合POSIX標準的操作系統(如linux,MinGW等)的適配常式
- stm32f030對ARM Cortex-M0晶元的裸機運行(無RTOS)的常式
- stm32f103對ARM Cortex-M3晶元的裸機運行(無RTOS)的常式
- test對源碼進行的單元測試常式
- digital_watch電子錶常式,狀態機的典型應用。
4.tools
一些Python腳本和工具
參考資源: https://mp.weixin.qq.com/s/0BkOD8hKCRW4OxoOlpIfLw
倉庫地址:https://gitee.com/event-os/eventos.git