Ⅰ 飛思卡爾Kinetis W系列晶元用什麼編譯器
目前支持Freescale KW系列晶元的開發環境有keil (5.0版本以上), IAR (7.0)以上的版本都有支持。
Freescale自己的工具CodeWarrior 不再支持。但在後續退出的kds(Freescale的免費開發工具)中也會支持,目前KDS 1.1的版本還不支持KW系列,在下一版本(預計今年年底會推出)中將會支持
Ⅱ 如何使用GNU GCC編譯MQX應用
1. 安裝MQX4.0,在飛思卡爾官網把MQX的安裝文件下載下來。
2. 安裝好之後會在安裝目錄下生成如下圖所示的子目錄。
build目錄:包含了飛思卡爾不同平台不同編譯器的相關庫的Makefile文件。具體內容如下列表示意圖所示:
build
+---common
| +---make ... shared Makefiles with global settings, variables and paths
+--- ... board-specific folder
| +---make ... folder contains mass-build Makefile for all libraries
| +---tools ... tool-specific global settings, variables and paths
| +---bsp ... BSP Library Makefile
| +---psp ... PSP Library Makefile
| +---mfs ... MFS Library Makefile
| +---rtcs ... RTCS Library Makefile
| +---shell ... Shell Library Makefile
| +---usbd ... USB Device Library Makefile
| +---usbh ... USB Host Library Makefile
+---
+---make
3. 安裝CodeWarrior Development Studio V10.5編譯器。在飛思卡爾官網把CW10.5的安裝文件下載下來。安裝CW10.5時,請注意安裝目錄名稱不要帶空格。
CW10.5的Cross_Tools目錄已經自帶了GNU GCC for ARM Cortex-M4內核的交叉編譯工具鏈。
4. 安裝MinGW(Minimalist GNU on Windows) GNU工具集,在Windows下GNU GCC需要使用make.exe和sed.exe等工具。
5. 上述軟體安裝完畢後,按照實際安裝情況,修改編譯MQX所需的交叉工具鏈的目錄。
1).修改全局宏定義腳本$MQX_DIR\build\common\make\global.mak
指定GNU 交叉工具鏈的安裝路徑TOOLCHAIN_ROOTDIR宏定義,如:
TOOLCHAIN_ROOTDIR = C:/Freescale/CW10_5
2).指定編譯某一硬體平台需要GNU GCC編譯器的具體安裝路徑。如需要編譯twrk60d00m這款Demo板,修改腳本文件$MQX\build\twrk60d100m\make\tools\cw10gcc.mak,指定AS,CC,CX,AR,LD等工具的可執行文件。
#------------------------------------------------------------
# toolchain settings
#------------------------------------------------------------
AS = $(TOOLCHAIN_ROOTDIR)/Cross_Tools/arm-none-eabi-gcc-4_7_3/bin/arm-none-eabi-gcc.exe
CC = $(TOOLCHAIN_ROOTDIR)/Cross_Tools/arm-none-eabi-gcc-4_7_3/bin/arm-none-eabi-gcc.exe
CX = $(TOOLCHAIN_ROOTDIR)/Cross_Tools/arm-none-eabi-gcc-4_7_3/bin/arm-none-eabi-gcc.exe
AR = $(TOOLCHAIN_ROOTDIR)/Cross_Tools/arm-none-eabi-gcc-4_7_3/bin/arm-none-eabi-ar.exe
LD = $(TOOLCHAIN_ROOTDIR)/Cross_Tools/arm-none-eabi-gcc-4_7_3/bin/arm-none-eabi-gcc.exe
6. 修改完畢上述腳本後,就可以開始使用GNU GCC編譯MQX。在windows命令窗口下進入需要編譯的目錄,如Tower K60的編譯目錄:$MQX\build\twrk60d100m\make。在命令行下輸入make指令:
C:\Freescale\Freescale_MQX_4_0\build\twrk60d100m\make>mingw32-make build TOOL=cw10gcc CONFIG=debug
這條make指令能夠將整個MQX進行編譯,並生成bsp.a,psp.a,shell.a,rtcs.a,usbd.a,usbh.a等庫文件。
7. MQX系統庫編譯完畢後,可以進行應用程序的編譯。在命令窗口進入需要編譯的應用程序目錄。如需要編譯hello常式代碼,進入$MQX\mqx\examples\hello\make目錄,在命令下輸入make命令:
C:\Freescale\Freescale_MQX_4_0\mqx\examples\hello\make>mingw32-make BOARD=twrk60d100m TOOL=cw10gcc CONFIG=debug LOAD=intflash build
GNU GCC將會編譯應用程序代碼,並與MQX的bsp.a,psp.a的庫文件鏈接,生成.elf格式的可以執行文件。
8. 下載調試.elf可執行文件。在CW10.5中New創建一個Bareboard Project工程,選擇需要使用的下載調試器,並且選定使用GNU GCC作為編譯器。在菜單Properties --> Run/Debug Setting中選擇需要下載的目標文件。然後通過菜單Run-->Debug下載調試程序。
Ⅲ 請問學x86匯編語言用什麼編譯器
編譯器自舉!搜索這個關鍵字
程序都是編譯器編譯的。這個是肯定的
至於第一款X語言編譯器是不是直接1010101010自己寫的那就不知道啦
一般開發編譯器的話。有兩條路選擇
1.利用yacc(或者其變種)&lex(詞法分析)-等工具自己生成語法模板
詞法語法都可以使用這些工具自己生成
然後自己編寫生成的中間碼和生成的機器碼就可以了
一般做編譯原理類似試驗都是如此的。許多編譯器也的確是這樣
2.自己寫詞法分析和語法分析。可以參考一些開源的編譯器
lcc-這個是ANSI C99標準的編譯器是開源的
或者nasm,watcom等編譯器到上不少開源的編譯器
總的來說。高級語言編譯器比較難寫
如果想快速寫出一個的話
可以採用第一種做法。利用工具生成語法詞法模板
先寫一個簡單的匯編編譯器比較簡單
開源的有nasm,jwasm(支持masm語法開源的編譯器)
fasm(這款編譯器是自舉的.就是自己可以編譯自己),
剩下的就是自己做好語言規則關鍵字map
引用高手的話。語言map做好了你的編譯器也做好一半了
剩下的都是機械性的工作了。
生成x86或者arm指令。
優化工作這個很難解釋.根據你所需要的做吧
畢竟可以做出一個無錯,又XX的編譯器已經很難得
你可以選擇使用現有的編譯器開發自己的編譯器
然後等到你的編譯器支持相當數量指令和成熟度的時候
使用自己的語法重新寫一遍編譯器.
這樣你就可以用自己的編譯器開發自己的編譯器了(是不是很邪惡?)
另外舉幾個例子
Delphi的編譯器是C++ Builder開發的。
而C++ Builder的IDE是Delphi開發的
C++ Builder的編譯器是C++ Builder開發的-這個就是編譯器自舉了。。Delphi和C++ Builder共享一個後端化優化器。
Delphi 早期的版本的編譯器是tasm直接編譯的。可見Anders的匯編功力多強悍(Anders也就是後來VJ++,C#,.NET工程的核心架構師.最關鍵的靈魂級人物)
VC++的編譯器是VC++開發的。很明顯這都說明了編譯器自舉
自己開發自己。如果一個編譯器可以做到自己編譯自己。那基本上就可以實現任何功能了。
關於編譯器開發的書籍可以看一下
龍書《編譯原理(第二版)》
虎書《現代編譯原理-C語言描述》
鯨書《高級編譯器設計與實現》
建議從鯨書看起。然後是龍書
再來是虎書--虎書裡面描述了許多現代編譯器(正如其名)技術
例如面向對象啦,優化,垃圾回收等等.
鯨書看完基本上就可以實現一個簡單的Tiny C編譯器了
然後在龍書鞏固,讀一下語言規范,自己看一些開源的匯編編譯器代碼
自己就可以嘗試做一個匯編語言編譯器了.等到技術提高了
在嘗試做一些高級語法識別,參考LCC代碼做一下ANSI C99的
C語言編譯器。再來就看你自己的興趣和領悟度拉
如果想支持C++的話就得要對編譯器做許多方便的研究
類似Java那種跨平台或者Ruby,Python等動態語言
虎書中也有描述。當然看自己功力了