суббота, 19 мая 2007 г.

Установка SimpleScalar

В этом документе рассматривается процесс установки среды моделирования SimpleScalar на примере операционной системы OpenSUSE 10.1. На большинстве других дистрибутивов вы также можете с успехом использовать это руководство.

Шаг 1 Получение исходных кодов

Для минимальной установки нам потребуется четыре файла: simpleutils-990811.tar.gz, simplesim-3v0d.tgz, gcc-2.7.2.3.ss.tar.gz и simpletools-2v0.tgz. Их можно получить на официальном сайте программы (www.simplescalar.com) а также на множестве зеркал по всему миру.

После того, как вы получите все файлы их необходимо скопируйте их в один каталог и разархивируйте.

cd /ваш/каталог/установки
tar xzf simpleutils-990811.tar.gz
tar xzf simplesim-3v0d.tgz
tar xzf gcc-2.7.2.3.ss.tar.gz
tar xzf simpletools-2v0.tgz

После разархивирования simpletools-2v0.tgz в каталоге установки появится подкаталог gcc-2.6.3 он нам не понадобится, поэтому удаляем его:

rm -rf  gcc-2.6.3

Шаг 2 Компиляция утилит

Перед компиляцией определим переменную окружения IDIR:

export IDIR=/ваш/каталог/установки

После этого необходимо сконфигурировать и сткомпилировать утилиты:

cd $IDIR/simpleutils-990811/ 
./configure --host=i386-*-linux \
            --target=sslittle-na-sstrix \
            --with-gnu-as \
            --with-gnu-ld \
            --prefix=$IDIR 
make all install

Скомпилированные утилиты будут установлены в каталог $IDIR/sslitle-na-sstrix/bin

Замечание

В ходе компиляции утилит может возникнуть ошибка "../../src/ld/ldlex.l:577: error: `yy_current_buffer' undeclared (first use in this function)". Это означает, что вы используете слишком новую версию программы flex (например, 2.5.31). Для успешной сборки необходимо удалить пакет flex и вместо него установить flex-old.

Шаг 3 Компиляция simplescalar 3.0

Для компиляции simplescalar 3.0 необходимо выполнить команды:

cd $IDIR/simplesim-3.0 
make config-pisa 
make 
make sim-tests

На этом этапе обычно никаких сложностей не возникает.

Шаг 4 Сборка кросскомпилятора gcc

На этом шаге возникает наибольшее число ошибок, поэтому следует быть внимательными. В первую очередь необходимо в глобальную переменную PATH добавить пути к утилитам, скомпилированным на шаге 2:

cd $IDIR/gcc-2.7.2.3 
export PATH=$PATH:$IDIR/sslittle-na-sstrix/bin

Конфигурируем скрипты и запускаем компиляцию:

./configure --host=i386-*-linux \
            --target=sslittle-na-sstrix \
            --with-gnu-as \
            --with-gnu-ld \
            --prefix=$IDIR \
            –enable-languages=c,c+
make

Замечание

В ходе сборки кросскомпилятора может появится множество ошибок:

  • Ошибки в файле insn-output.c. Эти ошибки исправляются путем добавления в исходном тексте завершающих экранирующих слэшей '\' на всех многостроковых константах, на которых выдается ошибка.
  • Следует заменить файл $IDIR/sslittle-na-sstrix/include/sys/cdefs.h его исправленной версией $IDIR/gcc-2.7.2.3/patched/sys/cdefs.h. Это поможет избавится от ошибке с константой __NORETURN.
  • В файле $IDIR/gcc-2.7.2.3/objc/sendmsg.c в строке 35 дабавьте "#define STRUCT_VALUE 0".
  • В файле protoize.c в строке 60 замените объявление "#include " на "#include ".
  • Если в файле decl.c появляется ошибка "invalid lvalue in increment", то в файле $IDIR/gcc-2.7.2.3/obstack.h в строке 341 замените выражение "*((void **)__o->next_free)++=((void *)datum);\" на "*((void **)__o->next_free++)=((void *)datum);\".

Завершение процесса сборки:

make enquire 
../simplesim-3.0/sim-safe  ./enquire -f > float.h-cross 
make install

Шаг 5 Проверка установки

На последнем этапе мы проверим правильность нашей установки. Создайте каталог $IDIR/dev и сохраните в него в файле test.c простую программу на C:

#include
void main() {
    printf("Hello world\n");
}

Затем выполните следующие команды:

cd $IDIR 
bin/sslittle-na-sstrix-gcc -o test dev/test.c 
simplesim-3.0/sim-outorder test

Если после этого вы увидели результаты моделирования на экране, то установка прошла успешно.

1 комментарий:

Илья комментирует...

Актуальная инструкция: https://github.com/sdenel/How-to-install-SimpleScalar-on-Ubuntu