簡介:
marlin固件發(fā)展至今已經形成了三個比較重大的版本:1.0版,1.1版,2.0版。
我接觸marlin固件已經有一段時間了,原來一直對于marlin固件的結構和應用平臺一直不是很理解:為什么marlin固件要做的這么臃腫(包含許多單片機平臺并包含許多機器結構),而且要用在arduino的8位單片機平臺?
- 對于第一個問題我從marlin源代碼頁面下的說明中找到了答案:保持兼容性和單一代碼庫對我們很重要,因為我們要確保功能和補丁得到盡可能多的測試和關注,并且所有平臺都始終受益于最新改進。如果要建立多套代碼維護便會變得異常不方便。(對于這個問題的產生的緣由可能是我一直想深入學習marlin固件的內部代碼機制,又苦于看不懂源碼產生的吧?。?。
- 對于第二個問題我想一直在使用arduino的人一定會深有感觸:Arduino建立的一個很完善的生態(tài)非常便利于開發(fā)。
最初marlin1.0,1.1固件主要應用在基于arduino的單片機上,主要工作在于修復bug添加新功能,工程結構不是很清晰。marlin1.0,1.1版本雖然已經成為了歷史,但還是很有學習的價值的。如果想深入研究marlin工作機制又沒有很深的C++基礎,marlin1.0版本的固件便是一個很不錯的選擇,雖然部分代碼也是用C++寫的,但大多數代碼都符合C語言寫代碼的思維習慣。
marlin2.0版本固件經歷了bug修復,已經有正式版發(fā)布了。官方對2.0版本的固件的介紹很到位:Marlin 2.0通過增加對更快的32位和基于ARM的板的支持,同時改善了對8位AVR板的支持,將這種流行的RepRap固件提升到了一個新的水平。
從代碼學習者的思維來看marlin2.0固件(for me):真的看不懂!我想看某一塊代碼的實現,各種跳轉理不清這塊代碼的思路。
從使用者的角度:太方便了,只需要簡單的配置便可以切換不同的開發(fā)板。
總而言之,marlin2.0固件代碼更抽象了結構更清晰了。大一統(tǒng)的固件雖會犧牲一些單片機的性能但既方便了開發(fā)者開發(fā)維護又方便了用戶配置使用,這點犧牲還是很值得的。
marlin2.0 工程結構:
marlin2.0版本通過platformIO IDE更方便使用,我們首先要了解platformIO IDE 這款新的開發(fā)環(huán)境:https://docs.platformio.org/en/latest/what-is-platformio.html
(將這篇文檔過一遍可以對platformIO有整體的認識了解,在后面配置開發(fā)板編譯下載等方面會有很大的幫助)
marlin2.0版本固件工程結構:(platformIO推薦的工程結構)
src文件夾內便是固件的主體內容:
Marlin 2.0引入了一個抽象層(HAL),以便可以在32位平臺上構建所有現有的高級代碼,同時仍保留完整的8位AVR兼容性。它屏蔽的底層硬件的差異使得marlin固件可以在不用修改底層配置的情況下支持各種類型的開發(fā)板,例如只需在Configuration.h文件中修改主板配置即可完成不同開發(fā)板之間的切換。(當然底層還需要有其他庫支持,不過不用擔心這些都已經有現成庫。)
pins文件夾存放了不同開發(fā)板的引腳配置。
core文件夾下的boards.h文件中存放了可選擇的開發(fā)板的類型。
后面如果想自己制作3D打印機開發(fā)板,針對你的硬件對于固件本身只需修改上述這3個位置即可(工程配置也需要適當的修改)
其他文件夾就類似于操作系統(tǒng)上的應用層,主要實現的便是具體的針對不同類型打印機的3D打印功能。
安裝簡介:
這里簡要介紹marlin的安裝,在后續(xù)的文章中會有詳細的配置、編譯、下載教程。要構建Marlin 2.0,您需要Arduino IDE 1.8.8或更高版本或PlatformIO。 詳細的建立安裝說明:
本文系轉載,版權歸原作者所有;旨在傳遞信息,不代表3D打印資源庫的觀點和立場。如需轉載請聯(lián)系原作者,如有任何疑問,請聯(lián)系kefu@3dzyk.cn。
|
|
你可能喜歡
南方科技大學開發(fā)高性能MRC-SMP材料 推進DL
硅膠3D打印的最新進展
創(chuàng)想三維K2 Plus測評:完美進化,值得稱贊
中科院:高精度3D打印高性能聚氨酯彈性體,
推薦課程
神奇的3D打印
SLA3D打印工藝全套培訓課程 - 軟件篇
3D打印月球燈視頻教程 包括完整貼圖建模流
nTopology從入門到精通全流程系統(tǒng)課程