中移OneOS開發板學習入門 (做為一個專業的點燈愛好者,學習任何開發板開始前都是先找好學習資料,然後在學習OneOS的內核部分,外設部分,系統組件等) OneOS OneOS是中國移動針對物聯網領域推出的輕量級操作系統,具有可裁剪、跨平臺、低功耗、高安全等特點,支持ARM Cortex-A和 Co ...
中移OneOS開發板學習入門
(做為一個專業的點燈愛好者,學習任何開發板開始前都是先找好學習資料,然後在學習OneOS的內核部分,外設部分,系統組件等)
OneOS
OneOS是中國移動針對物聯網領域推出的輕量級操作系統,具有可裁剪、跨平臺、低功耗、高安全等特點,支持ARM Cortex-A和 Cortex-M、MIPS、RISC-V等主流晶元架構,相容POSIX、CMSIS等標準介面,支持Javascript、MicroPython等高級語言開發模式,提供圖形化開發工具,能夠有效提升開發效率、降低開發成本,幫助用戶快速開發穩定可靠、安全易用的物聯網應用。
OneOS線上開發文檔
OneOS架構
OneOS總體架構採用分層設計,主體由驅動、內核、組件、安全框架組成。採用一個輕量級內核加多個系統組件的模式,加上海量硬體的適配支持,使OneOS具備極高的可伸縮性與易用性。操作系統整體架構如下圖:
內核
極簡的設計思路,在減少資源開銷的情況下兼具優秀的實時響應特征,支持多任務管理調度,提供豐富的IPC策略,如信號量、互斥量、消息隊列、郵箱等,提供了高效可靠的RTOS內核支撐。
驅動
提供豐富的BSP板級支撐,適配超千款MCU,支持ARM、RISC-V、MIPS、Xtensa、C-Sky等主流架構,通過抽象設計,將所有外設以設備方式進行管理,極大提升了應用開發的便利性。
組件
提供包括網路協議、雲平臺接入、遠程升級、文件系統、日誌系統、測試框架、調試工具等眾多通用服務能力,也包括高精度定位等專業應用領域的完整解決方案。由於採用了模塊化的設計,因此各個組件相互獨立,耦合性低,易於靈活裁剪。
安全管理框架
終端側基於信任根實現輕量級的主動檢測和可信度量,提供輕量級的密碼演算法庫及輕量級密鑰管理與密鑰協商機制,實現端到端安全通信。平臺側基於大數據態勢感知技術,幫助用戶建立端側安全畫像,根據應用場景制定不同的安全管理策略。
OneOS特點
靈活裁剪
搶占式的實時多任務RTOS內核,支持多任務處理、軟體定時器、信號量、互斥鎖、消息隊列、郵箱和實時調度等特性,RAM和ROM資源占用極小。可靈活裁剪,搭配豐富組件,適應不同客戶需求。
跨晶元平臺
應用程式可無縫移植,大幅提高軟體復用率。支持的主流晶元架構有:ARM Cortex-A和Cortex-M、MIPS、RISC-V等。支持幾乎所有的MCU和主流的NB-IOT、4G、WIFI、藍牙通信晶元。
組件豐富
提供豐富的組件功能,如互聯互通、端雲融合、遠程升級、室內外定位、低功耗控制等。同時提供開放的第三方組件管理工具,支持添加各類第三方組件,以便擴展系統功能。
易於開發
一站式開發工具OneOS Studio可用於對內核和組件的功能進行配置,支持組件自由裁剪,讓系統按需進行積木式構建,同時可幫助用戶跟蹤調試,快速定位問題。
低功耗設計
支持MCU和外圍設備的功耗管理,用戶可以根據業務場景選擇相應低功耗方案,系統會自動採用相應功耗控制策略,進行休眠和調頻調壓,有效降低設備整體功耗。
安全設計
針對物聯網設備資源受限、海量連接、網路異構等特點,參考等保2.0及《GB/T 36951-2018 信息安全技術 物聯網感知終端應用安全技術要求》等規範,在系統安全、通信安全、數據安全等方面提供多維度安全防護能力。
OpenCPU開發框架
支持通信SoC晶元OpenCPU開發模式,為開發者帶來屏蔽複雜通信晶元差異的高效開發方式,提供統一開發體驗。同時,在同樣的業務功能下,減少了設備額外MCU開銷和存儲器的使用,大幅降低設備成本。
許可協議
OneOS 代碼遵循 Apache 2.0 license 開源協議。
開發板推薦
萬耦創世
萬耦開發板,是中國移動推出的基於STM32,NXP等晶元的一個系列開發板,其由不同處理核心的核心板與萬耦底板組成。萬耦底板是通用的,核心板當前有STM32L475VGT6、STM32F401VET6與NXPLPC55S69三個型號,用戶可根據需求選擇不同的核心板。
萬耦天工入門
萬耦天工STM32F103
專為初學開發人員設計。其實就是正點原子的STM32F103開發板,學習使用教程可以參考正點原子的使用教程。
中國移動OneOS開發板開箱測評
2022年中移與正點原子推出OneOS學習教程。
OneOS入門內核系列課程
OneOS入門設備驅動系列課程
OneOS入門組件系列課程
萬耦啟物
萬耦啟物開發板主控晶元為(國產)靈動MM32F3277G8P,板載AHT20溫濕度感測器,板載ESP8266 WiFi模塊,便捷接入互聯網,板載USB-TTL介面,便捷與PC連接進行串口通訊。
專門為初學者設計,提供全面的基礎硬體能力,同時涵蓋手把手操作指導教程,方便開發者可以儘快瞭解OneOS系統的魅力。
硬體資源 介面豐富 上手簡單
介面類
1.1 板載USB-TTL介面:啟物開發板Debug UART輸出介面,硬體介面為USB Type-C母座,直連電腦設備識別為CH340串口,可作為5V供電介面。
1.2 MCU USB0 介面:MM32F3277 USB介面,支持USB2.0 Full-Speed(全速)。硬體介面為USB Type-C母座,可作為5V供電介面。
1.3 屏幕介面:此介面可使用逐飛科技的TFT1.8寸屏幕,也可使用114寸或2.0寸IPS屏幕,或者使用OLED屏幕,連接方式詳見後續介面講解。
1.4 攝像頭介面:此介面可接入攝像頭類光電感測器,相容逐飛科技的小鑽風硬體二值化攝像頭、總鑽風全局快門灰度攝像頭。
1.5 SWD調試介面:此介面連接MM32F3277晶元的SWD調試引腳,可直接使用逐飛科技的DAP調試下載器與ARM調試下載器進行調試下載。
1.6 JTAG 調試介面:標準的JTAG介面,可使用Jlink調試下載器直連進行調試下載。
1.7 RTC電池:紐扣電池卡扣,可使用紐扣電池為晶元RTC供電。
1.8 電源拓展介面:為了方便用戶接線測試使用,預留的3V3、5V與GND介面。
1.9 I0拓展介面:2.54mm間距的雙排針介面,引出了晶元上部分IO引腳,包含一些常用的功能例如ADC、PWM、UART 與 SPI等。
1.10 NRF2401介面:2.54mm間距的雙排座介面,可直接使用常見的SPI介面的NRF24L01模塊。
1.11 SD(TF)卡座:SD卡插槽,可使用SD(TF)卡。
模塊類
2.1 蜂鳴器:有源蜂鳴器,使用晶元的B5引腳進行控制,可以使用PWM方式調音。
2.2 AHT20 溫濕度感測器:開發板搭載的溫濕度感測器,使用IC方式驅動對應晶元B10/B11引腳。
2.3 ESP8266 WiFi模塊:開發板搭載的無線WiFi模塊,使用UART方式驅動對應晶元BO/B1引腳。
按鍵類
3.1 用戶按鍵:連接至MCU的D12/D140/15引腳,按下時對應引腳處於低電平。
3.2 功能按鍵/RST按鍵:連接至MCU的RST引腳,按下時晶元複位引腳電平拉低進入複位。
3.3 功能按鍵/BOOTO按鍵:連接至MCU的H3引腳,當MCU從複位狀態進入運行狀態時,若此按鍵處於按下狀態,則MCU進入ISP啟動模式。
跳線類
串口選擇開關:此跳線開關可選擇Debug UART的Tog信息從SWD調試介面輸出還是從板載USB-TTL介面輸出。
指示燈類
RGB指示燈:RGB燈珠,RED對應晶元A1引腳,GREEN對應晶元A2引腳,BLUE對應晶元A3引腳,可使用對應引腳的PWM或者IO方式驅動。
電源指示燈:主板上各3V3供電指示燈,正常黃色亮起為供電正常。
萬耦啟物開發板學習資料
MM32學習
靈動微電子成立於 2011 年,是中國本土通用 32 位 MCU 產品及解決方案供應商。
靈動微電子的 MCU 產品以 MM32 為標識,基於 Arm Cortex-M 系列內核,自主研發軟硬體和生態系統。
靈動MM32系列MCU手冊常式Pack包下載指南
靈動微電子MM32 MCU 使用分享 視頻教程
逐飛科技開源庫
萬耦啟物開發板是逐飛科技設計生產的一塊物聯網開發板。所以在學習使用時,可以尋找相關的開源資料
逐飛科技 MM32F327XG8P 開源庫
萬耦啟物開發板常式資料
開發板常式資料合集提取碼:8f9u
開發板支持MDK-Keil開發
啟物開發板資料提供了Keil的Pack包,使用Keil開發32位晶元,對於大多數開發者都有一定的基礎,能夠很快的上手。
工程模板
OneOS官方常式
/**
***********************************************************************************************************************
* Copyright (c) 2020, China Mobile Communications Group Co.,Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* @file main.c
*
* @brief User application entry
*
* @revision
* Date Author Notes
* 2020-02-20 OneOS Team First Version
***********************************************************************************************************************
*/
#include <board.h>
#include <timer/clocksource.h>
static void user_task(void *parameter)
{
int i = 0;
for (i = 0; i < led_table_size; i++)
{
os_pin_mode(led_table[i].pin, PIN_MODE_OUTPUT);
}
while (1)
{
for (i = 0; i < led_table_size; i++)
{
os_pin_write(led_table[i].pin, led_table[i].active_level);
os_task_msleep(200);
os_pin_write(led_table[i].pin, !led_table[i].active_level);
os_task_msleep(200);
}
}
}
int main(void)
{
os_task_t *task;
task = os_task_create("user", user_task, NULL, 1024, 3);
OS_ASSERT(task);
os_task_startup(task);
return 0;
}