1

我正在使用具有Vortex86-SGCPU 的嵌入式 PC,Ubuntu 10.04 w/ kernel 2.6.34.10-vortex86-sg。不幸的是,我们无法编译新内核,因为我们没有任何源代码,甚至没有驱动程序或补丁。

我必须使用OpenFrameworks运行一个用 C++ 编写的小项目。该框架编译正确的每个脚本在of_v0071_linux_release/scripts/linux/ubuntu/install_*.sh.

我注意到为了针对Vortex86/Ubuntu 10.04进行编译,必须在每个config.make文件中添加以下选项:

USER_CFLAGS = -march=i486  
USER_LDFLAGS = -lGLEW  

实际上,它编译没有错误,但生成的二进制文件根本没有启动:

root@jb:~/openframeworks/of_v0071_linux_release/apps/myApps/emptyExample/bin# ./emptyExample  
Illegal instruction  
root@jb:~/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  
root@jb:~/openframeworks/of_v0071_linux_release/apps/myApps/emptyExample/bin#  

有什么想法可以解决这个问题吗?

4

1 回答 1

3

我知道我在这方面有点晚了,但我最近在尝试为 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. Grab Config file from dmp ftp site: ftp://vxmx:gc301@ftp.dmp.com.tw/Linux/Source/config-2.6.34-vortex86-sg-r1.zip. Please note vxmx user name. Copy the config file to freshly extracted Linux source folder.
  5. Grab Patch and at ftp://vxdx:gc301@ftp.dmp.com.tw/Driver/Linux/config%26patch/patch-2.6.34-hda.zip. Please note vxdx user name. Copy to kernel source folder.
  6. Patch Kernel: #patch -p1 < patchfilename
  7. configure kernel with #make menuconfig
  8. Load Alternate Configuration File
  9. Enable generic x86 support
  10. Enable Math Emulation
  11. I disabled generic IDE support because I will using legacy mode(selectable in bios)
  12. Under Device Drivers -> Ethernet (10 or 100Mbit) -> Make sure RDC R6040 Fast Ethernet Adapter Support is selected
  13. USB support -> Select Support for Host-side USB, EHCI HCD (USB 2.0) support, OHCI HCD support
  14. safe config as .config
  15. check serial ports: edit .config manually make sure CONFIG_SERIAL_8250_NR_UARTS = 4 (or more if you have additional), CONFIG_SERIAL_8250_RUNTIME_UARTS = 4(or more if you have additional). If you are to use more that 4 serial ports make use config_serail_8250_MANY_PORTs is set.
  16. compile kernel headers and source: #make-kpkg --initrd kernel_image kernel_source kernel_headers modules_image
于 2013-08-30T12:29:59.470 回答