用現(xiàn)代HAL簡化8051固件開發(fā)
在探索8051固件開發(fā)教程時,我注意到它們中的大多數(shù)都采用了老派的方法。這些資源通常假定在低級嵌入式系統(tǒng)和硬件特定知識方面有很強的背景,這使得初學(xué)者或來自高級環(huán)境的開發(fā)人員很難理解。
為了解決這個問題,我為8051微控制器家族創(chuàng)建了一個現(xiàn)代和簡化的固件開發(fā)環(huán)境。我的目標(biāo)是在不犧牲性能或靈活性的情況下,使8051固件開發(fā)盡可能簡單和易于訪問。這個環(huán)境包括一個定制的硬件抽象層(HAL),它簡化了編碼,并將現(xiàn)代嵌入式開發(fā)實踐帶入了經(jīng)典的8051體系結(jié)構(gòu)。
8051 HAL的主要特性
?易用性:用干凈、可讀的api抽象出特定于硬件的寄存器配置。
?模塊化設(shè)計:允許開發(fā)人員只使用他們需要的組件- gpio,定時器,UART等-用于較小的固件足跡。
?多任務(wù)支持:使用HAL內(nèi)置的簡單協(xié)作調(diào)度器并行運行多個任務(wù)。這為傳統(tǒng)的單線程微控制器增加了并發(fā)能力。
?跨平臺工具鏈兼容性:設(shè)計用于與開源的SDCC(小型設(shè)備C編譯器)一起工作,使得使用現(xiàn)代編輯器(如VS Code)構(gòu)建和flash固件變得容易。
?輕便便攜:在設(shè)計時考慮到最小的資源使用,適用于受限的8051設(shè)備,如AT89C51, AT89S52及其變體。
如何開始?
?安裝sdcc、avrdude和make:供Fedora用戶使用
?克隆存儲庫:下載本文附帶的存儲庫,或者使用。
?打開8051_HAL文件夾:您將發(fā)現(xiàn)如下的目錄結(jié)構(gòu)。
?運行。/Create_Prj.sh:在8051_HAL中打開Terminal并運行
?鍵入項目名稱:鍵入LED
?在vscode中打開項目文件夾,它應(yīng)該是這樣的:
?現(xiàn)在編譯項目:
?要Flash代碼運行:(確保USBasp連接到8051和您的計算機)。
讓LED閃爍
如果你已經(jīng)開始了解如何使用像ex GPIO這樣的HAL組件,請進入Blinky文件夾并在vscode中打開其自述文件。
?README將幫助您理解如何使用組件。
一些例子:
為什么這很重要
盡管8051年代久遠,但它仍然廣泛用于遺留系統(tǒng)、成本敏感型應(yīng)用程序和教育項目。然而,開發(fā)工作流程和工具經(jīng)常落后。在這種環(huán)境下:
?初學(xué)者可以編寫干凈、結(jié)構(gòu)化的C代碼,而不需要深入的硬件知識。
?高級開發(fā)人員可以快速創(chuàng)建原型并測試固件邏輯。
?團隊可以為基于8051的項目標(biāo)準(zhǔn)化他們的開發(fā)實踐。
本文編譯自hackster.io