Процесс загрузки Linux и u-boot во flash-память Ниже описан процесс загрузки ядра Linux-3.18.x для платформы Elvees Multicore и u-boot(находится в репозитории ssh://git@warlock.elvees.com:2222/mclinux/u-boot.git) во flash-память: 1. Для сборки u-boot под выбранный вами модуль для получения u-boot.bin-файла необходимо выполнить команды (предварительно в PATH прописать пути до mipsel: `PATH=$PATH:<путь до mipsel-elf32-*>`): ``` CROSS_COMPILE=mipsel-none-elf- export CROSS_COMPILE make {nvcom02_tem_defconfig | mc30sf6_em_defconfig | mc0428em_pci_defconfig | mct04em_defconfig} make ``` 2. Собрать mclinux с помощью запуска команды `build/create_all.sh {--nvcom02-tem|--mc24r2-em|--mct04em|--30sf6em|--mct03pem|--mc0428em-pci}` и выполнить необходимые настройки сборки в появившемся меню: - Во вкладке System configuration: - в пункте меню : ($(MCLINUX_ROOT)/project-overlay/buildroot/board/elvees_multicore/mct04em/rootfs_overlay) Root filesystem overlay directo, отредактировать и указать тот модуль, на котором будет проводиться сборка ядра Linux-3.18 - в пункте меню: ($(MCLINUX_ROOT)/project-overlay/buildroot/board/elvees_multicore/mct04em/post_image.sh) Custom scripts to run after crea│ сделать аналогичные настройки или выбрать common/post_image.sh (можно применять для большинства наших платформ, то есть "универсальная" платформа, но при этом не все функции платформ будут поддерживаться правильно) - Во вкладке Toolchain: - в поле GCC Options убедиться что выбрано GCC compiler Version (gcc 4.9.x) - в поле Binutils Options убедиться что выбрано Binutils Version (binutils 2.28.1) 3. В директории linux/linux-3.18/ надо запустить `~/toolchain/3.18/host/bin/mipsel-buildroot-linux-uclibc-objcopy -O binary vmlinux vmlinux.bin` `~/toolchain/3.18/host/bin/mipsel-buildroot-linux-uclibc-objdump -d vmlinux > vmlinux.dis` для появления двух файлов .bin и .dis(для проверки правильности сборки убедиться что в файле .dis секция _text должна начинаться с адреса 0х8000_0800 и необходимо запомнить адрес начала секции ) 4. Далее надо запустить команду `.../u-boot/tools/mkimage -A mips -O linux -T kernel -C none -a 0x80000800 -e <адрес начала секции kernel_entry> -n "Linux kernel" -d .../mclinux/linux/linux-3.18/vmlinux.bin .../mclinux/uImage`, вместо троеточия надо указать путь до директории с u-boot и с mclinux соответственно и указать адрес начала секции 5. Далее чтобы прошить linux и u-boot во flash под выбранным модулем, необходимо скопировать с локального ПК файл u-boot.bin и uImage на ПК, к которому подключен модуль, и далее используем утилиту mcprog (в параметрах mcprog надо указывать именно физические адреса) для загрузки: `/opt/elvees/mcprog/mcprog -b {nvcom-02tem-3u | mc30sf6_em |} -e2 u-boot.bin {0х1FС00000 | ` `/opt/elvees/mcprog/mcprog -b {nvcom-02tem-3u | mc30sf6_em |} -e2 uImage {0x1e000000 | ` Результат работы U-boot и Linux можно наблюдать через программы Putty или minicom.