реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> make config
juvf
сообщение Nov 10 2016, 03:25
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



собираю софт мэйком
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. Как мэйку передать из конфигурации этот параметр?
Go to the top of the page
 
+Quote Post
Jury093
сообщение Nov 10 2016, 14:35
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(juvf @ Nov 10 2016, 06:25) *
добавил параметр 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-

и пока не вышли, переменная будет работать..
Go to the top of the page
 
+Quote Post
Эдди
сообщение Nov 10 2016, 14:45
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Я для 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

А потом перенес на флеху.
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 10 2016, 15:34
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



вопрос не в том, как мейку из шела и всякими экспортами передать 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-а.
Go to the top of the page
 
+Quote Post
psL
сообщение Nov 10 2016, 20:52
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



Цитата(juvf @ Nov 10 2016, 18:34) *
как в конфигурацию включить CROSS_COMPILE?

Как-то так: https://patchwork.kernel.org/patch/69210/
Переменные в Kconfig имеют префикс CONFIG_
Go to the top of the page
 
+Quote Post
Эдди
сообщение Nov 11 2016, 05:27
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Еще один вариант — все делать внутри армовского чрута при помощи 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, иначе на настоящем железе система не загрузится.
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 11 2016, 08:16
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Эдди @ Nov 11 2016, 10:27) *
а паи (орандж пай, банана пай, расбери пай) можно на низком уровне пощюпать? На али есть орандж пай, фоты.... не вижу разъема для подключения отладчика. У процессора я так понял нет внутреннего флеша. Т.е. страт либо с тфт, либо с усб, либо с лан. От куда старт программы и как выбирается? можно ли подебажить подобный проц/комп начиная с ресета?
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 14 2016, 18:05
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(psL @ Nov 11 2016, 01:52) *
Как-то так: https://patchwork.kernel.org/patch/69210/
Переменные в Kconfig имеют префикс CONFIG_
Не понятно, как так? Ещё понадобилось включить в конфигурацию параметры. Кто нибудь создавал свои конфиги? Как в них добавлять параметры и как их передавать в
makefile?
Go to the top of the page
 
+Quote Post
Эдди
сообщение Nov 14 2016, 19:12
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(juvf @ Nov 11 2016, 11:16) *
можно на низком уровне пощюпать?

Да, если в настройке загрузки указано дублировать tty на последовательный порт. Я так отлаживал загрузку "малинки".
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 15 2016, 02:23
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Эдди @ Nov 15 2016, 00:12) *
Да, если в настройке загрузки указано дублировать tty на последовательный порт. Я так отлаживал загрузку "малинки".
ну вот после ресета программа процессор (обычно) страртует с адреса 0х00. там вектор прерывания. по вектору прерывания обычно уходим в startup.s. Далее идет инициализация тактового генератора, инициализация таблицы векторов прерывания, инициализация сдрам, ног GPIO и т.д. Низкоуровневая инициализация.... до инициализации UART ещё далеко. тем более до /drv/tty. Ещё нет линукса... только u-boot начал работать. как это дебажить? как по шагам в таких процессорах выполнять программу?
Go to the top of the page
 
+Quote Post
Эдди
сообщение Nov 15 2016, 05:55
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(juvf @ Nov 15 2016, 05:23) *
только u-boot начал работать. как это дебажить? как по шагам в таких процессорах выполнять программу?

Только через JTAG, если он выведен, конечно.
А смысл на столь ранних этапах дебажить? Разве только если пытаться написать свой собственный загрузчик...
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 15 2016, 06:37
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Эдди @ Nov 15 2016, 10:55) *
А смысл на столь ранних этапах дебажить? Разве только если пытаться написать свой собственный загрузчик...
я это и пытаюсь сделать. нужно сделать свою железку, со своими блекджеком и шлю.... своей мэмори мэп, со своей переферией, залить туда свой загрузчик, который зальёт свой линукс. Но для начало можно на готовых фруктах потренироваться, если у них конечно есть аппаратный отладчик.
Go to the top of the page
 
+Quote Post
Эдди
сообщение Nov 15 2016, 07:30
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



В табличке "I/O interfaces and ports" можно выбрать одноплатник с распаянным JTAG.
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 15 2016, 08:59
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Эдди @ Nov 15 2016, 12:30) *
В табличке "I/O interfaces and ports" можно выбрать одноплатник с распаянным JTAG.
малины с джитагом нет ((.... чтонить выберу. Спасибо.
Go to the top of the page
 
+Quote Post
R6L-025
сообщение Nov 29 2016, 10:31
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 8-04-11
Из: Ростов-на-Дону
Пользователь №: 64 227



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

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 20:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016