創(chuàng)建并移植K10 BSP包的具體步驟和方法(二)
3. BSP包代碼的修改
在C:FreescaleFreescale_MQX_4_0mqxsourcepspcortex_m文件夾里的psp_cpudef.h文件中可以找到支持Kinetis K10/K20/K30/K40/K50/K60/K70等相關(guān)芯片的PSP宏定義,例如支持K10DN512的宏定義為:
#define PSP_CPU_MK10DN512Z (PSP_CPU_NUM(PSP_CPU_ARCH_ARM_CORTEX_M4, PSP_CPU_GROUP_KINETIS_K1X, 2))
同時(shí)在該文件中還可以找到所有Freescale指定PSP處理器支持包所支持內(nèi)核的宏定義,如ColdFire,PPC,Cortex-A5,Cortex-A8等。
在本文中,我們創(chuàng)建的是針對(duì)K10DN512的BSP開發(fā)包,所以需要用上述的宏定義,將user_config.h文件中的MQX_CPU定義
#define MQX_CPU PSP_CPU_MK60DN512Z
修改為:
#define MQX_CPU PSP_CPU_MK10DN512Z
此時(shí)點(diǎn)擊編譯按鈕會(huì)出現(xiàn)錯(cuò)誤提示,如下圖5所示。
圖5. 頭文件錯(cuò)誤
出現(xiàn)這個(gè)錯(cuò)誤是由于在C:FreescaleFreescale_MQX_4_0mqxsourcepspcortex_mkinetis.h中找不到頭文件MK10DZ10.h,需要從以下的IAR安裝目錄中尋找:
C:Program FilesIAR SystemsEmbedded Workbench 6.5armincFreescale
然后將該文件拷貝到C:FreescaleFreescale_MQX_4_0mqxsourcepspcortex_mcpu中進(jìn)行編譯。
編譯仍有錯(cuò)誤出現(xiàn),如下圖6所示。
這個(gè)錯(cuò)誤主要是由于移植使用的是K60的BSP包,因此里面含有以太網(wǎng)ENET部分和USB部分的代碼,而在K10芯片中是沒有這些功能模塊的,在IAR IDE Workspace工作臺(tái)環(huán)境下,需要將外圍I/O驅(qū)動(dòng)(Peripheral IO Drivers)中的ENET和USB等文件夾刪除,同時(shí)將K10DN512 BSP Files文件夾中的 init_usb.c和init_enet.c文件刪除。另外在K10DN512 BSP Files中,由于在MQX安裝目錄C:FreescaleFreescale_MQX_4_0mqxsourcebspK10DN512 文件下的init_gpio.c和bsp.h中初始化了ent和usb部分的,需要打開這兩個(gè)文件,找到_bsp_ent_io_init和bsp_usb_io_init的代碼部分,然后直接進(jìn)行刪除。此時(shí)再進(jìn)行編譯,則應(yīng)該沒有錯(cuò)誤出現(xiàn)了。
圖6以太網(wǎng)及USB相關(guān)的文件編譯錯(cuò)誤
下一步需要修改的,是系統(tǒng)的時(shí)鐘設(shè)置。針對(duì)K60DN512, MQX默認(rèn)的外部時(shí)鐘是50MHz。 對(duì)于K20系列MQX默認(rèn)的外部時(shí)鐘是8MHz,如果目標(biāo)板的時(shí)鐘和默認(rèn)的外部時(shí)鐘不一樣,則需要重新配置。例如,如果這里選擇25MHz的無源晶體作為外接時(shí)鐘,那么就需要修改bsp_cm.h中的時(shí)鐘設(shè)置,將CPU_XTAL_CLK_HZ的時(shí)鐘修改為25MHz
評(píng)論