LINUX.ORG.RU

Как поставить программу или драйвера.


2

2

Всем добрый день. Нужно поставить программу или драйвера на linux для встроенной системы. Но всякие там dpkg, aptitude, любые другие установщики и даже компилятор gcc отсутствует, и вообще linux максимально урезан. Как действовать? Кто знает, помогите пожалуйста.

Ответ на: комментарий от Deleted

Драйвера на wifi модуль. Вот этот: https://www.bluegiga.com/en-US/products/wifi-modules/wf111-wifi-module/

Процессорный модуль поставлялся с предустановленным firmware, включающим в себя U-BOOT, Linux kernel, rootfs image. Вот на эту систему и нужно поставить драйвер. В консоли uname -a выдала следующее: Linux acs 2.6.37 #35 PREEMPT Sat Jul 6 20:09:33 MSK 2013 armv5tejl GNU/Linux

podovalov5 ()

1. Взять у поставщиков процессорного модуля тулчейн для кросс-компиляции.

2. Посмотреть на сайте поставщиков или спросить у них, что они используют для сборки rootfs (скорее всего, buildroot), скачать исходники с их патчами (у них же с сайта). Собрать rootfs с помощью кросс-компилятора, добавив туда сборку нужного драйвера в качестве модуля ядра. ЕМНИП, в buildroot такая возможность есть. Получишь новую rootfs со своим модулем.

3. Залить новую rootfs на плату с помощью загрузчика u-boot. Как это сделать, опять же смотри на сайте производителя.

4. Подцепиться к рабочей системе, перемонтировать rootfs на rw, прописать драйвер в автозагрузку.

Можно обойтись без пункта 3 и просто выдрать скомпилированный модуль из buildroot'а. Но тогда его надо будет как-то залить на плату, например по ftp, однако для этого на плате должен быть ftp-клиент.

P.S.: Основная мысль этого комментария - изучи сайт и форум производителя процессорного модуля, там наверняка должно быть расписано, как сделать все, или почти все, что тебе надо.

solovey ★★ ()
Последнее исправление: solovey (всего исправлений: 1)
Ответ на: комментарий от solovey

Спасибо большое. Очень разумный совет. Буду пытаться что-нибудь сочинить.

podovalov5 ()
Ответ на: комментарий от solovey

Кое-что сдвинулось...

solovey, по твоему совету я связался с поставщиками и мне дали материал, достаточно подробный, для того что бы я самостоятельно установил кросс-компилятор «Sourcery G++ Lite 2009q1-203 for ARM» и SDK (DVSDK для процессора OMAP L138). Я это сделал. Я даже создал конфигурацию ядра по умолчанию командой make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- som_am180x_defconfig и запустил программу конфигурации ядра make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig. Но могу ли я через эту программу конфигурации установить драйвера модуля wifi? И в инструкции (вот она http://files.mail.ru/51A9E15B050248038242CD362969FC1D), какую мне дали, нет ни слова про файловую систему и про загрузчик. Можешь еще раз направить в нужном направлении?

podovalov5 ()
Ответ на: Кое-что сдвинулось... от podovalov5

Сборка ядра - это хорошо, но если в ядре нет возможности включить интересующий тебя драйвер, то это пока-что мало поможет. А вот кросс-компилятор будет полезен.

Ты же говорил, что в плату прошита rootfs. Она точно также, как и ядро, собирается с помощью кросс-компилятора под конкретную железку.

Приведу пример. Я работал с платой Tion от zao-zeo. У них на сайте есть вот такая страничка.

Обрати внимание на раздел "Корневая файловая система" - тебе нужно что-то подобное для своей платы.

Как ты можешь заметить, там КФС собирается на основе BUILDROOT'а. Так что дальше надо читать, как в buildroot добавить сборку интересующего тебя модуля. Здесь с ходу просветить не могу, гугл в помощь.

Затем, как я уже писал, либо заливаешь новую КФС на плату, либо отдельно выдираешь модуль и добавляешь его в свою КФС.

P.S.: И еще, почитай описание разметки LORCODE :)

solovey ★★ ()
Ответ на: комментарий от solovey

Выяснилось что rootfs собирается с использованием buildroot.

Но ребята, с которыми я веду переписку по поводу установки драйверов на свою плату, еще больше запутали, написав:

Однако, м.б Вас устроит такое решение без пересборки rootfs: на NAND-e выделена область которая монтируется в папку /mnt/nand при старте. Если положить файл в эту папку, то он останется после снятия питания. Также, при старте, выполняется файл /mnt/nand/postup.sh в который можно записать insmod wi-fi модуля

А вообще, правильно ли я предполагаю, что если я размещу все файлы драйверов, которые мне предоставляет производитель модуля Wi-Fi в нужных каталогах (у них на сайте есть инструкция):

  • /lib/modules/KERNEL_VERSION/extra/unifi_sdio.ko
  • /lib/firmware/unifi-sdio-1 -> unifi-sdio-0
  • /lib/firmware/unifi-sdio-0/staonly.xbv
  • /lib/firmware/unifi-sdio-0/ap.xbv
  • /lib/firmware/unifi-sdio-0/mib111_drv_coex.dat
  • /lib/firmware/unifi-sdio-0/mib111_drv_led.dat
  • /lib/firmware/unifi-sdio-0/mib111_drv_coex_led_etsi.dat
  • /lib/firmware/unifi-sdio-0/ufmib.dat -> mib111_drv_led.dat
  • /lib/firmware/unifi-sdio-0/mib111_drv_coex_etsi.dat
  • /lib/firmware/unifi-sdio-0/mib111_drv.dat
  • /lib/firmware/unifi-sdio-0/mib111_drv_coex_led.dat
  • /usr/sbin/unififw
  • /usr/sbin/unifi_helper
  • /usr/sbin/unifi_config


то Wi-Fi заработает? Слишком просто, конечно, чтобы быть правдой.
Но зачем тогда драйвера поставляются и в виде файлов собранных статически (список выше), а не только в виде исходников?

podovalov5 ()
Ответ на: комментарий от podovalov5

Если файлы собраны под нужную архитектуру, то разместишь, и все заработает... скорее всего. Автозагрузку надо будет прописать, возможно... Но если архитектура не та (а скорее всего так и есть), то надо собирать самому.

Но ребята, с которыми я веду переписку по поводу установки драйверов на свою плату, еще больше запутали, написав:

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

Тебе говорят, что есть область физической памяти, которая не перезаписывается. Все, что ты положишь туда, будет сохраняться. Эта область после старта доступна в /mnt/nand. Там же лежит скрипт, который выполняется при запуске.

Если ты соберешь свой драйвер как модуль ядра, то получишь файл, условно wifi_module.ko. Если ты положишь этот файл в /mnt/nand, а в скрипт /mnt/nand/postup.sh в конец припишешь

insmod /path/to/wifi_module.ko
то при старте системы твой драйвер будет подгружаться.

Подробнее про то, что делают insmod, rmmod, lsmod и т.д. можно прочитать в man'е.

solovey ★★ ()
15 августа 2014 г.
Ответ на: комментарий от solovey

Всем привет. Есть тут программисты MCU ARM Cortex-M4 (STM32F4)? Есть задача заупровлять модулем WF111.

virtual9900 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.