DC-SWAT Forum
DreamShell Compilation - Версия для печати

+- DC-SWAT Forum (http://www.dc-swat.ru/forum)
+-- Форум: DreamShell (/forum-3.html)
+--- Форум: General Discussion (/forum-27.html)
+--- Тема: DreamShell Compilation (/thread-3820.html)



DreamShell Compilation - Mutronics - 02.03.2021 11:44

Компилирую DreamShell, ubuntu 20.04.
Инструкция по компиляции, как я понимаю, устарела.
Здесь уже затык "cp ds/sdk/toolchain/environ.sh environ.sh && cd ../" т.к. файла переменных уже нет, есть ubuntu_build.sh вероятно его нужно запускать.
Выдает ошибку "arm-eabi-gcc: error: unrecognized -mcpu target: arm7di"
Код:
make[5]: Entering directory '/usr/local/dc/kos/kos/kernel/arch/dreamcast/sound/arm'
/opt/toolchains/dc/arm-eabi/bin/arm-eabi-as -mcpu=arm7di --fix-v4bx crt0.s -o crt0.o
/opt/toolchains/dc/arm-eabi/bin/arm-eabi-gcc -mcpu=arm7di -Wall -O2 -fno-strict-aliasing -Wl,--fix-v4bx -Wa,--fix-v4bx  -I /usr/local/dc/kos/kos/kernel/arch/dreamcast/include/dc/sound -c main.c -o main.o
arm-eabi-gcc: error: unrecognized -mcpu target: arm7di
arm-eabi-gcc: note: valid arguments are: arm8 arm810 strongarm strongarm110 fa526 fa626 arm7tdmi arm7tdmi-s arm710t arm720t arm740t arm9 arm9tdmi arm920t arm920 arm922t arm940t ep9312 arm10tdmi arm1020t arm9e arm946e-s arm966e-s arm968e-s arm10e arm1020e arm1022e xscale iwmmxt iwmmxt2 fa606te fa626te fmp626 fa726te arm926ej-s arm1026ej-s arm1136j-s arm1136jf-s arm1176jz-s arm1176jzf-s mpcorenovfp mpcore arm1156t2-s arm1156t2f-s cortex-m1 cortex-m0 cortex-m0plus cortex-m1.small-multiply cortex-m0.small-multiply cortex-m0plus.small-multiply generic-armv7-a cortex-a5 cortex-a7 cortex-a8 cortex-a9 cortex-a12 cortex-a15 cortex-a17 cortex-r4 cortex-r4f cortex-r5 cortex-r7 cortex-r8 cortex-m7 cortex-m4 cortex-m3 marvell-pj4 cortex-a15.cortex-a7 cortex-a17.cortex-a7 cortex-a32 cortex-a35 cortex-a53 cortex-a57 cortex-a72 cortex-a73 exynos-m1 xgene1 cortex-a57.cortex-a53 cortex-a72.cortex-a53 cortex-a73.cortex-a35 cortex-a73.cortex-a53 cortex-a55 cortex-a75 cortex-a76 neoverse-n1 cortex-a75.cortex-a55 cortex-a76.cortex-a55 cortex-m23 cortex-m33 cortex-r52; did you mean ‘arm7tdmi’?
arm-eabi-gcc: error: missing argument to ‘-march=’
make[5]: *** [Makefile:17: main.o] Error 1
make[5]: Leaving directory '/usr/local/dc/kos/kos/kernel/arch/dreamcast/sound/arm'
make[4]: *** [/usr/local/dc/kos/kos/Makefile.rules:45: _dir_arm] Error 2
make[4]: Leaving directory '/usr/local/dc/kos/kos/kernel/arch/dreamcast/sound'
make[3]: *** [/usr/local/dc/kos/kos/Makefile.rules:45: _dir_sound] Error 2
make[3]: Leaving directory '/usr/local/dc/kos/kos/kernel/arch/dreamcast'
make[2]: *** [Makefile:8: all] Error 2
make[2]: Leaving directory '/usr/local/dc/kos/kos/kernel/arch'
make[1]: *** [/usr/local/dc/kos/kos/Makefile.rules:45: _dir_arch] Error 2
make[1]: Leaving directory '/usr/local/dc/kos/kos/kernel'
/bin/sh: 1: exit: Illegal number: -1
make: *** [Makefile:27: all] Error 2
Checking if /usr/local/dc/kos/kos/../kos-ports/SDL is installed and up-to-date...
Building /usr/local/dc/kos/kos/../kos-ports/SDL...
make: Entering directory '/usr/local/dc/kos/kos-ports/SDL'
SDL is not currently installed.
Finished processing dependencies for SDL.
/usr/bin/env: ‘python’: No such file or directory
make: *** [/usr/local/dc/kos/kos/../kos-ports/scripts/validate.mk:9: validate-dist] Error 1
make: Leaving directory '/usr/local/dc/kos/kos-ports/SDL'



RE: DreamShell Compilation - SWAT - 02.03.2021 12:02

Инструкцию недавно обновлял, забыл файл этот похоже. Исправил, попробуй.
С копиляторами пока не понял, какая версия и чем собиралась?


RE: DreamShell Compilation - Mutronics - 02.03.2021 21:22

Почти получилось Smile
в файле environ.sh переменной присваивается export KOS_BASE="/usr/local/dc/kos"
и в самом конце файла ${KOS_BASE}/environ_base.sh, но файл environ_base.sh находится по пути "/usr/local/dc/kos/kos"
В файле environ_base.sh вызывается kos-cc, который вызывает /opt/toolchains/dc/sh-elf/bin/sh-elf-gcc, а по инструкции папка "toolchains" еще пуста.


RE: DreamShell Compilation - SWAT - 03.03.2021 07:34

Поторопился Smile Исправил.
А вызываться kos-cc не должен там сразу, да и нету в этом файле вывозов никаких, только переменные вроде.
По инструкции следом идет сборка тулчейна как раз. Правда там arm у тебя не соберется возможно, можно в kos тулчейне собрать если что. Да и вообще никто не мешает их целиком в kos собрать, только версию поменяй на 9.3


RE: DreamShell Compilation - Mutronics - 03.03.2021 09:21

Затык опять в том же.
В этом пункте "make && cd ../kos-ports && ./utils/build-all.sh" при сборке kos.
Говорит: нет такой архитектуры arm7di, возможно вы имели виду arm7tdmi.
[Изображение: attachment.php?aid=1007]


RE: DreamShell Compilation - Mutronics - 04.03.2021 08:19

Компиляция kos проходит, если изменить в environ_dreamcast.sh последние две переменные с arm7di на arm7tdmi
export DC_ARM_CFLAGS="-mcpu=arm7tdmi -Wall -O2 -fno-strict-aliasing -Wl$
export DC_ARM_AFLAGS="-mcpu=arm7tdmi --fix-v4bx"
Теперь проблема с kos ports, не собираются freetype и opus, решения пока не нашел, логи прикрепил.


RE: DreamShell Compilation - SWAT - 04.03.2021 08:23

Компиляторы под ARM (в AICA он именно DI) собрались как-то коряво. Я не знаю почему они ругаются. Не разбирался еще с этим.
Собери их через kos/utilc/dc-chain, только версию 9.3 выбери. Или забей, для DS тебе они не нужны в общем-то, у меня там лежат собранные драйвера для AICA.
В модулях DS так же можешь отключить AICAOS, там тоже используются эти компиляторы, но тебе его совсем не обязательно собирать. Или собирай как TDMI и не используй результат этой сборки просто Smile

freetype и opus по идее можешь игнорировать, opus не используется, а freetype в DS свой.


RE: DreamShell Compilation - Mutronics - 05.03.2021 00:00

Все прошло без затычек через kos/utilc/dc-chain, но на сборке ядра выдал ошибки в коде.
Код:
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/9.3.0/../../../../sh-elf/bin/ld: ./src/fs/fs.o: in function `InitIDE':
/usr/local/dc/kos/kos/ds/src/fs/fs.c:265: undefined reference to `_g1_ata_max_lba'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/9.3.0/../../../../sh-elf/bin/ld: ./src/drivers/sd.o: in function `write_data':
/usr/local/dc/kos/kos/ds/src/drivers/sd.c:403: undefined reference to `_dcache_pref_range'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/9.3.0/../../../../sh-elf/bin/ld: ./src/exports.o:(.data.ds_symtab+0x514): undefined reference to `_dcache_alloc_range'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/9.3.0/../../../../sh-elf/bin/ld: ./src/exports.o:(.data.ds_symtab+0x51c): undefined reference to `_dcache_pref_range'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/9.3.0/../../../../sh-elf/bin/ld: ./src/exports.o:(.data.ds_symtab+0x524): undefined reference to `_dcache_purge_range'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/9.3.0/../../../../sh-elf/bin/ld: ./src/exports.o:(.data.ds_symtab+0xb34): undefined reference to `_g1_ata_is_dcio'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/9.3.0/../../../../sh-elf/bin/ld: ./src/exports.o:(.data.ds_symtab+0xb3c): undefined reference to `_g1_ata_max_lba'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/9.3.0/../../../../sh-elf/bin/ld: ./src/exports.o:(.data.ds_symtab+0xb6c): undefined reference to `_g1_ata_standby'



RE: DreamShell Compilation - Mutronics - 07.03.2021 23:03

В гитхабе будет последняя версия ?
После сборки последней версии сам дримшел работает, но не одна игра не запускается.
Игры запускаю с IDE и если заменить файл firmware/isoldr/ide.bin на файл из гитхаба, то все начинает работать.
На гитхабе (firmware/isoldr/ide.bin) лежит версия от 2017 года, судя по хистори с того момента было не мало изменений.
Если собрать самый первый коммит isoldr на старом gcc, то игры работают, все что идет дальше уже не работает.


RE: DreamShell Compilation - SWAT - 09.03.2021 08:30

Ты не накатил патч для KOS поэтому ядро не линкуется, в тулчейне DS это делается автоматом, а вот если через KOS собирать, то руками нужно накатить патч, он лежит здесь под именем kos.diff:
https://github.com/DC-SWAT/DreamShell/tree/master/sdk/toolchain/patches
--------
Будет, когда я или кто-нибудь еще доработает приложение под новый загрузчик, там появились новые параметры, поэтому пока бинарник заменить не могу, но ты сам можешь собрать его. И модуль isoldr тоже нужно обновленный собрать, он уже адаптирован под новый загрузчик. По сути только приложение задерживает это обновление, без него загрузчик будет плохо работать, так как параметры нужные не выставить. Сейчас только через консоль можно их выставить, так как модуль я адаптировал. Я даже не стал выкладывать на форуме последнюю версию, так как хардкодить придется слишком много вариантов параметров и будет целая куча бинарников. Нужно доделать приложение и стороннее в том числе, которое некоторые используют.