Перейти к содержанию
    

собираю софт мэйком

make xconfig (или make minuconfig или в конце концов make config)

make all

 

make all спотыкается. ему нужен кросскомпилятор. нужно так

 

make CROSS_COMPILE=arm-none-eabi- all

 

добавил параметр CROSS_COMPILE в Kconfig. Один раз в менюшке указал "arm-none-eabi-" и забыл. Это я так думал, что забыл. Параметр CROSS_COMPILE в make xconfig появился. задал. но при сборке опять make пытается собрать компилятором gcc вместо arm-none-eabi-gcc. Как мэйку передать из конфигурации этот параметр?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

добавил параметр CROSS_COMPILE в Kconfig. Один раз в менюшке указал "arm-none-eabi-" и забыл. Это я так думал, что забыл. Параметр CROSS_COMPILE в make xconfig появился. задал. но при сборке опять make пытается собрать компилятором gcc вместо arm-none-eabi-gcc. Как мэйку передать из конфигурации этот параметр?

пара вариантов

1. в файле настроек шелла (для bash например ~/.bashrc) пропишите

export CROSS_COMPILE=arm-none-eabi-

потом выйдите из терминалки или запустите новую, чтобы выполнились настройки

2. в своем скрипте напишите строку:

GCC=arm-none-eabi-

и далее для make указывайте

make CROSS_COMPILE=$GCC

 

можно вообще ничего не прописывать, запустили терминалку, дали команду

export CROSS_COMPILE=arm-none-eabi-

и пока не вышли, переменная будет работать..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я для raspberry вот таким скриптом ведро компелял:

#!/bin/bash
make -j4 ARCH=arm CROSS_COMPILE=/usr/bin/arm-none-eabi- Image modules dtbs
mkdir Modules
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-none-eabi- INSTALL_MOD_PATH=Modules modules_install

А потом перенес на флеху.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вопрос не в том, как мейку из шела и всякими экспортами передать CROSS_COMPILE. вопрос в том, как в конфигурацию включить CROSS_COMPILE?

 

на пальцах....

качаем исходгники uсLinux. выполняем две команды

make menuconfig

make

 

получаем бинарь.

 

при конфигурации указываем, что кросскомпилятор есть arm-none-eabi-. потом маке подхватывает эту переменную и вместо gcc использует arm-none-eabi-gcc. потом можно ковырять сырци и многократно на разных компах делать сборку. кросскомпилятор всегда подхватиться. красиво? красиво!

 

далее.... качаем u-boot. теже яйца команды

make menuconfig

make

 

но тут авторы Kconfig уже не воткнули кроскомпилятор. приходится бубном писать скрипты или делать всякие экспорты. хотелось бы также в make menuconfig есдиножды указать этот кросскомпилятор и чтоб маке all его подхватил без дополнительных указаний. Я в Kconfig архитектура процессора добавил переменную CROSS_COMPILE. Теперь при вызове make menuconfig? там где выберается таргет, боард, фэмели... можно указать кросскомпилятор. Но при выполнении make all почемуто маке не знает про секс CROSS_COMPILE

 

по мимо CROSS_COMPILE я бы в Kconfig воткнул бы -j8 и ещё чего нибудь. Хотелось бы научиться делать красивые конфиги для make-а.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как в конфигурацию включить CROSS_COMPILE?

Как-то так: https://patchwork.kernel.org/patch/69210/

Переменные в Kconfig имеют префикс CONFIG_

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще один вариант — все делать внутри армовского чрута при помощи qemu. Я так разворачивал генту на raspberry (т.к. она слишком тормозная, чтобы непосредственно на ней компелять).

Вот таким скриптом у меня монтируются разделы "малинки":

#!/bin/bash
CHRT="ROOT"
if [ $# != 1 ]; then
    echo "usage: $0 /dev/sdb"
    exit 1
fi

function mnt(){
    mount --rbind $1 ${CHRT}$1
}
[ -f /proc/sys/fs/binfmt_misc/arm ] || echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\x
ff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register
mount ${1}2 ${CHRT}
mv ${CHRT}/usr/bin/qemu-arm-static_ ${CHRT}/usr/bin/qemu-arm-static
mount ${1}1 ${CHRT}/boot
mount -o bind linux ${CHRT}/usr/src/linux
mnt /dev
mnt /sys
mount -t proc none ${CHRT}/proc
mnt /run
mount -o bind portage ${CHRT}/usr/portage
chroot ${CHRT}

И скрипт для размонтирования:

#!/bin/bash
CHRT="ROOT"
mv ${CHRT}/usr/bin/qemu-arm-static ${CHRT}/usr/bin/qemu-arm-static_
umount ${CHRT}/boot
umount ${CHRT}/usr/portage/
umount ${CHRT}/usr/src/linux
umount ${CHRT}/proc
umount ${CHRT}/run
umount ${CHRT}/sys
umount ${CHRT}/dev/pts
umount ${CHRT}/dev/shm
umount ${CHRT}/dev
umount ${CHRT}

Главное - не забыть /usr/bin/qemu-arm-static, иначе на настоящем железе система не загрузится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а паи (орандж пай, банана пай, расбери пай) можно на низком уровне пощюпать? На али есть орандж пай, фоты.... не вижу разъема для подключения отладчика. У процессора я так понял нет внутреннего флеша. Т.е. страт либо с тфт, либо с усб, либо с лан. От куда старт программы и как выбирается? можно ли подебажить подобный проц/комп начиная с ресета?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то так: https://patchwork.kernel.org/patch/69210/

Переменные в Kconfig имеют префикс CONFIG_

Не понятно, как так? Ещё понадобилось включить в конфигурацию параметры. Кто нибудь создавал свои конфиги? Как в них добавлять параметры и как их передавать в

makefile?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно на низком уровне пощюпать?

Да, если в настройке загрузки указано дублировать tty на последовательный порт. Я так отлаживал загрузку "малинки".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, если в настройке загрузки указано дублировать tty на последовательный порт. Я так отлаживал загрузку "малинки".
ну вот после ресета программа процессор (обычно) страртует с адреса 0х00. там вектор прерывания. по вектору прерывания обычно уходим в startup.s. Далее идет инициализация тактового генератора, инициализация таблицы векторов прерывания, инициализация сдрам, ног GPIO и т.д. Низкоуровневая инициализация.... до инициализации UART ещё далеко. тем более до /drv/tty. Ещё нет линукса... только u-boot начал работать. как это дебажить? как по шагам в таких процессорах выполнять программу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

только u-boot начал работать. как это дебажить? как по шагам в таких процессорах выполнять программу?

Только через JTAG, если он выведен, конечно.

А смысл на столь ранних этапах дебажить? Разве только если пытаться написать свой собственный загрузчик...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А смысл на столь ранних этапах дебажить? Разве только если пытаться написать свой собственный загрузчик...
я это и пытаюсь сделать. нужно сделать свою железку, со своими блекджеком и шлю.... своей мэмори мэп, со своей переферией, залить туда свой загрузчик, который зальёт свой линукс. Но для начало можно на готовых фруктах потренироваться, если у них конечно есть аппаратный отладчик.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В табличке "I/O interfaces and ports" можно выбрать одноплатник с распаянным JTAG.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В табличке "I/O interfaces and ports" можно выбрать одноплатник с распаянным JTAG.
малины с джитагом нет ((.... чтонить выберу. Спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть Вам будут ближе системы на кристалле? Вроде платки DE0-SoC-nano. Там код зашитый в проц грузит прелоадер, и начиная с этого момента данные выводятся на последовательную консоль. После чего грузится сам u-boot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...