Вы можете использовать GDB для отладки вашего ядра с QEMU, вы можете использовать опции -s -S
. Если вам нужен простой и надежный набор инструментов, вы можете использовать ELDK
от DENX (http://www.denx.de/wiki/DULG/ELDK).
Вы можете установить его так (это не последняя версия, но у вас есть идея):
wget http://ftp.denx.de/pub/eldk/4.2/arm-linux-x86/iso/arm-2008-11-24.iso
sudo mkdir -p /mnt/cdrom
(при необходимости)
sudo mount -o loop arm-2008-11-24.iso /mnt/cdrom
/mnt/cdrom/install -d $HOME/EMBEDDED_TOOLS/ELDK/
Приведенная выше команда должна установить набор инструментов под $HOLE/EMBEDDED_TOOLS/ELDK
(измените его, если вам нужно)
echo "export PATH=$PATH:$HOME/EMBEDDED_TOOLS/ELDK/ELDK42/usr/bin" >> $HOME/.bashrc
Затем вы можете увидеть версию вашего набора инструментов ARM следующим образом:
arm-linux-gcc -v
Вы можете протестировать программу hello_world.c следующим образом:
arm-linux-gcc hello_world.c -o hello_world
И вы набираете: file hello_wrold, чтобы увидеть целевую архитектуру двоичного файла, она должна выглядеть примерно так:
hello_wrold: ELF 32-bit LSB executable, ARM, version 1 (SYSV)
Теперь, если вы хотите скомпилировать производственное ядро, вам нужно его оптимизировать (я предлагаю использовать busybox
), а если вы хотите только одно для тестирования сейчас, попробуйте выполнить следующие шаги:
Создайте скрипт для настройки инструмента цепочки set_toolchain.sh:
#! /usr/bin/sh
PATH=$PATH:$HOME/EMBEDDED_TOOLS/ELDK/ELDK42/usr/bin
ARCH=arm
CROSS_COMPILE=arm-linux-gnueabi-
export PATH ARCH CROSS_COMPILE
И запустите свой скрипт (source ./set_toolchain.sh
)
- Загрузите ядро Linux и распакуйте его (предположим, что 2.6.x - это старое ядро, но есть много шансов, что оно будет работать без ошибок компиляции).
Внутри вашего разархивированного ядра:
cd ~/linux-2.6.29/arch/arm/configs
make versatile_defconfig
Здесь мы используем универсальный чип, вам может понадобиться использовать make menuconfig
, чтобы изменить параметр OABI
и установить его на ARM EABI
, этот параметр находится под Kernel features menu
После всех этих шагов вы можете скомпилировать ваше ядро:
make
если вы хотите многословную компиляцию make v=1
После этого вы получили ваше ядро под arch/arm/boot/zImage
.
Надеюсь, что это поможет.
Привет.