編輯語:
晶片開放社群(OCC)面向開發者推出RISC-V系列内容,通過多角度、全方位解讀RISC-V,系統性梳理總結相關理論知識,建構RISC-V知識圖譜,促進開發者對RISC-V生态全貌的了解。
在前幾期内容中,我們為大家介紹了YoC基礎軟體平台及其五大元件對RISC-V生态開發的支援。RISC-V生态的成長與發展還需要更多開發者的參與,YoC基礎軟體平台也亟待更多開發者加入開發并開源。是以,本期内容我們将為大家具體介紹如何上傳元件到OCC進行開源。
# 修改曆史
- 更改product元件為産品元件
- 更新元件添加頁面為最新頁面
# 開源須知
開發者和廠商貢獻産品解決方案或元件,需要明确以下事項:
- 以郵件的方式明确平頭哥YoC管理者需要開源的元件群組件管理者資訊。
- 産品解決方案不放在OCC上,需要發郵件給平頭哥管理者進行審批, 通過後以通用元件的方式開源 。
- 明确元件代碼是否涉及GPL等協定,如果涉及GPL等協定,不接收該元件。但可通過文檔說明的方式,確定利用該元件做産品的開發者或廠商能找到元件管理者。
- 針對内部開發者貢獻的新元件和新解決方案,開發者自行走集團開源方案,通過後郵件通知平頭哥YoC管理者。
- 平頭哥YoC管理者負責把元件和解決方案推到GITEE或GITHUB官網。
注意:平頭哥YoC管理者郵箱為: [email protected], [email protected]
01 元件組成
所有元件名字不可重複,名字規範為C語言變量的命名規則,不可超過64位元組長度。原則上都采用小寫。
- chip元件
至少包括include, src, package.yaml,README.md
命名規則:xxxx_chip (xxxx為晶片名字/型号), 位于components下。
- board元件
至少包括include, src, config, package.yaml,README.md
命名規則:xxxx_[cpuX]_evb(xxxx為晶片名字/型号;在多核的情況下,X為序号,從0開始), 位于board下。
- drv元件(common元件類型)
命名規則:drv_[xxxx]_yyyy (xxxx為IP名字,比如wifi, yyyy為晶片名字/型号), 位于components下。
- solution元件
至少包括app, Makefile, SCconstruct, package.yaml,README.md
命名規則:一般能指明這是個solution即可。
- 如果是demo,一般命名為xxx_[cpuX]_demo,比如wifi_demo。在多核的情況下,X為序号,從0開始
- 如果是平台方案實作,一般命名為xxxx_[cpuX]_function, 比如sc5654_boot。在多核的情況下,X為序号,從0開始
- common元件
命名規則:唯一, 位于components下。
- 虛拟元件
虛拟元件本身沒有代碼實作,隻是用于把相關的元件歸類在一起。
至少包括 package.yaml,README.md
目前YoC裡支援的虛拟元件有:
- sdk_chip_xxxx
晶片SDK虛拟元件包括晶片驅動,基本核心,常用的功能CLI, KV等元件。開發者可以直接在此基礎之上進行二次開發。
- sys_ble
BLE子系統,包括藍牙協定棧和藍牙服務等功能
- sys_wifi
WiFi子系統,包括無線協定棧和WiFi服務等功能
- sys_voice
語音子系統,包括播放器,MIC, RECORD等功能
- sys_security
本機安全性授權包括密鑰管理、SSL協定棧,算法庫等功能
- sdk_app_xxxx
解決方案虛拟元件包括晶片所有的解決方案和DEMO
一般情況下,一個解決方案由晶片SDK虛拟元件、子系統以及第三方SDK組成。
02 元件開發
開發者可以利用劍池CDK和yoctools進行元件開發,通過下列方式進行安裝劍池CDK或yoctools
- 通過劍池CDK安裝包進行安裝
- sudo pip install yoctools
2.1 劍池CDK開發
2.1.1 擷取解決方案
打開劍池CDK進入主界面,選擇Project->New IoT Project根據提示, 選擇對應開發闆的解決方案。
2.1.2 擷取目标元件
單擊home工具圖示進入"show welcome page",輸入目标元件名字搜尋,找到元件後選擇下載下傳,添加完成後,在工程視窗package節點下可以看到添加的元件。
2.1.3 建立開發倉庫
開發者擷取解決方案或元件代碼後,可以根據自身的需求在代碼托管平台上建立元件開發倉庫,進行元件開發。
2.1.4 開發元件功能
開發者在開發過程中送出代碼到元件開發倉庫,直到元件功能完成。
2.1.5 貢獻釋出元件
開發者将元件貢獻合入YoC,需要按照以下章節3進行操作。
2.2 yoctools開發
2.2.1 擷取解決方案
根據已經釋出的解決方案版本,開發者可以根據以下指令擷取解決方案, 比如開發者想利用v7.4.0版本helloworld解決方案進行開發,可以通過以下指令擷取:
yoc init
yoc install helloworld -b v7.4.0
2.2.2 擷取目标元件
根據已經釋出的元件版本,開發者可以根據以下指令擷取目标元件, 比如開發者想利用v7.4.0版本kv解決方案進行開發,可以通過以下指令擷取:
yoc install kv -b v7.4.0
2.2.3 建立開發倉庫
2.2.4 開發元件功能
2.2.5 貢獻釋出元件
03 元件送出
開發者貢獻元件給YoC,需要根據新增元件和現有元件分别處理。
對于需要建立新元件倉庫,分為兩種情況:
- 送出元件開發者郵箱、元件功能描述等資訊給平頭哥管理者,由管理者進行統一建立GITEE元件倉庫。
- 可以自行建立元件GITEE倉庫,但需要将組建倉庫位址送出給平頭哥管理者進行倉庫管理。
為了滿足産品釋出需要,如果遇到YoC公共元件修改的情況,可以先建立元件分支,先進行釋出,釋出後需要群組件Owner進行讨論溝通,确認合入元件主幹的計劃。
3.1 新增元件
- 内部開發者向YoC倉庫管理者申請AONE元件新倉庫(預設建立倉庫包含master分支, 釋出分支需要元件管理者自行建立)。
- 外部開發者向YoC倉庫管理者申請GITEE元件新倉庫(預設建立倉庫包含master分支,釋出分支需要元件管理者自行建立)。
- 外部開發者向YoC倉庫管理者提供已經申請好的新倉庫位址(預設建立倉庫包含master分支,釋出分支需要元件管理者自行建立)。
開發者将元件代碼送出到新元件倉庫的master分支和DEV分支,然後将代碼上傳到master分支和dev分支,打上标簽進行釋出,标簽遵循vX.Y.Z版本規則,初始版本号元件管理者自己定義。
3.2 現有元件
- 内部開發者送出元件代碼到AONE現有元件倉庫開發分支上,元件管理者根據需要評估合入方式,測試通過後,直接打上标簽進行釋出。
- 外部開發者送出元件代碼到GITEE現有元件倉庫DEV分支上,元件管理者根據需要評估合入方式,測試通過後,打上标簽進行釋出。
04 元件測試
開發者送出元件代碼到元件倉庫,會觸發元件CI測試,根據新增元件和現有元件,元件CI測試用例處理不同。
元件CI系統在測試完成後會自動發郵件給元件管理者,元件管理者可以登入代碼托管元件倉庫檢視測試結果。
4.1 新增元件
- 内部開發者送出元件代碼到AONE的元件開發分支前,需要群組件測試管理者讨論新元件自動化測試用例,保證新組建送出到元件開發分支上會觸發CI元件自動化測試
- 外部開發者送出元件代碼到GITEE的元件開發分支
- 如果元件管理者是外部開發者,元件管理者自行保證元件功能測試。
- 如果元件管理者有平頭哥内部人員,需要群組件測試管理者讨論新元件自動化測試用例,保證新元件送出到元件開發分支上會觸發CI元件自動化測
4.2 現有元件
- 更新元件功能代碼
- 内部開發者送出元件到AONE的元件開發分支或新增分支,會觸發CI元件自動化測試。
- 外部開發者送出元件到GITEE的元件開發分支或新增分支,會觸發CI元件自動化測試。
- 擴充元件功能代碼
- 内部開發者送出元件代碼到AONE的元件分支或新增分支前,需要群組件測試管理者讨論擴充元件功能自動化測試用例,保證元件送出到元件開發分支上會觸發CI元件完整自動化測試
- 外部開發者送出元件代碼到GITEE的元件分支或新增分支,
- 如果元件管理者有平頭哥内部人員,需要群組件測試管理者讨論擴充元件功能自動化測試用例,保證元件送出到元件開發分支上會觸發CI元件完整自動化測試
05 元件合入
- 送出元件測試通過,則開發者通過pull request 請求合入元件倉庫開發分支,元件管理者決定何時釋出。具體pull request流程請參考 https://gitee.com/help/articles/4133
- 送出元件測試不通過,則元件管理者拒絕合入和取消請求,郵件通知開發者測試結果,要求修改後重新送出。
新元件合入元件倉庫後,需要通知倉庫管理者在manifest倉庫加入該新組建,確定外部能夠正确擷取。
06 元件釋出
6.1 通過劍池CDK釋出
注意:通過劍池CDK釋出的元件是以ZIP包的方式上傳到OCC上,并非上傳到元件倉庫。
6.1.1 添加common元件
- 步驟一 進入我的釋出
單擊home工具圖示進入"show welcome page",進入我的釋出,
- 步驟二 上傳common元件
點選右上角的"上傳本地元件"按鈕,選擇本地的需要釋出的common元件,上傳成功。
- 步驟三 檢視釋出common元件
點選左側的"元件資源",可以看到釋出的元件已在其中。
6.1.2 添加産品元件
- 步驟一 登入OCC賬戶
隻有具備企業資質認證的賬戶才能釋出産品元件,否則無權限釋出。
- 步驟二 進入我的釋出
- 步驟三 上傳産品元件
點選右上角的"上傳本地元件"按鈕,選擇本地的需要釋出的産品元件,上傳成功。
- 步驟四 檢視釋出産品元件
點選左側的"我的釋出"->我的方案,可以看到釋出的産品元件已在其中。
6.2 通過控制台釋出
6.2.1 添加Common元件
- 步驟一 登入OCC,進入OCC控制台
- 步驟二 點選左側元件管理菜單,點選右側新增按鈕
- 步驟三 點選選擇GITEE添加方式,依次填寫元件名稱和倉庫元件位址,最後确定即可
6.2.2 添加産品元件
- 步驟一 登入OCC,進入OCC控制台
- 步驟二 點選晶片管理,進入晶片管理頁面
- 步驟三 選擇産品,點選編輯按鈕,進入産品詳細頁
- 步驟四 選擇元件TAB,點選上傳元件
- 步驟五 點選選擇GITEE添加方式,依次填寫元件名稱和倉庫元件位址,最後确定即可
6.2.3 元件倉庫資訊同步
一旦元件的倉庫發生變動,比如新的版本釋出,新的分支建立,新的TAG添加等,OCC的元件管理服務不會主動去拉取元件倉庫資訊(原因是GITEE對元件的倉庫重新整理次數有日限制), 需要元件管理者人為的在OCC控制台的元件管理項對更新的元件進行重新整理。
07 元件倉庫消息設定
7.1 關注倉庫
點選右上角的Starred圖示來關注該倉庫。
7.2 消息設定
添加個人賬戶裡的郵箱設定填寫你的郵箱位址。
7.3 通知設定
在通知設定裡把郵箱通知的相關内容打上勾。具體參考
https://gitee.com/profile/notifications。
08 注意事項
分支或者TAG名稱和package.yaml中的version字段要比對。