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

 
 
10 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> Linux начинающему
Tarbal
сообщение Aug 22 2013, 17:59
Сообщение #46


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(berkl @ Jun 27 2013, 11:26) *
Виртуальную машину поставить не самая трудная задача, могу и на старенький комп поставить UBuntu в качестве основной операционки. Мне всё ж не понятно обязателено ли софт под линуксовую плату пишется на компе из под Линукса? Если да то почему, просто хочу понять. Если например, мы имеем дело с FreeRTOS, то нет разницы на чем установлена среда Eclipse c компилятором GCC- Линукс, Винда - неважно. Но как дело доходит до Линуксового девайса, так всё, только на Линуксе, если под Линукс.


Спасибо всем, кто откликается на мои дурацкие вопросы a14.gif !


Линукс среда имеет конфигурацию, которая учитывается при компилировании. Например пути к инклудам и библиотекам.
Но если влом поставить виртуальную машину, то поставьте Cygwin и через его терминал и в его конфигурации все будет как на Линуксе.
Кстати множество пакетов на Винде работают под Cygwin.

Цитата(andrewlekar @ Jun 27 2013, 11:53) *
В общем да, обязательно ставить линукс для разработки. Винда, увы, не слишком для этого приспособлена: нет пакетного менеджера, нет мейка, нет стандартных линуксовых путей, нет баша. Почти весь опенсорс заточен под сборку мейком как минимум. Можно использовать cygwin или mingw, но это как секс в гамаке и линукс для разработчика - это практически стандарт.


Cygwin имеет все это. При установке надо выбрать нужные пакеты. А если не выбрали не беда. Потом запустить сетап апликацию (ты же самую что и для установки) и довыбрать все необходимое.

Цитата(sasamy @ Aug 7 2013, 11:02) *
Я бы как раз с TI связываться не стал - SDK, особенно драйверы ядра Linux левой ногой писаны. Из мощных процессоров на ARM у Freescale серия i.mx6 - лучше нее ничего не встретишь на рынке , а для мелочевки есть Vybrid - тут скорость и фичастость ядра Linux + реалтайм MQX в одном флаконе
http://www.freescale.com/webapp/sps/site/p....jsp?code=VF6xx
Раньше они использовали LTIB в качестве BSP, сейчас вовремя одумались и перешли на Yocto, собственно Arago у TI - те же я-ца только в профиль.


А мне TI больше нравится чем Freescale. Да и документация у них понятнее. Кстати Cortex A9 они раньше сделали чем Freescale iMX6X.

-------------

Сообщение отредактировал Tarbal - Aug 22 2013, 17:48
Go to the top of the page
 
+Quote Post
berkl
сообщение Aug 27 2013, 11:56
Сообщение #47


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

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Здравия,

Поставил Убунту и на неё Eclipse CDT+gcc, ковыряюсь потихоньку. Решил для начала запустить Модбас клиента поверх TCP. Надёргал из своего старого проекта под ПИК имплементацию клиента. Запустил, чё та работает. Но не понятная вещь возникает. Клиент (он же мой комп) зачем то дублирует ACK'и и свою же команду. Это зачем он ? В скриншоте видно, чёрные строчки. Запускал с ModbusPoll Master, под Виндой, там всё хорошо. Кстати, где можно взять готовую модбасную тестилку под Убунту?

Решил пока посмотреть в Интернете халявные библиотеки Модбаса под Линукс. Приглянулась вот эта http://libmodbus.org/ Но как её скрестить с моим Eclips'ом? Документация там, есть, но явно расчитана на уверенного линуксоида http://libmodbus.org/site_media/html/libmodbus.html . Непонятно также что значит Stable release is libmodbus v3.0.4 (2013-05-08) и Development release is libmodbus v3.1.0 (2012-06-22), вот здесь http://libmodbus.org/download/. Мне та какой релиз надо ? И дальше там ссылки на релизы под разные дистрибутивы Линукса, в том числе и под мою Убунту http://packages.ubuntu.com/search?keywords=libmodbus. Там ваще ничего не понятно. Если кто имел дело с этой либой дайте ссылочку плз почитать, ну или на пальцах объясните с какого краю подступится к ней.

Заранее благодарен.

Цитата(Tarbal @ Aug 22 2013, 20:59) *
А мне TI больше нравится чем Freescale. Да и документация у них понятнее. Кстати Cortex A9 они раньше сделали чем Freescale iMX6X.

-------------


А вот скажите, нафига мне документация на контроллер, если я к нему обращаюсь через библиотеки, драйвера Линукса?


Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Aug 27 2013, 12:07
Сообщение #48


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Stable надо брать. Там баги исправлены.
Во втором случае версию с большим номером, которая -dev (в верхней половине).

Это дело распаковывается, там должен быть файл
README, может быть INSTALL.
Их читать.

Традиционный путь компиляции подобных вещей на Унихах:
$./configure
$make
$sudo make install

configure может иметь опции,
надо запускать
./configure --help
все опции напечатает


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 27 2013, 13:16
Сообщение #49


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



---

Цитата(A. Fig Lee @ Aug 27 2013, 16:07) *
Stable надо брать. Там баги исправлены.
Во втором случае версию с большим номером, которая -dev (в верхней половине).

Это дело распаковывается, там должен быть файл
README, может быть INSTALL.
Их читать.

Традиционный путь компиляции подобных вещей на Унихах:
$./configure
$make
$sudo make install

configure может иметь опции,
надо запускать
./configure --help
все опции напечатает


Все верно. Однако зачастую при компиляции на стадии ./configure появляются сообщения об ошибках. Мол отсутствует пакет. В большинстве случаев это стандартная библиотека.
В таком случае надо поступить следующим образом:
допустим отсутствует библиотека bison.
apt-cache search bison

изучите список программ и установите то, что подходит при помощи команды
sudo apt-get install имя_из_списка_предыдущей_команды

По мере поступления проблем спрашивайте.

Сообщение отредактировал Tarbal - Aug 27 2013, 13:15
Go to the top of the page
 
+Quote Post
Canis Dirus
сообщение Aug 28 2013, 06:54
Сообщение #50


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

Группа: Участник
Сообщений: 136
Регистрация: 7-01-09
Из: Нефтеюганск
Пользователь №: 42 967



Цитата(A. Fig Lee @ Aug 27 2013, 18:07) *
Традиционный путь компиляции подобных вещей на Унихах:
$./configure
$make
$sudo make install

И всего за пять минут настроенная система превращается в тыкву слакварь. Если даже не хочется разбираться с тем, как создавать пакеты для своего дистрибутива, то есть ведь ещё и checkinstall


--------------------
С уважением, Алексей Шапошников.
Go to the top of the page
 
+Quote Post
berkl
сообщение Aug 28 2013, 09:47
Сообщение #51


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

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Цитата(Tarbal @ Aug 27 2013, 16:16) *
---



Все верно. Однако зачастую при компиляции на стадии ./configure появляются сообщения об ошибках. Мол отсутствует пакет. В большинстве случаев это стандартная библиотека.
В таком случае надо поступить следующим образом:
допустим отсутствует библиотека bison.
apt-cache search bison

изучите список программ и установите то, что подходит при помощи команды
sudo apt-get install имя_из_списка_предыдущей_команды

По мере поступления проблем спрашивайте.


Спасибо за поддержку beer.gif

Да, есть Readme, либа встала, была только маленькая заминка, надо было доставить autogen в убунту.
Есть там готовые примеры, которые предлагают откомпилировать из коммандной строки. Попробовал - получилось.

Но вот из Эклипса компильнуть не получается. Линкер не видит библиотечные функции,
хотя в modbus.h они присутствуют. Почему не видит ? Собственно тестовый проектик:


Код
#include <modbus/modbus-rtu.h>
#include <modbus/modbus.h>

#include "unit-test.h"

int main(void)
{
modbus_t *mb;
  uint16_t tab_reg[32];

  mb = modbus_new_tcp("127.0.0.1", 1502);
  modbus_connect(mb);

  /* Read 5 registers from the address 0 */
  modbus_read_registers(mb, 0, 5, tab_reg);

  modbus_close(mb);
  modbus_free(mb);

  while(1);
}


Ошибки:
"undefined reference to `modbus_new_tcp' "
" undefined reference to `modbus_connect' "
" undefined reference to `modbus_read_registers' "
"undefined reference to `modbus_close' "
"undefined reference to `modbus_free' "



С уважением.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Aug 28 2013, 11:12
Сообщение #52


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(berkl @ Aug 28 2013, 13:47) *
Но вот из Эклипса компильнуть не получается. Линкер не видит библиотечные функции,
хотя в modbus.h они присутствуют. Почему не видит ? Собственно тестовый проектик:


Скорее всего Вы не указали в Eclipse пути к библиотекам, не входящим в тулчейн. По работе с Eclipse есть отдельный разрел в форуме.
IMHO, лучше использовать makefile и при работе с Eclipse. Можно выбрать соответстующий вид проекта и собирать как в Eclipse, так и из командной строки. У Вас, судя по всему, уже есть необходимый makefile из примера.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Canis Dirus
сообщение Aug 28 2013, 11:44
Сообщение #53


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

Группа: Участник
Сообщений: 136
Регистрация: 7-01-09
Из: Нефтеюганск
Пользователь №: 42 967



Цитата(berkl @ Aug 27 2013, 17:56) *
Непонятно также что значит Stable release is libmodbus v3.0.4 (2013-05-08) и Development release is libmodbus v3.1.0 (2012-06-22), вот здесь http://libmodbus.org/download/. Мне та какой релиз надо ?

Да, кстати:
Код
╭─alexey@warrawoona  ~  
╰─$ apt-cache search modbus
collectd-core - statistics collection and monitoring daemon (core system)
libmodbus-dev - development files for the Modbus protocol library
libmodbus5 - library for the Modbus protocol
python-pymodbus - full Modbus protocol implementation


Это debian unstable, в убунте эта библиотека тоже никуда не делась


--------------------
С уважением, Алексей Шапошников.
Go to the top of the page
 
+Quote Post
berkl
сообщение Aug 28 2013, 13:01
Сообщение #54


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

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Цитата(mdmitry @ Aug 28 2013, 15:12) *
Скорее всего Вы не указали в Eclipse пути к библиотекам, не входящим в тулчейн. По работе с Eclipse есть отдельный разрел в форуме.
IMHO, лучше использовать makefile и при работе с Eclipse. Можно выбрать соответстующий вид проекта и собирать как в Eclipse, так и из командной строки. У Вас, судя по всему, уже есть необходимый makefile из примера.


Путь к библиотеке есть, на скриншоте видно gcc обращается к libmodbus.so по прописанному пути, но не находит в ней нужных для компиляции функций 05.gif . В makefile соваться неумелыми ручками пока не охота, пускай Эклипс с ним возится. Пока...

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
berkl
сообщение Aug 29 2013, 07:20
Сообщение #55


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

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Допускаю, что не компилируется в Эклипсе из-за того что ему не дал необходимые опции компилятора и компоновщика.

Взял команду "gcc ....." из библиотечного примера и переделал под себя. Компилируется.
Вот собственно команда:

gcc mb_test.c -o mbtest `pkg-config --libs --cflags libmodbus`

Здесь видно, что компилятор берет информацию о местонахождении библиотеки libmodbus и её заголовочных файлов из libmodbus.pc файла, он в папке /usr/local/lib. Также в .pc файле мы найдем дополнительные опции компилятора и компоновщика.

вот содержимое моего .pc файла:

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: modbus
Description: Modbus library
Version: 3.0.4
Libs: -L${libdir} -lmodbus
Cflags: -I${includedir}/modbus

Теперь поправьте меня если я не прав.
Понятно, что моему эклипсу содержимое файла libmodbus.pc никто не показывал, поэтому путь к библиотеке мы указываем в настройках проекта (Project-> Properies-> Paths and Symbols-> Library Paths-> "/usr/local/lib"), а заголовочный файл указываем в исходнике ( #include <modbus/modbus.h> ). Но остаются дополнительные опции компилятора и линкера, они должны быть тоже прописаны в настройках эклипса. Если я прав, то вопрос: как это сделать в этом, конкретном примере ?
Вопрос может не совсем к этой ветке относится, но заново объяснять проблему в другой ветке будет не правильно, наверное.

Спасибо

Update.

Скомпилировалось. В опциях линкера надо указывать не только путь к либам (-L) но и собственно названия используемых библиотек (-l). Намучился по глупости, но зато поумнел трохи twak.gif

Всем Спасибо !!!

Сообщение отредактировал berkl - Aug 29 2013, 07:53
Go to the top of the page
 
+Quote Post
berkl
сообщение Sep 13 2013, 06:36
Сообщение #56


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

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Цитата(A. Fig Lee @ Aug 27 2013, 16:07) *
Это дело распаковывается, там должен быть файл
README, может быть INSTALL.
Их читать.

Традиционный путь компиляции подобных вещей на Унихах:
$./configure
$make
$sudo make install

configure может иметь опции,
надо запускать
./configure --help
все опции напечатает


Именно это описано в README. А если надо собрать эту же библиотеку, но для использования в приложениях под какой-нибудь ARM ? Как тогда её собирать, устанавливать ?
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Sep 13 2013, 11:45
Сообщение #57


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(berkl @ Sep 13 2013, 02:36) *
Именно это описано в README. А если надо собрать эту же библиотеку, но для использования в приложениях под какой-нибудь ARM ? Как тогда её собирать, устанавливать ?

А "под какой нибудь АРМ" с налета может не получится.
Надо иметь кросс компайлер (например, CodeSourcery) и компилить
против тех херед файлов и библиотек, которые будут на этой системе.

Не факт что там теже хедеры, например.
Но если чето широкораспостраненное, то если запустить

./configure --help

Напечатает переменные, среди коих
--target
--build
--host
вот они и определяют чего куда где и для кого строить.

Икзампл:

../../../binutils-2.23/configure --target=arm-none-eabi- --prefix=$HOME/bin --enable-interwork --enable-multilib

Сообщение отредактировал A. Fig Lee - Sep 13 2013, 12:21


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 13 2013, 12:12
Сообщение #58


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(berkl @ Sep 13 2013, 10:36) *
Именно это описано в README. А если надо собрать эту же библиотеку, но для использования в приложениях под какой-нибудь ARM ? Как тогда её собирать, устанавливать ?


Можно воспользоваться сервисом http://www.timesys.com/
Раньше они компилировали бесплатно. Не знаю если они делают это бесплатно до сих пор.

Eсли у вас нету toolchain, где все уже настроено, то будет непросто.

Во первых вам нужно установить кросс компилятор от Code Sourcery http://www.mentor.com/embedded-software/so...s/lite-edition/
Tам будет префикс типа arm-none-linux-gnueabi- ко всем необходимым программам.
У меня они называются вот так:

arm-none-linux-gnueabi-addr2line
arm-none-linux-gnueabi-ar
arm-none-linux-gnueabi-as
arm-none-linux-gnueabi-c++
arm-none-linux-gnueabi-cc
arm-none-linux-gnueabi-c++filt
arm-none-linux-gnueabi-cpp
arm-none-linux-gnueabi-ct-ng.config
arm-none-linux-gnueabi-g++
arm-none-linux-gnueabi-gcc
arm-none-linux-gnueabi-gcc-4.4.4
arm-none-linux-gnueabi-gccbug
arm-none-linux-gnueabi-gcov
arm-none-linux-gnueabi-gdb
arm-none-linux-gnueabi-gprof
arm-none-linux-gnueabi-ld
arm-none-linux-gnueabi-ldd
arm-none-linux-gnueabi-nm
arm-none-linux-gnueabi-objcopy
arm-none-linux-gnueabi-objdump
arm-none-linux-gnueabi-populate
arm-none-linux-gnueabi-ranlib
arm-none-linux-gnueabi-readelf
arm-none-linux-gnueabi-run
arm-none-linux-gnueabi-size
arm-none-linux-gnueabi-strings
arm-none-linux-gnueabi-strip



Во вторых, надо будет установить все необходимые библиотеки под ARM в какую-нибудь директорию.

В третьих создать директорию для установки результатов компиляции
И наконец в четвертых вместо ./configure вы будете вынуждены указать параметры, описывающие все вышеназванные детали. Скрипт configure имеет необходимые ключи для указания вышеперечисленного. Возможно что-то надо указать через environment variables.

Теперь, когда вам известно что надо делать, можно найти детали в интернете.

Спасибо A. Fig Lee напомнил, что еще инклюды надо поставить.

Сообщение отредактировал Tarbal - Sep 13 2013, 12:07
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Sep 13 2013, 15:12
Сообщение #59


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Для генерации toolchain со всем окружением можно воспользоваться Buildroot. На начальном этапе освоения очень помогает. Есть хорошая документация.
Потом можно подключить полученный тулчейн к Eclipse. Здесь сказано как.
Go to the top of the page
 
+Quote Post
berkl
сообщение Sep 19 2013, 09:42
Сообщение #60


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

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Цитата(A. Fig Lee @ Sep 13 2013, 15:45) *
А "под какой нибудь АРМ" с налета может не получится.

./configure --help

Напечатает переменные, среди коих
--target
--build
--host
вот они и определяют чего куда где и для кого строить.



Цитата(Tarbal @ Sep 13 2013, 16:12) *
Eсли у вас нету toolchain, где все уже настроено, то будет непросто.

Во первых вам нужно установить кросс компилятор от Code Sourcery

Во вторых, надо будет установить все необходимые библиотеки под ARM в какую-нибудь директорию.

В третьих создать директорию для установки результатов компиляции
И наконец в четвертых вместо ./configure вы будете вынуждены указать параметры, описывающие все вышеназванные детали. Скрипт configure имеет необходимые ключи для указания вышеперечисленного. Возможно что-то надо указать через environment variables.


Toolchain для платы есть, но не от Code Sourcery. Это- fsl-linaro-toolchain , уже стоИт.

1. Запустил "./configure --help", в описании есть ключи:

Цитата
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]


Значит для ключа host мне надо указать имя компилятора. Для теста попробовал в терминале

Цитата
./configure --host=/usr/bin/gcc


В результате получил ошибки:

Цитата
dim@dim-System-Product-Name:~/temp/libmodbus-3.0.4$ ./configure --host=/usr/bin/gcc
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for /usr/bin/gcc-strip... no
checking for strip... strip
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... i686-pc-linux-gnu
checking host system type... Invalid configuration `/usr/bin/gcc': machine `/usr/bin/gcc' not recognized
configure: error: /bin/bash ./config.sub /usr/bin/gcc failed
dim@dim-System-Product-Name:~/temp/libmodbus-3.0.4$


Что её не устраивает ?

2. Что указывать надо для ключа build ?

В приложении то что выдал --help

Update:

Нашел, для ключа host указывается не само имя компилятора а его префикс. Если само имя компилятора указывать, то надо прописывать руками и имя линкёра и всё остальное, а-ля СС=arm-xxxx-gcc, LD=arm-xxxxx-ld.... Открыл MakeFile, созданный скриптом configure по умолчанию.Там нашел
Цитата
host = i686-pc-linux-gnu


попробовал запустить в терминале

Цитата
./configure --host=i686-pc-linux-gnu


Вроде получилось.

Что такое префикс компилятора и как его узнать ?

Сообщение отредактировал berkl - Sep 19 2013, 12:01
Прикрепленные файлы
Прикрепленный файл  Log_help.txt ( 5.26 килобайт ) Кол-во скачиваний: 43
 
Go to the top of the page
 
+Quote Post

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

 


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


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