Отговори на тема  [ 9 мнения ] 
търся помощ за CAN, J1939, bitfield codec 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 9:32 pm
Мнения: 676
Мнение търся помощ за CAN, J1939, bitfield codec
Опитвам се да проумея endian разбирането в една библиотека за bitfield codec в GitHub.
(Някъде бях мярнал, че тази библиотека се ползва във Форд, за codec за битови полета за CAN, J1939 протокола)

В цитираната библиотека,
във файла 8byte.c,
във функцията uint64_t eightbyte_get_bitfield()
и подобните, разликата между Litle и Big endian е единствено едно преподреждане на целия пакет:
Код:
if(data_is_big_endian) {
        source = __builtin_bswap64(source);
}


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

В приложение съм постнал тълкуването на Brusa за подредбата на битови полета

ПИТАНЕТО:
Има ли общоприето тълкуване на Big/Litle endian за подреждането на битови поледа с различна дължина в байтовете на пакета?

ПП Ако имате логове, тестове, картинки или документация от различни фирми по темата - ще ми бъде много полезно :)


Прикачени файлове:
bitfields_brusa.jpg
bitfields_brusa.jpg [ 142.21 KiB | Прегледано 1426 пъти ]
Вто Фев 26, 2019 5:22 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 1:01 pm
Мнения: 1798
Местоположение: Варна
Мнение Re: търся помощ за CAN, J1939, bitfield codec
Това е най-идиотското нещо от CAN. Не е само за J1939.
И много подвеждащо е че на много места го водят като Little/Big Endian. Щото в случая става дума за преподреждане на битовете.
Не съм поглеждал кода от линка в GitHub, Но диаграмите са верни. Като в моята скромна практика съм срещал само втория вариант.
Имай предвид че изпращането започва от бита най-горе в ляво, после ги кара по хоризонталния ред до края на реда. След което минава на най-левия бит от следващия ред и т.н.

_________________
Най-опасният враг на истината и свободата е мнозинството.


Вто Фев 26, 2019 7:58 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 9:32 pm
Мнения: 676
Мнение Re: търся помощ за CAN, J1939, bitfield codec
Zdrav написа:
..., Но диаграмите са верни. Като в моята скромна практика съм срещал само втория вариант...

Благодаря :), ако имаш логове от някакво устройство, чийто декодирани стойности са ясни, би ли могъл да ги споделиш?


Сря Фев 27, 2019 9:36 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 12:58 pm
Мнения: 4571
Местоположение: US
Мнение Re: търся помощ за CAN, J1939, bitfield codec
В J1939 стандартно данните са само Little Endian, т.е. втората диаграма.
Номерацията на битовете в един байт започва от единица, отдясно е младши,
отляво е старши битът (SAE J1939-71). Не съм сигурен дали J1939 стандарта
позволява в Proprietary Messages данните да са в Big Endian, трябва да проверя,
но съм почти на 99% сигурен, че не го позволява :-)

Функцията __builtin_bswap64() е предназначена за конвертиране на 64-битови числа
от/към Big/Little Endian, с bit order вътре в байта отляво старши, отдясно младши. При
друг bit order само с прост swap на байтове няма да стане.

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Сря Фев 27, 2019 2:25 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 9:32 pm
Мнения: 676
Мнение Re: търся помощ за CAN, J1939, bitfield codec
Има маса фирми, които в спецификациите си имат J1939 съобщения , и заедно с тях - някакви измислени съобщения - нямам предвид J1939 Proprietary Messages, а съвсем измислени съобщения, на които CAN ID не се формира както е в J1939.
Долу поствам един пример - на картинката в червено са заградени измислените съобщения, в синьо - J1939, a в лилаво са endian-ите.
Та с тези, смесените, се боря най-трудно :)


Прикачени файлове:
brusa.jpg
brusa.jpg [ 225.1 KiB | Прегледано 1338 пъти ]
Сря Фев 27, 2019 2:37 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 1:01 pm
Мнения: 1798
Местоположение: Варна
Мнение Re: търся помощ за CAN, J1939, bitfield codec
логове нямам.
за "странните" ID- та изглежда че са 11 битови. по принцип е позволено в една мрежа да имаш съобщения и с 11 и с 29 битови ID-та.
имал съм такава ситуация, макар че беше временно, докато трае развоя, имахме ECU -та които пращаха съобщения с 11 битови ID- та.
накрая всички съобщения бяха с extended 29 bit ID-та.

_________________
Най-опасният враг на истината и свободата е мнозинството.


Сря Фев 27, 2019 11:51 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 9:32 pm
Мнения: 676
Мнение Re: търся помощ за CAN, J1939, bitfield codec
Това, че са 11 и 29 бита е маловажно (Пишеш, че в една мрежа сте ги имали - по-горе е описание на един девайс, който има и двата вида Id) - за нашите драйвери при приемане няма значение какво е Id, а при предаване се указва и всичко е ок.

Проблемът е че нямам достатъчно информация за bitfield подредбите, за да си направя тестовете.


Пет Мар 01, 2019 2:19 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 1:01 pm
Мнения: 1798
Местоположение: Варна
Мнение Re: търся помощ за CAN, J1939, bitfield codec
предполагам не търсиш информация за точно тези "измислени" съобщения, които се виждат на твоите картинки.
Щото няма как да ги видиш в "мои" логове. Съжалявам, но не пазя никакви логове или .dbc файлове и явно не мога да ти бъда полезен за да си направиш тестовете.

_________________
Най-опасният враг на истината и свободата е мнозинството.


Пет Мар 01, 2019 7:50 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 9:32 pm
Мнения: 676
Мнение Re: търся помощ за CAN, J1939, bitfield codec
:), да, така е. Търся информация, споделен опит, за всякакви възможни подредби на всякакви девайси.


Пет Мар 01, 2019 8:24 am
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 9 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни