08.01.2014, 00:46 | #1 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Нужна помощь программистов
Подскажите может кто в курсе, есть ли в openwrt стандартная функция или где то в конфигах нужно поправить?
Мне требуется что бы роутер изменил представление о хранении данных в памяти с “Big-endian” на представление о общепринятом виде “Little-endian” |
10.01.2014, 14:56 | #2 |
Junior Member
Регистрация: 09.01.2014
Сообщений: 5
Вес репутации: 0 |
Re: Нужна помощь программистов
Порядок байт, исключительно зависит от архитектуры процессора, и нет никаких конфигов. Для конвертирования порядка байт в памяти существуют несколько С функций, 16 битные: htons, ntohs и 32 битные: htonl, ntohl. Более подробно тут http://www.gnu.org/software/libc/man...yte-Order.html
|
10.01.2014, 15:22 | #3 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Нужна помощь программистов
Спасибо!
Мне пришлось написать свой конвертер |
10.01.2014, 15:41 | #4 |
Senior Member
Регистрация: 21.09.2013
Сообщений: 109
Вес репутации: 0 |
Re: Нужна помощь программистов
TP-link 3020 на mips контроллере собран, в нем возможно переключать порядок байт. На практике никогда этим не занимался, глюков при переключении может быть вагон. Лучше хранить данные в контейнерах не зависящих от порядка байт.
И ни в коем случае не использовать битовые поля, особенно размерностью по 5-7 бит, особенно на мипсе, особенно для передачи по уарту, особенно на машину с другим порядком байт. Шутка |
10.01.2014, 17:12 | #5 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Нужна помощь программистов
Если читать потоковые данные(звук, видео), то конвертер уже не стоит использовать
Так что вопрос открыт. |
10.01.2014, 17:25 | #6 | |
Senior Member
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 689 |
Re: Нужна помощь программистов
Admin
Цитата:
При этом читает, отображает, воспроизводит нормально, уже в Little-endian? |
|
10.01.2014, 17:48 | #7 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Нужна помощь программистов
Я на потоке еще не проверял
Проверял только на заполнении массива из переменных В итоге получил фаил с неправильными данными Но что будет если я буду читать поток в переменную типа unsigned short, сохраняю в массив, а массив сохраню в фаил ? |
10.01.2014, 17:55 | #8 |
Senior Member
Регистрация: 21.09.2013
Сообщений: 109
Вес репутации: 0 |
Re: Нужна помощь программистов
Данные от драйвера в void и с помощью memcpy в файл или в память. Если в риалтайме не успевает выполниться, то конвертация и любая другая обработка выполняется после получения всех данных.
unsigned short - 2 байта, будет херня. |
10.01.2014, 18:18 | #9 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Нужна помощь программистов
Сначала в массив, потом в фаил или stdout
|
10.01.2014, 18:33 | #10 |
Senior Member
Регистрация: 21.09.2013
Сообщений: 109
Вес репутации: 0 |
Re: Нужна помощь программистов
Звук и видео в консоль?
Что надо сделать, какая задача? Обрабатывать данные на роутере? Тогда порядок байтов не важен. Драйвер сам все отдаст в том порядке который нужен роутеру (при условии что драйвер существует и установлен). Если эти данные потом надо передать на ПК с другим порядком байт, то конвертация неизбежна. ЕЕ можно выполнить как на стороне роутера непосредственно перед передачей, так и на стороне ПК после приема. Запись данных куда бы то ни было кусками по 2 байта конвертацией не является. |
Здесь присутствуют: 7 (пользователей: 0 , гостей: 7) | |
|
|