2013-06-22 76 views
0

我使用的嵌入式PC具有Vortex86-SG CPU,Ubuntu 10.04 w/kernel 2.6.34.10-vortex86-sg。不幸的是,我們無法編譯新內核,因爲我們沒有任何源代碼,甚至沒有驅動程序或補丁。在Vortex86上編譯:「非法指令」

我必須運行一個用C++編寫的小項目OpenFrameworks。該框架編譯of_v0071_linux_release/scripts/linux/ubuntu/install_*.sh中的每個腳本。

我注意到,爲了進行編譯的Vortex86/Ubuntu的10.04,下列選項必須在每個config.make文件中加入:

USER_CFLAGS = -march=i486 
USER_LDFLAGS = -lGLEW 

效果器,它編譯沒有錯誤,但生成的二進制沒有按「T開始在所有:

[email protected]:~/openframeworks/of_v0071_linux_release/apps/myApps/emptyExample/bin# ./emptyExample 
Illegal instruction 
[email protected]:~/openframeworks/of_v0071_linux_release/apps/myApps/emptyExample/bin# echo $? 
132 

strace的最後幾行:

munmap(0xb77c3000, 4096)    = 0 
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 8) = 0 
--- SIGILL (Illegal instruction) @ 0 (0) --- 
+++ killed by SIGILL +++ 
Illegal instruction 
[email protected]:~/openframeworks/of_v0071_linux_release/apps/myApps/emptyExample/bin# 

任何想法來解決這個問題?

回答

2

我知道我對此有點遲,但最近我有自己的問題試圖編譯內核的vortex86dx。我終於也能夠構建內核了。使用這些步驟需要您自擔風險,因爲我不是一個Linux大師和一些設置,你可能不得不改變自己的喜好/硬件:

  1. 下載並使用一個類似的內核版本上運行的Linux發行版,你計劃編制。由於我將編譯Linux 2.6.34.14,因此我在具有足夠的內存和處理器分配的虛擬機箱上下載並安裝了Debian 6。您可能會在Vortex86DX本身上進行編譯,但這可能需要一段時間。
  2. 確定我有愛:#apt-get install ncurses-dev kernel-package
  3. 從kernel.org下載內核(我抓住了Linux-2.6.34.14.tar.xz)。從軟件包中提取文件。
  4. 從dmp ftp站點獲取配置文件:ftp://vxmx:[email protected]/Linux/Source/config-2.6.34-vortex86-sg-r1.zip請注意vxmx用戶名稱。將配置文件複製到新鮮提取的Linux源文件夾中。
  5. 抓鬥補丁和ftp://vxdx:[email protected]/Driver/Linux/config%26patch/patch-2.6.34-hda.zip請注意vxdx用戶名。複製到內核源文件夾。
  6. 補丁內核:#patch -p1 < patchfilename
  7. 配置內核#make menuconfig
  8. 負荷備用的配置文件
  9. 啓用通用支持x86
  10. 啓用數學仿真
  11. 我禁用通用IDE的支持,因爲我將使用傳統模式(可選在BIOS中)
  12. 在設備驅動程序 - >以太網(10或100Mbit)下 - >確保選擇RDC R6040快速以太網適配器支持
  13. USB支持 - >選擇支持主機端USB,EHCI HCD(USB 2。0)支持,OHCI HCD支持
  14. 安全配置作爲的.config
  15. 檢查串口:編輯.CONFIG手動確保CONFIG_SERIAL_8250_NR_UARTS = 4(或更多,如果您有其他的),CONFIG_SERIAL_8250_RUNTIME_UARTS = 4(或更多,如果您有其他)。如果您要使用更多的4個串行端口,請使用config_serail_8250_MANY_PORTs進行設置。
  16. 編譯內核頭文件和源:#make-kpkg --initrd kernel_image kernel_source kernel_headers modules_image
+0

我沒有嘗試的過程,因爲我沒有更多的設備。不過這似乎是一個很好的起點! –