導航:首頁 > 源碼編譯 > 嵌入式編譯器教程

嵌入式編譯器教程

發布時間:2025-02-05 20:45:17

⑴ 如何搭建嵌入式開發的硬體環境

前言

首先,這個教程在僅使用附帶的光碟鏡像文件里的資料的情況下,所搭建的嵌入式 ARM 開發環境可以滿足 ARM 核為 ARM920T 及 CORTEX-A8 的嵌入式開發需求。

其次,搭建針對處理器為 ARM920T 的開發環境步驟如下:

WINDOWS 系統:

1、 用 WINRAR 或 7zip 打開鏡像文件 linux-dev.iso,將/WIN32/Daemon_Tools_4.46.1.328.exe 拖出來,

安裝後運行;

2、 使用 Daemon 載入鏡像文件 Linux-dev.iso 後,找到並雙擊/vmplayer/VMware-player-5.0.1-894247.exe 運行,安裝完成;

3、 將/VMware-linux-tools.iso 復制到任何地方,譬如 D:\Virtual Machines\ 文件夾下;4、 將文件夾/Ubuntu 復制到電腦的任何地方,譬如 D:\Virtual Machines\ 文件夾下;

5、 打開 VMware Player,這是一個免費的軟體,所以不需考慮不能使用的情況,更不需破解。效果圖如下:

嵌入式開發環境的搭建

點擊」Open a Virtual Machine」,找到剛才復制的 Ubuntu 文件夾,選中 Ubuntu.vmx 這個文件:

嵌入式開發環境的搭建

後點擊打開;

6、 點擊」Edit virtual machine settings」,這里需要注意的是,若你的電腦 CPU 是單核的,需將」Processors」由 2 設置為 1,否則,不能運行。選擇」CD/DVD (IDE)」,之後點擊右邊的」Browse…」,找到並選擇剛才復制的 VMware-linux-tools.iso,之後點擊」Options」進入另一個設置界面;

7、 選擇第三個」Shared Folders」,在右邊將其設置為」Always enabled」,再點擊下面的」Add…」,選擇一個在硬碟上新建的空文件夾,譬如 D:\Virtual Machines\shared 文件夾,點擊」Next》」,之後點擊」Enable this share」,最後在設置主界面點擊」OK」完成設置;

8、 將虛擬光碟機載入的光碟中 Linux 文件夾中的所有文件都復制到上一步新建的空文件夾,譬如

D:\Virtual Machines\shared 文件夾下;

9、 在 VMware Player 下點擊圖標 以運行虛擬機 Linux,啟動後可以看到桌面上有一個光碟的圖標;

10、 在 Linux 桌面右鍵後選擇」Open in terminal」,之後切換到/tmp 目錄:cd /tmp ;11、 執行命令 tar zxf /media/cdrom0/VMwareTools-9.2.2-893683.tar.gz ,等待約一分鍾後運行完畢;

12、 切換目錄:cd 。/vmware-tools-distrib/ ;

13、 執行命令:sudo 。/vmare-install.pl ,用戶」user」的密碼為 redeem2012 ;

14、 下面出現很多問題,[yes]或[no],那麼就可以一直點擊鍵盤 ENTER 鍵選擇默認設置,直至安裝完成;15、 人,活著,要有耐心——這個過程稍長,顯示最後兩行為」Enjoy, --the WMware team」時就安裝完成了;

16、 以上幾個步驟如下:

嵌入式開發環境的搭建

17、 執行命令:sudo reboot 以重啟;

18、 啟動後在桌面右鍵選擇」Open in terminal」,輸入命令:cd /mnt/hgfs/shared ,當然若之前選擇的空享空文件夾名稱與 shared 不一樣,可能不是這個目錄,唉,管不了這么多了;19、 查看目當下文件如下:

嵌入式開發環境的搭建

20、 安裝 libusb-1.0.9.tar.bz2,依次輸入以下命令:tar jxf libusb-1.0.9.tar.bz2 、

cd libusb-1.0.9 、 。/configure --prefix=/usr 、 make 、 sudo make install ,注意最後一步需要輸入密碼 redeem2012,完了之後返回原目錄: cd 。。/ ;21、 安裝 readline-6.2.tar.gz,依次輸入以下命令:tar zxf readline-6.2.tar.gz 、 cd readline-6.2 、。/configure --prefix=/usr 、 make 、 sudo make install ,完了之後返回原目錄:cd 。。/ ;

22、 安裝交叉編譯器:sudo tar arm-linux-gcc-3.4.5.tar.bz2 -C /home ;

23、 更改環境變數:gedit /home/user/.profile ,在最後一行添加這么一句:export PATH=$PATH:/home/user/gcc-3.4.5-glibc-2.3.6/bin ,保存後退出

24、 切換回用戶主目錄:cd ~ ;

25、 執行命令:tar jxf /mnt/hgfs/shared/JLink_Linux_V422.tar.bz2 ;

26、 依次執行以下命令:cd JLink_Linux_V422/ 、 sudo cp libjlinkarm.so.* /usr/lib ,現在就可以

運行 JLink 了: sudo 。/JLinkExe ,但要注意這么一點:由於現在運行的是 windows 系統下的虛擬機, Linux 操作系統無法訪問到 JLink,那麼就需要按下圖所示選擇將連接到電腦的 JLink 直接送給虛擬機中運行的 Linux。我沒有 JLink,所以下圖中沒有,你需要自己選擇硬體並點擊箭頭後再點擊」connect」:

嵌入式開發環境的搭建

另外,下面需要安裝 minicom,也需要按上圖將串口連接到 Linux 操作系統;

27、 這一步安裝minicom。將虛擬機文件夾 Ubuntu 下的 minicom_2.3-1ubuntu2_i386.deb 復制到shared文件下,之後執行命令:sudo dpkg --install /mnt/hgfs/shared/ minicom_2.3-1ubuntu2_i386.deb

到這一步,windows 系統下的嵌入式 ARM 開發環境搭建完成了。重啟一下更好。

至於 Linux 系統下的配置,這要復雜得多,因為系統情況完全不一樣,因而,這里不再給出,當然,所有的軟體也跟上面的完全一樣。

另外,minicom、JLink 的配置和使用,這里就不說了,自己到網上去找吧,若搞不好,就當自虐了。反正我已經送佛到西了,整個過程不需要仍何網路,不需要上網

所附的光碟鏡像文件中還有一些 windows 下的軟體,如 SecureCRT、arm-none-linux-gcc 等,這些也能用到,只不過我沒那個心情講更多了,以上的配置已經完全足夠了。

網路是個好東西,沒有網路,就沒有 LINUX,也沒有快速學習的條件。所以——現在,自學去吧。

⑵ 用IAR嵌入式編譯程序,「section=」是什麼意思

#pragma section( "section-name" [, attributes] ) 作用是由程序指定創建一個段x0dx0a一般默認段都是由編譯器自動指定的 不過看你這樣的寫法 IAR的時候是沒有默認段的 必須由編寫者手動指定x0dx0a比如#pragma section = ".data"就是創建一個名字為.data的段,x0dx0a然後下面調用x0dx0adata_ram = __section_begin(".data");x0dx0a來獲取這個段的首地址以備其操作x0dx0a其他類似x0dx0a關於pragma section的詳細說明如下。 對於#pragma 預處理還有很多功能 感興趣可以自行搜索x0dx0a==================================================================================x0dx0a#pragma section。創建一個段。x0dx0a其格式為:#pragma section( "section-name" [, attributes] )x0dx0asection-name是必選項,用於指定段的名字。該名字不能與標准段的名字想沖突。可用/SECTION查看標准段的名稱列表。x0dx0aattributes是可選項,用於指定段的屬性。可用屬性如下,多個屬性間用逗號(,)隔開:x0dx0aread:可讀取的x0dx0awrite:可寫的x0dx0aexecute:可執行的x0dx0ashared:對於載入該段的鏡像的所有進程是共享的x0dx0anopage:不可分頁的,主要用於Win32的設備驅動程序中x0dx0anocache:不可緩存的,主要用於Win32的設備驅動程序中x0dx0adiscard:可廢棄的,主要用於Win32的設備驅動程序中x0dx0aremove:非內存常駐的,僅用於虛擬設備驅動(VxD)中x0dx0a如果未指定屬性,默認屬性為read和write。x0dx0a在創建了段之後,還要使用__declspec(allocate)將代碼或數據放入段中。x0dx0a例如:x0dx0a//pragma_section.cppx0dx0a#pragma section("mysec",read,write)x0dx0aint j = 0;x0dx0a__declspec(allocate("mysec"))x0dx0aint i = 0;x0dx0aint main(){}x0dx0a該例中, 創建了段"mysec",設置了read,write屬性。但是j沒有放入到該段中,而是放入了默認的數據段中,因為它沒有使用__declspec(allocate)進x0dx0a行聲明;而i放入了該段中,因為使用__declspec(allocate)進行了聲明。

⑶ 嵌入式linux系統開發的具體步驟

第一步、建立交叉編譯環境
沒有交叉開發經驗的讀者,可能一時很難接受這個概念。首先,要明白兩個概念:一般
我們工作的機器,稱為開發機、主機;我們製作好的系統將要放到某台機器,如手機或另一
台PC機,這台機我們稱為目標主機。
我們一般開發機上已經有一套開發工具,我們稱之為原生開發套件,我們一般就是用它
們來寫程序,那麼,那什麼又是交叉編譯環境呢?其實一點也不神秘,也就是在開發機上再
安裝一套開發工具,這套開發工具編譯出來的程序,如內核、系統工作或者我們自己的程序,
是放在目標主機上運行的。
那麼或許有初學者會問,直接用原生開發工具為目標主機編譯程序不就完了?至少我當
初是這么想的。一般來說,我們的開發機都是X86 平台,原生開發套件開發的工具,也針
對X86 平台,而我們的目標主機可能是PowerPC、IXP、MIPS……所以,我們的交叉編譯
環境是針對某一類具體平台的。
一般來講,交叉開發環境需要二進制工具程序、編譯器、C鏈接庫,嵌入式開發常用的
這三類軟體是:
Binutils
Gcc
uClibc
當然,GNU包含的工具套件不僅於此,你還要以根據實際需要,進行選擇
第二步、編譯內核
開發工具是針對某一類硬體平台,內核同樣也是。這一步,我們需要用第一步中建立的
工具,對內核進行編譯,對於有內核編譯經驗的人來說,這是非常簡單的;
第三步、建立根文件系統
也就是建立我們平常看到的bin、dev、proc……這一大堆目錄,以及一些必備的文件;
另外,我們還需要為我們的目標系統安裝一些常用的工具軟體,如ls、ifconfig……當然,
一個辦法是找到這些工具的源代碼,用第一步建立的交叉編譯工具來編譯,但是這些軟體一
是數量多,二是某些體積較大,不適合嵌入式系統,這一步,我們一般都是用busybox來完
成的,包括系統引導軟體init;
最後,我們為系統還需要建立初始化的引導文件,如inittab……

閱讀全文

與嵌入式編譯器教程相關的資料

熱點內容
手機硬體編程 瀏覽:832
如何去除你看文件夾時間 瀏覽:438
兩個加數的和的編程 瀏覽:793
51單片機lcd顯示 瀏覽:582
hacmp命令 瀏覽:619
安卓游戲機都有什麼 瀏覽:72
androidapp被殺死 瀏覽:393
msp430單片機測量溫度 瀏覽:428
用友的雲加密是一直都不用換嗎 瀏覽:360
美的空調壓縮機壞了怎麼辦 瀏覽:803
usb單片機驅動 瀏覽:129
模板模式在源碼中的體 瀏覽:938
linuxsd卡分區 瀏覽:632
網頁查郵箱伺服器地址 瀏覽:226
程序員重構水管圖 瀏覽:43
電子加密貨幣有漏洞發行後能改嗎 瀏覽:797
java一段時間執行 瀏覽:513
pdftojpg綠色版 瀏覽:680
linux收音機 瀏覽:699
程序員眼中的井川里予 瀏覽:517