TrueCyrix 0 3 июня, 2014 Опубликовано 3 июня, 2014 · Жалоба По моему у меня уже начинается сдвиг... Объясните мне, что такое виртуальные адреса? Что такое ассоциативная память? Что ещё за буфер ассоциативной трансляции? Как из физического адреса 0х30000000 получается виртуальный 0х80000000 ? А зачем??? Я писал программы для MCS-51 и никогда не встречал подобного ужаса. :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 3 июня, 2014 Опубликовано 3 июня, 2014 · Жалоба вы сейчас с кем говорите:)? У меня возникает устойчивое подозрение что не один USB виноват в ваших бедах:)... вы куда и зачем в виртуальные адреса то полезли? Это все из раздела операционных систем вроде как, где приложениям выделяется своя память (страничка), внутри приложения обращаются по внутренним адресам, а операционка уже эти страницы памяти раскладывает по реальной памяти. ассоциативная память - это ваще крутая штука, как бы память с адресацией по содержимому, в ней очень быстро, фактически в 1 такт можно найти данные, если они там сохранены... Только каким это все боком к USB? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TrueCyrix 0 3 июня, 2014 Опубликовано 3 июня, 2014 · Жалоба Только каким это все боком к USB? Ну тут были советы поставить WinCE, потому как там уже реализована поддержка USB клавиатур и прочего, ну вот я и написал свой загрузчик, который копирует содержимое из flash в ОЗУ, а потом звонит по адресу в ОЗУ и запускает программу. Примитивную программу, выводящую картинку из nand в экран я написал, впринципе работает, только медленно - видно как прорисовываются пиксели. Так вот пробовал я загрузить таким образом eboot для последующей загрузки самого ядра nk.bin и получил сбой, посмотрел дебаггером и увидел, что eboot работает совсем в другой области адресов в озу 0x8c200000... и иже с ними, как я понял - это виртуальные адреса. Вот теперь я окончательно запутался. Даже не знаю, толи проще копать дальше и добиваться загрузки wince, а потом писать своё приложение на базе этой CE или же пойти в другую сторону и написать свою программу обработки hid устройства по USB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 3 июня, 2014 Опубликовано 3 июня, 2014 · Жалоба win CE - это операционка, кроме поддержки стэков USB и прочих, вы получаете и контроль приложений (чтобы они друг другу память не гадили) и многопоточность, и библиотеки программные и так далее... Если бы я был в этой ситуации я бы оценил выгоды которые дает мне операционка, и только если бы их очень много пошел по пути ковыряния ее. Но это только потому что для меня USB не магическая книга, а операционка - магия.... Было бы наоборот или равнозначно точно бы операционку делал, я что-то заочно начинаю их уже любить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryM 0 3 июня, 2014 Опубликовано 3 июня, 2014 · Жалоба Даже не знаю, толи проще копать дальше и добиваться загрузки wince, а потом писать своё приложение на базе этой CE или же пойти в другую сторону и написать свою программу обработки hid устройства по USB. IMHO, с linux или WinCe Вы получите еще и ethernet и другие плюшки. Там где ось не нужна, она не нужна, но здесь думаю, подняв ось, далее будет проще общаться с дисплеем, клавиатурой, мышой и пр. здесь смотрели? http://www.mt-system.ru/catalog/samsung-semiconductors Там и u-boot и загрузчик из NOR/NAND приводятся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 3 июня, 2014 Опубликовано 3 июня, 2014 · Жалоба win CE - это операционка, кроме поддержки стэков USB и прочих, вы получаете и контроль приложений (чтобы они друг другу память не гадили) Ну - это можно и под обычным uCOS на M3-ядре сделать. Защита памяти в M3 есть. В хуке uCOS на переключение задачи прописать работу с MPU M3. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 3 июня, 2014 Опубликовано 3 июня, 2014 · Жалоба никто не спорит, потому uCOS тоже операционка:)... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryM 0 4 июня, 2014 Опубликовано 4 июня, 2014 · Жалоба Перечитал еще раз Ваши сообщения и возник у меня вопрос: а нужна ли Вам вообще клавиатура? Может просто повесить несколько кнопок на IO и опрашивать их. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TrueCyrix 0 4 июня, 2014 Опубликовано 4 июня, 2014 · Жалоба Перечитал еще раз Ваши сообщения и возник у меня вопрос: а нужна ли Вам вообще клавиатура? Может просто повесить несколько кнопок на IO и опрашивать их. Несколько - это маловато. Все 102 кнопки нужны. Это будет терминал ввода данных. Не ужели s3c2410 настолько редкий процессор, что для него нет ни одного примера работы с USB клавиатурой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryM 0 4 июня, 2014 Опубликовано 4 июня, 2014 · Жалоба Не ужели s3c2410 настолько редкий процессор, что для него нет ни одного примера работы с USB клавиатурой? Он не редкий, он старый. Уже EOL давно. В свое время активно использовался именно под ОСью, а в этом случае уже есть поддержка USB, Ethernet, Video и пр. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TrueCyrix 0 4 июня, 2014 Опубликовано 4 июня, 2014 · Жалоба 1) включение питания клавиатуры 2) клавиатура - AAh (я готова) 3) компьютер - EDh (сброс индикаторов) 4) клавиатура - FAh (приняла/поняла/подтверждаю) 5) компьютер - F2h (дай мне свой ID) 6) клавиатура - FAh (приняла/поняла/сейчас дам) 7) клавиатура - ABh (послала первый байт ID) .... ну и т.д. и т.п. компьютер слушает clock от клавиатуры и читает данные, или сам посылает - это всё для PS/2 а как общаться с USB клавиатурой? Примеров нет, вот что плохо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 4 июня, 2014 Опубликовано 4 июня, 2014 · Жалоба а как общаться с USB клавиатурой? Примеров нет, вот что плохо. ходим по кругу. USB - клавиатура - такой штуки нет. Есть HID клавиатура. И общение (в ваших терминах) такое 1) клавиатура - потребляю я включилась 2) компьютер ты кто? 3) клавиатура - я HID клавиатура 4) компьютер - ну давай работай 5) клавиатура, ОК - работаю все дальше все само, если глубже там компьютер будет раз в 1 мСек или 125 мкСек зависит от режима опрашивать клавиатуру нет ли у нее данных, а та будет сообщать коды нажатых кнопок если есть такие... я тут придумал для вас хорошее решение! вам надо взять промежуточное устройство которое USB-HID переделает в UART, а на целевом проце уже обрабатывать UART передачу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TrueCyrix 0 4 июня, 2014 Опубликовано 4 июня, 2014 · Жалоба Вы хотите сказать, что хост постоянно "клюёт" HID устройство с целью узнать нет ли там данных и если есть, то заклочить (clock) устройство и получить данные побитно? А зачем постоянно то? На это ведь уходит время и ресурсы. По 8 бит читать пакеты через uart? В принципе возможно, надо попробовать, только как быть с прерыванием? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 4 июня, 2014 Опубликовано 4 июня, 2014 · Жалоба Вы хотите сказать, что хост постоянно "клюёт" HID устройство с целью узнать нет ли там данных и если есть, то заклочить (clock) устройство и получить данные побитно? А зачем постоянно то? На это ведь уходит время и ресурсы. Не один я это хочу это сказать. Это принцип работы USB в целом. Все обмены по шине инициируются хостом, для LS,FS устройств величина кадра 1 мСек, для HS 125 мкСек. Обмены HID устройства идут по iterrupt конечной точке, которая отправляет данные фактически в ближайший фрейм. Это все делается на железном уровне и само. Клавиатура получив нажатие кнопки формирует отчет входной отчет (отчет в хост) с кодом кнопки, отчет будет забран хостом в ближайший фрейм. Фрейм его обработает, выставить ACK, NACK или что ему понадобиться, проверит суммы, выделит данные и поставит флаг что пришли данные. Вы их считаете и обработаете. преобразование HID - UART нету, те преобразователи USB-UART что есть это CDC класс, он клавиатуру не обработает. Но если вы возьмете что-то на базе LPC1768, то я вам давал ссылку на готовый стэк что обработает клавиатуру. Наверняка можно найти что-то и поменьше что сможет обработать клавиатуру и выдать вам данные в каком-то понятном виде, UART или что-то типа. Это близко к идее использовать PS/2, только интерфейс будет стандартный... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TrueCyrix 0 4 июня, 2014 Опубликовано 4 июня, 2014 · Жалоба Да уж... не всё так просто. Ладно, я ещё немного побадаюсь с USB-хостом и если уж совсем ничего не получится, попробую собрать промежуточное устройство. Мне бы не хотелось тратить на это целый uart, он мне нужен для других целей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться