陳占標
泉州市天志智能科技有限公司,福建 泉州 362000
ARM Cortex-M4主要應用于傳感、決策、中斷驅(qū)動等領域,具有功耗低、成本低、性能高、擴展性好等特征[1]。但與C語言相比,基于ARM Cortex-M4的PLC結構化框架不夠直觀,編程難度較大,對基于ARM Cortex-M4的PLC結構化框架應用發(fā)展產(chǎn)生不利影響。對此,本文構建PLC結構化匯編框架模型,根據(jù)框架設計原則,設計具有可移植性,包括CAN模塊擴展站點分配功能和PID功能的框架,并對PLC框架進行測試分析,旨在為學習者有效學習及提升編程效率提供借鑒與參考。
PLC結構化匯編框架可應用于匯編編程,在具體編程時,可以應用硬件抽象層、軟件構件層、應用層三層邏輯架構[2],具體如圖1所示。
圖1 結構化匯編框架
硬件抽象層應用嵌入式系統(tǒng),該系統(tǒng)可以將硬件與軟件系統(tǒng)融合,有利于明確硬件與軟件之間的關系[3]。在具體應用中,硬件層應用于芯片上電后復位啟動與編譯鏈接中,可以對設備外設的硬件寄存器地址和異常進行自整定處理。
軟件構件層具有可重復性、規(guī)范性、嵌入性特征,是組織嵌入式系統(tǒng)的功能單位[4]。需要注意的是,應用構建是封裝而成的,所以在編程過程中,需要調(diào)用底層驅(qū)動構件。應用層包括中斷服務例程、用戶主程序等。
基于軟件工程理論的分析可知,保證結構的清晰性是PLC結構化匯編框架設計的基本點。在文件內(nèi)容安排方面,應保證其具有合理性、易修改性、可擴展性等特征[5]。為保證軟件開發(fā)效率與質(zhì)量,在設計PLC結構化匯編框架過程中,
應遵循以下幾點原則,即可復用、可維護、可移植等基本思想原則。
每款芯片都有其自身的初始化文件,為保證框架匯編的有效性,可以將這些芯片的初始文件組織在一起,避免在對某款芯片開發(fā)過程中,特意修改某一文件[6]。
PLC結構化匯編框架設計需要對芯片相關程序框架文件、軟件構件文件、主程序文件等進行匯編。為提升匯編效率,提升閱讀清晰度,需要將這些文件分類,并將分類號的文件組織放在統(tǒng)一的文件夾下,實現(xiàn)目錄結構的合理分類。
不同的開發(fā)環(huán)境需要不同的配置,在設計PLC結構化匯編框架時,需要將所有工程配置文件,如鏈接文件等,組織在一起,避免在同一開發(fā)環(huán)境下,進行重復配置,并提升不同環(huán)境下查找配置文件的便利性[7]。
在設計PLC結構化匯編框架時,應根據(jù)軟件商的分層思想,將軟件構件分為底層驅(qū)動構件、應用構件、高層軟件構件[8]。同時,在設計過程中,可以將不同層次的構件存放在不同文件夾中,保證文件的功能明確,結構清晰。另外,在制作構件過程中,應對構件的共性、特征進行分析,在提取構件屬性的基礎上,使構件移植到不同的環(huán)境中,最大程度避免源程文件的修改。
在編譯鏈接過程中,源程序?qū)a(chǎn)生機器碼文件,用戶可以通過下載該文件的方式,在目標板中運行,經(jīng)過重新編譯后,文件極有可能發(fā)生改變,這些新文件需要單獨存儲[9]。
PLC結構化匯編框架的技術參數(shù)如表1所示?;诩夹g參數(shù)分析,根據(jù)框架模型中的相應順序,對框架中的文件夾進行編號,為明確程序的運行情況,通常設置LED閃爍功能,加入了LED閃爍相關指示文件[10]。當主機功能不夠用的情況,增加了CAN擴展功能,當主機與擴展模塊通信正常時:主機處于STOP時,擴展的RUN燈間隔1.5s閃爍一次;當主機處于RUN時,擴展的RUN燈基本與主機閃爍一致;當主機與擴展模塊通信當通信中斷時:擴展的RUN燈熄滅,并關閉所有輸出。在此基礎上,添加了CAN模塊擴展站點分配功能(表2)和PID功能(功能選擇見表3)。
表1 PLC結構化匯編框架的技術參數(shù)
表2 CAN模塊擴展站點分配
表3 PID功能選擇說明
在框架設計過程中,需要注重分析工程文件夾的內(nèi)容情況,文件夾內(nèi)除基礎編程環(huán)境需要保留的文件夾外,添加編號的子文件夾的個數(shù)、名稱應固定[11]。同時,框架設計應保證框架能夠在不同的CPU、芯片與開發(fā)環(huán)境中移植,并對移植時修改的內(nèi)容進行說明。
整體而言,PLC結構化匯編要包含名為main.s的匯編主程序文件,同時要保證匯編程序具有簡潔性和清晰性。主程序文件main.s包括以下幾點。
(1)工程描述:工程名、版本、日期等。若在調(diào)試過程中有新的添加內(nèi)容,可以在原有基礎上進行補充,目的在于便于使用,且能夠提供備忘信息。
(2)總頭文件:對頭文件、宏定義(主程序文件中)等進行聲明[11]。
(3)主程序:本框架中,將主程序設計為初始化與主循環(huán)兩部分。其中,主循環(huán)代表的是程序工作循環(huán)。在實際運行中,可以根據(jù)實際需求進行設計,但程序段不宜過長,具體功能需要在調(diào)試后實現(xiàn)。
(4)內(nèi)部直接調(diào)用子程序:若存在不能單獨存RAM的子程序,可以存放在內(nèi)部直接調(diào)用子程序中[11]。若有多個子程序,需要單獨存在外部Flash,并進行獨立校驗。
(5)外部子程序:若外部子程序使用的是獨立存RAM的子程序,可以使用“.include”包含[12]。
(6)程序加密:下載程序時自動讀取ARM Cortex-M4芯片與外部Flash自帶的ID號,并且進行無序打散,從二進制轉換成十六進制,無序存放在ARM 芯片與Flash的某些位置,再次上電后,系統(tǒng)自動驗證該配套ID號。
首先,在開發(fā)環(huán)境中導入?yún)R編框架,創(chuàng)建需要測試的工程內(nèi)容,并調(diào)用GPIO構件,實現(xiàn)LED燈閃爍功能[12]。其次,根據(jù)上述主程序的設計方法編制主程序。最后,將測試工程編譯鏈接后,下載到目標板上,重新通電運行,能夠觀察到LED燈間隔閃爍,RS485、RS232、CAN通信正常,且運行穩(wěn)定。通過測試結果分析可知,PLC結構化匯編框架規(guī)范、有效,能夠為微處理器深層次的應用開發(fā)和匯編語言研究提供便利途徑。
本研究主要介紹了基于ARM Cortex-M4的PLC結構化匯編框架,設計了層次性框架模型,闡述了框架設計原則,并對設計進行詳細分析。通過框架測試,結果表明框架具有實用性,可以提升匯編程序的可移植性,并能夠降低相關人員學習基于ARM Cortex-M4-PLC結構化匯編程序的難度,具有現(xiàn)實應用價值。