十年專注單片機方案開發的方案公司英銳恩,分享Microchip TCPIP協議棧移植要點。英銳恩現提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。
在HardwareProfile.h里面要做5件事情:
/*** PART I. Hardware/Board name with correct MCU configuration ***/
/*** PART II: Corresponding MCU configuration ****/
/*** PART III: Clock interface between Board name and stack ***/
/*** PART IV: Specify hardware resource for board ***/
/*** PART V: Some Encapsolation for compiler ***/
2. 在MainDemo.c里面要做3件事情:
2.1 在LowISR中修改、增加中斷服務項目,注意Tick要保留用TMR0,串口轉發的例子保留用UART2。
//
// PIC18 Interrupt Service Routines
//
#pragma interruptlow LowISR
#pragma interrupt HighISR
2.2 在InitializeBoard();里面添加額外的硬件初始化代碼
// Initialize application specific hardware
2.3 在ProcessIO();調用的地方添加用戶程序入口。
3. 在TCPIPConfig.h里面選擇服務項目和設置網絡信息。
4. 應用層的東西可以參考自帶示例去實現,比如WEB、TCP Server。
需要交換的用戶數據,直接聲明成extern global就可以了。
5. 建議:
5.1 增加調試宏定義,必要的時候需要關閉編譯你自己的用戶代碼,驗證協議棧自己的功能。
5.2. 基本移植就是1-4,在HardwareProfile.h文件里面需要仔細處理那5個方面的修改。
一般講最好定義一個自己板子的宏,預留幾個能用的IO去匹配協議棧對LED的控制即可。
其他的硬件設置放到用戶自定義文件中,不要和協議?;祀s太多東西有利于調試。
結論:體積小、成本低,對IO、AD、串行協議轉換等應用比較有用;
直接修改IP驅動的入口之一是MACGetHeader()。
題外話:網絡協議需要大量的內存和位操作,高可靠性的產品需要考慮具備MMU或MPU的控制器。
(文源網絡,侵刪)