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

Linux на демоплате SBC8140 c OMAP3730

Приветствую уважаемые, некоторое время назад у меня возникла необходимость познакомиться с Ebedded Linux. Под руки попалась демоплата SBC8140 с мезонином Mini8510, несущим на себе, в свою очередь, микроконтроллер OMAP3730 c DSP и ARM ядрами. Некоторое время я повозился с данной аппаратурой, результатами чего желаю поделиться, вдруг кому-то (такому же чайнику как я :) ) окажется полезным.

Плата поставляется с предустановленными в NANDFLASH загрузчиком 1-го уровня, U-Boot, ядром Linux и rootfs. Естественно, толком не почитав документацию с прилагаемого к плате CD, я сразу же в ходе своих экспериментов затер NAND. Вобщем-то это не страшно, в юзер мануале имеются инструкции по восстановлению, однако, тут кроется один маленький нюанс. Для восстановления содержимого NAND используется SD карта, которую нужно предварительно отформатировать в FAT32 утилитой, указанной в мануале, так вот, версия утилиты должна быть строго та самая, которая указана в документе, иначе (не знаю почему), загрузчик не может стартовать с SD карты. Если что, утилитка у меня есть, могу поделиться.

У меня оказался свободный ноут, который решено было использовать как Host. На ноут поставил Ubuntu 14.04 LTS и по инструкциям из мануала установил toolchain. На этом шаге никаких проблем не возникло.

Далее, перед тем как скомпилить свой первый хело-ворлд, я озадачился связью между host-PC(мой ноут) и демоплатой.

Желательно, чтобы скомпилированный с помощью кросс-платформенного компилятора на host-PC файл (например helloworld), сразу же оказывался доступным для запуска на демоплате. Знающие люди посоветовали использовать NFS. Делал так:

0. Подключаем host-PC и демоплату к локальной сети (я для надежности воткнул их в один свич)

1. Запускаем на host-PC NFS-сервер. Для этого его надо скачать и установить:

sudo apt-get install nfs-kernel-server nfs-common

2. В файл /etc/exports добавляем строчку

/MyDir 192.168.88.230/255.255.255.0(rw,insecure,nohide,all_squash,anonuid=1000,anongid=1000,no_subtree_check)

это значит открыть доступ к папке MyDir (заменить на Ваш путь) клиенту, расположенному по адресу 192.168.88.230 Назначил этот адрес демоплате вручную (как показано ниже). Выбрал именно этот, т.к. команда ifconfig на host-PC сказала, что его адрес 192.168.88.235, ну я решил демоплату поселить поблизости. Заранее в MyDir накидайте несколько файлов в тестовых целях.

3. Подсоединяем демоплату по RS-232 к какому-нибудь компу где запущено консольное приложение, включаем ее и дожидаемся пока загрузится ядро. Чтобы смонтировать удаленную папку выполняем такие действия:

4.

mkdir /target

(например /target, а можете куда Вам больше нравится)

5.

sudo chmod 777 /target

не уверен, что эта команда необходима, но пока все настроил, много раз сталкивался с тем, что не работает именно из-за отсутствия прав.

6.

ifconfig eth0 192.168.88.230

В результате должно появиться сообщение, что link up т.д. Кстати, в ходе загрузки ядра появляется сообщение link down и сети, соответственно сразу после загрузки нет, как это исправить пока не разобрался, может кто подскажет.

7.

mount -o port=2049,nolock,proto=tcp -t nfs 192.168.88.235:/MyDir

адрес Вашего host-PC и полный путь к экспортируемой папке, кстати, без "-o port=2049,nolock,proto=tcp" не работает, может кто-нибудь знает почему?

Теперь проверяем:

9.

ls -la /target

должны стать видимыми файлы, к-рые были накиданы на host-PC в папку MyDir

Для удобства написал маленький скрипт mounthost (опять таки, проверьте права у этого файла) с командами ifconfig и mount и добавил его в /etc/init.d с соответствующими ссылками на него: /etc/rc5.d/S19mounthost и /etc/rc5.d/K19mounthost (ссылки создавать ln -s, без ключа -s скрипт не запустится)

 

Пока не разобрался как с помощью nfs смонтировать rootfs, вероятно, плохо искал, кто знает где, ткните носом.

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


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

1. Чтобы каждый раз после перезагрузки не выполнять ifconfig добавьте в файл /etc/network/interfaces строки:

auto eth0

iface eth0 inet static

address 192.168.88.230

netmask 255.255.255.0

 

2. Чтобы каждый раз после перезагрузки не выполнять mount выполните:

sudo echo "192.168.88.235:/MyDir /target nfs auto,noatime,nolock,bg,nfsvers=3,intr,tcp,actimeo=1800 0 0" >> /etc/fstab

 

3. По поводу сетевой загрузки, попробуйте так:

Настроить NFS-сервер разрешив доступ к папке с rootfs.

Грузимся в U-Boot и выполняем команды (подправить нужное):

setenv bootargs consoleblank=0 mem=256M console=ttyS0,115200n8 mpurate=1000 vram=12M omapdss.def_disp=lcd omapfb.mode=lcd:4.3inch_LCD root=/dev/nfs rw rootwait earlyprintk noinitrd ip=192.168.88.230:192.168.88.235:192.168.88.1:255.255.255.0:uspd:eth0 nfsroot=192.168.88.235:/rootfs_dir,nolock

boot

 

PS: А вообще, лучше тему перенести в раздел Linux.

Изменено пользователем BaN

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


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

BaN, очень признателен, ценные сведения! Как до работы доберусь, попробую применить.

А сейчас попробую понять как перенести тему... я тут на форуме больше читатель, чем писатель :)

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


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

BaN, очень признателен, ценные сведения! Как до работы доберусь, попробую применить.

А сейчас попробую понять как перенести тему... я тут на форуме больше читатель, чем писатель :)

Для переноса темы можете написать в личку кому-нибудь из модераторов, которые сейчас находятся на форуме.

Список модераторов:

http://electronix.ru/forum/index.php?act=S...mp;CODE=leaders

Кто онлайн можно посмотреть в самом конце страницы:

http://electronix.ru/forum/

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


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

Спустя время потребовалось проделать ту же процедуру с другой платой - TerAsic DE1-SoC. Собственный пост оказался полезен, так как я уже забыл как это делается. На всякий случай, дописываю сюда один нюанс, на преодоление которого ушло несколько часов, чтобы в последствии снова можно было вспомнить. Небольшое отличие заключалось в том, что в качестве Host-PC выступал ноутбук с Win7, в которой запускалась виртуальная машина VirtualBox, а в ней Ubuntu. Так вот, в настройках сети виртуальной машины по умолчанию стоит NAT, а для того, чтобы можно было подключиться извне по NFS, должно быть установлено "Сетевой мост". Тогда гостевая ОС, в моем слу чае Ubuntu, получит правильный физический IP адрес. Так кажется... :)

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


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

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

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

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

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

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

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

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

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

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