Jump to content

    

Vishay

Свой
  • Content Count

    47
  • Joined

  • Last visited

Everything posted by Vishay


  1. Пример из предыдущего поста, переделанный в виде приложения для Linux (irq_tc1), с уменьшенной до 1 Гц частотой сигналов на выводах процессора, разрешением прерываний от таймера TC1 (irq18), и модулем ядра (intrpt.ko), в котором находится обработчик прерывания IRQ18, печатающий количество произведенных вызовов обработчика. Модуль intrpt.ko откомпилирован для ядра 2.6.16. После загрузки модуля командой #./insmod intrpt.ko в файле /proc/interrupts появляется строчка: 18: 0 test_TC1_irq_handler Запускаем далее #./irq_tc1 и наблюдаем увеличение раз в секунду количества обработанных прерываний от TC1 в cat /proc/interrupts, выдачу обработчиком прерывания по printk величины счетчика, обработанных IRQ18-прерываний, прыжки уровня сигнала приблизительно раз в секунду на выводах 65,66 процессора. Для просмотра памяти, векторов прерываний, регистров TC1, AIC и т.д. я использовал утилиту monitor.c. irq_tc1.zip intrpt.zip monitor.zip
  2. Двухканальный генератор импульсов с программируемой скважностью по мотивам doc2682.pdf ("Pulse Width Modulation Generation Using the AT91 Timer/Counter") с сайта Atmel.com, для платы Rainbow_1.1 . Откомпилированная программа загружается в плату также, как и примеры в предыдущем посте. На выводах 65 и 66 процессора ( или на контактах 8 и 10 разъема P7) после запуска программы наблюдаем в осциллограф импульсы с 30% и 50% скважностью с частотой ~1 кГц ( как и описано в doc2682 ). AT91_wave_pwm.zip
  3. Здравствуйте. Вопрос такой: имеется работающая отладочная плата для процессора AT91RM9200 ( Rainbow_1.1), с работающим на ней Linux'ом. Есть желание попробовать поработать с JTAG - интерфейсом в учебных целях с прицелом на другие задачи. JTAG - адаптера в наличии никакого пока нет. Хочу попробовать адаптировать open-source проект по jtag, чтобы сделать на основе платы Rainbow jtag-адаптер: формировать на выводах GPIO процессора сигналы JTAG - интерфейса. Подходящего простого управляемого по JTAG устройства для учебных целей тоже пока в наличии нет :( . А можно ли работать с самим процессором AT91RM9200 одновременно и в качестве адаптера и в качестве управляемого утройства JTAG ( например - определить 0 или 1 на выводе процессора, управляющем включением светодиода BL_COMPLETE) ? Или это полный бред ?
  4. Проблема c telnetd решена непосредственным запуском: #/usr/sbin/inetd .
  5. Hello All ! Никак не могу с обсуждаемым здесь Debian sid 'ом запустить сервер telnetd. В inetd.conf его прописал, пробовал другой сервер inetutils-telnetd с сайта Debian'а, пробовал busybox с сайта Debian'а - ничего не работает, т.е telnet-клиент на компьютере сервера не видит. Пробовал ставить клиентов telnet на плату Rainbow + Debian sid - они с телнет-сервером на PC работают нормально, а с локальным не хотят. Если #/usr/bin/busybox telnetd то получаю ошибку: telnetd: socket: Address family not supported by protocol . С файловой системой от heavy проблем с telnet'ом у меня нет. Help me, please !
  6. Для тренировки работы с i2c интерфейсом платы Rainbow я припаял к ней на проводках микросхему EEPROM M24256 фирмы ST с неким примерно известным запрограммированным до меня содержимым, с закороченными на землю адресными выводами ( адрес на шине i2c 0x50 ) и резистором 5 кОм на выводе /WC для защиты от записи. Попробовал считать ее содержимое при помощи готовых средств Linux'а, для чего первоначально использовал ядро с поддержкой EEPROM - в каталоге /sys/bus/i2c/devices/0-0050/eeprom видны первые 256 байт EEPROM'а. cat /sys/bus/i2c/devices/0-0050/eeprom | hexdump -C Далее попробовал почитать другие адреса EEPOMa при помощи утилит из пакета lm-sensors: i2cdump считала те-же 256 байт, а выше по адресам считывала не совсем-то, что ожидалось. i=0; /usr/sbin/i2cdump -y 0 0x50 c $i; while [ "$i" -le 128 ]; do echo "i=$i" ; /usr/sbin/i2cdump -y 0 0x50 c $i; let i+=1; done; Для верификации содержимого EEPROMa пришлось считать его без Linux'а модифицированной программой BasicTWIEeprom из тестовых примеров для AT91RM9200 от Atmel (файл eeprom_read.zip). Имея т.о точное содержимое EEPROMa в файле, я предпринял еще несколько попыток стандартными средствами Linux'a считать все содержимое EEPROM'a, но они оказались безуспешными. Далее, я попробовал написать свою программу на Си для решения этой задачи ( файл i2c_program.zip ). Для еe работы необходимо ядро с выключенной поддержкой EEPROM, иначе в адреса 0x50 ... 0x57 шины i2c ничего нельзя записать при помощи вызова ioctl. Вот скрипт, который я использую для создания устройства /dev/i2c и загрузки программы из компьютера в файловую систему платы Rainbow на ram-диске: if [ ! -c "/dev/i2c" ] ; then mknod -m 600 /dev/i2c c 89 0 ; fi ; cd /home ; prgn="./i2c_program"; echo -e "binary\nget $prgn" | ./tftp 192.168.2.41 ; if [ -e $prgn ] ; then chmod 544 $prgn ; fi ; ls -l ; Команда для запуска программы: #./i2c_program 50 0 255 где параметры командной строки: address_i2c, mem_addr, nbytes. P.S. Начал я практическое изучение i2c - интерфейса под Linux-ом на плате Rainbow с такого скрипта: mknod /dev/i2c c 89 0 ls -l /dev/i2c dmesg > /dev/i2c , но при просмотре сигналов интерфейса i2c в осциллограф выяснилось, что текст из dmesg пишется в i2c-адрес 0x7f. ):- . i2c_program.zip eeprom_read.zip
  7. Фирма ST для поддержки своего выпускаемого железа содержит свой STLinux, и в документации на него есть примеры программ для работы с i2c и spi интерфейсами : i2c: http://www.stlinux.com/docs/manual/distrib...tion_guide6.php spi: http://www.stlinux.com/docs/manual/distrib...tion_guide7.php
  8. IMHO, для ядра выложенного на heavy-online.ru/arm-linux/files, конфиг недоступен в публичном доступе: согласно выложенной там инструкции он генерится командой make at91rm9200dk_defconfig, а файл at91rm9200dk_defconfig даже не патчится максимовским патчем, т.е. берется дефолтный конфиг ядра для этой платформы, а в нем SCSI - конфигурирование вообще отключено, следовательно, ядро не должно работать с USB Flash, однако , реально, ядро от heavy c USB Flash работает.
  9. 2 Dron_Gus Использую для подключения к плате Rainbow вот такой USB кардридер с картами Memory Stick с одним разъемом для карт. Стоит 200 р., работает нормально.
  10. 2 aaarrr Правильно ли я понял из прочтения спецификаций, что о прямом подключении карт Memory Stick к MCI интерфейсу контроллера AT91RM9200 можно забыть ?
  11. Схема, если ничего не путаю, от продвинутого телевизора Sony со встроенным кардридером для карт Memory Stick. Небольшая поправочка: не 10 К, а 100 К на землю, причем не только BS, но и DIO0.. DIO3. P.S. Смелое предположение - может быть надо делать инверсию всех сигналов ?
  12. Есть еще маленькое отличие в схеме подключения Memory Stick карты в упоминавшейся выше схеме - прототипе и в плате Rainbow: там сигнал BS не подтягивается резистором к плюсу питания, а подключен через 10 КОм на землю. Хочу попробовать сделать также на плате Rainbow. А пока подключил на проводках разъем карты по схеме: BS - CMD CLK - CLK DAT0..3 - DAT0-3 и т.д. и тест карты от атмела ничего не видит, и Линукс также ничего не видит, ( и тест карты от Черкашина ничего не видит - хотя, там, видимо, другая схема ) -:(.
  13. 2 BuroKRAT Спасибо за информацию, посмотрел по этой ссылке : http://pinouts.ru/Memory/memorysrick.shtml , только вот эта карта не M2 -:(, у M2 даже геомертия выводов разъема несколько другая: выводы питания и земли несколько удлинненные на карте. Вот эта карта соответвует описанной в ссылке спецификации разъема:
  14. 2PrSt 1) По поводу CONFIG_CMDLINE - я использую bootargs из окружения romboot'a, а то, что попало в обсуждаемый config, при этом не работает ( как попало - скорее всего из взятого за основу чужого файла ). В log"е при загрузке ядра в Hyperterminal'е присутствует CMDLINE именно от romboot'a. 2) По поводу Ваших замечаний о USB - спасибо, буду разбираться. 3) По поводу взятия за основу config' ов от heavy или сакуры - в принципе так и хотел сделать сначала, но чтот-то не получилось: отдельно файлов config' ов к их ядрам не прилагается, приходится накладывать на ядро патчи от максима, а с этим у меня, видимо, вышла неувязка: вероятно, надо было ручками копировать пропатченный файл linux-2.6.XX/arch/arm/configs/at91rm9200dk_defconfig в католог /usr/src/linux-2.6.XX/.config ??? Sorry, но ядра приходится собирать не каждый день -:).
  15. Hello All ! Если не трудно, подскажите пожалуйста, что надо поменять в моем config'е ядра (2.6.20), чтобы мое ядро увидело флэшку (USB Mass Strorage ). С другими ядрами (от heavy, slava2005 ) плата Rainbow мои флэшки с файловой системой Ext2 видит, а с моим ядром почему-то нет. Ядро пропатчено, как положено, патчем от Maxim + отключено rmii и прерывания от PHY ( rmii=0; phy_irq_pin=0). Сеть работает нормально. С ядром от heavy у меня не работает сеть, с ядром от slava2005 система не может загрузить initrd в мои 16М SDRAM -:( - приходится грузить файловую систему с USB Flash. Ядро от sakura у меня вообще не грузится - "Starting kernel ..." и зависает -:( . Аналогичного результата мне удавалось добится с работающими ядрами уменьшая размер оперативной памяти в командной строке bootargs. Так что причина, вероятно, в недостаточном у меня на плате объеме SDRAM для этого ядра. Исходя из вышеизложенного, приходится собирать свое ядро. .config.zip Image.zip uImage.zip
  16. Программа objdump из пакета binutils (GNU).
  17. Hello, All ! Предлагаются Вашему вниманию несколько тестовых примером от Atmel AT91RM9200-EK, модифицированных для платы Rainbow, откомпилированных с помощью ADS. 1) AT91RM9200_BasicUHP - тест петли UHP-UDP для USB интерфейсов платы Rainbow, работающий в цикле. Загрузка, как описано в примере от Atmel: u-boot> loadb 20800000 (или tftp 20800000 ) u-boot> go 20800000 ( примеры откомпилированы на адрес загрузки 20800000 ) 2)AT91RM9200_TWI - выдача в цикле байтов 0x55, 0xAA через I2C интерфейс платы Rainbow. Мне было интересно посмотреть сигналы интерфейса I2C в осциллограф. Микросхемы часов на плате у меня нет. Без подтягивающих резисторов R34, R31 тест не работает. Я смотрел сначала в осциллограф оба сигнала со щупом 1:1 - при однократном прикосновении к линии тактов SCL тест зависает, больше никаких эпюр на обоих выводах нет. Со щупом 1:10 все смотрится нормально. Загрузка теста аналогично предыдущему. При повторном (горячем, т.е. без снятия питания с платы ) запуске после нажатия кнопки RESET нет необходимости грузить файл, достаточно дать команду: u-boot> go 20800000 Пока ВСЕ. AT91RM9200_BasicUHP.zip AT91RM9200_TWI.zip
  18. А какая принципиальная электрическая схема подключения карты Memory Stick M2 к разъему P6 платы Rainbow_1.1 ? Для справки - интерфейс вышеуказанной карты: Вывод Сигнал Куда подключен в некоей работающей схеме - прототипе 8 VCC питание 5 INS MSDETECT GPIO_NN 3 DIO0 MSSDIO CPU 9 VSS земля 2 DIO1 MSDIO1 CPU 4 DIO2 MSDIO2 CPU 6 DIO3 MSDIO3 CPU 10 RES n/c 11 RES n/c 7 SCLK MSSCLK CPU 1 BS MSBS
  19. Епстественно ;) ;) Кто-ж клок-то будет генерировать? Вот, как сделано у меня: // Check if there is a "stuck" byte in receive register if (AT91C_BASE_SPI->SPI_SR & (AT91C_SPI_OVRES | AT91C_SPI_RDRF)) i=AT91C_BASE_SPI->SPI_RDR; // Set up reception of input buffer AT91F_SPI_ReceiveFrame(AT91C_BASE_SPI,(char*) &SPIInput[0],sizeof(SPIInput),0,0); // Fire transmittion and reception AT91F_SPI_SendFrame(AT91C_BASE_SPI,(char*) &OutputBuf[0],sizeof(OutputBuf),0,0); // Wait until the reception is finished while(!((AT91C_BASE_SPI->SPI_SR) & AT91C_SPI_RXBUFF)) vTaskDelay(portTICK_RATE_MS * 5); // Process input ..... При этом, прошу заметить, OutputBuf больше или равен по размеру SPIInput.
  20. 2 dch Интересует нечто вроде программы gpio для чтения/записи состояния выводов general purpose input /output процессора ( см. http://electronix.ru/forum/index.php?showtopic=34444 ) , но только для интерфейсов i2c и spi процессора AT91RM9200 - средство, которое можно было бы использовать вместе с платой Rainbow для подключения к другим устройствам в качестве логического анализотора их i2c, spi интерфейсов. Это теоретически. Практически видна опасность повреждения DataFlash на плате Rainbow при подключении к интерфейсу spi процессора случайного потока данных. Но против этого можно принять меры аппаратного характера. P.S. В описании u-boot'a такие средства для i2c и spi вроде бы есть, но в том варианте u-boot, который пропатчен в соотвестввии с http://www.heavy-online.ru/arm-linux/ этого нет. Надо будет как-нибудь попробовать собрать u-boot с поддержкой этих тестовых функций.
  21. Написал небольшой тест записи байтов по шине в SDRAM, смотрел в осциллограф сигналы SDR_DQM0, SDR_DQM1, SDR_DQM2, SDR_DQM3 на микросхемах памяти и на резисторных сборках - ничего подозрительного не обнаружил. Прозвонил тестером в диодном режиме ( плюс тестера на корпус платы ) контакты на резисторных сборках, соответствующие сигналам SDR_DQM0, SDR_DQM1, SDR_DQM2, SDR_DQM3 : на трех последних напряжения одинаковые, а на первом существенно отличается. Обнаружил непропай контакта резисторной сборки , соответствующий сигналу SDR_DQM0 со стороны процессора. Пропайка проблему устраила. Сейчас уже работает Linux на плате Rainbow :) .
  22. To a3r3: Спасибо. Буду смотреть сигнал SDR_DQM0.
  23. cmdline.zip В соответствии с документацией на м/сх SDRAM NR=12 NC=8 NB=4 и init.c romboot'a SDRAMC_CR=0x2188c154.
  24. xmodem.zipuboot_handshake.zip8hex2bin.zipdiff.zipНа плате Rainbow у меня стоит микроновкая память MT48LC4M16A2TG-75 ( 1 Meg x 16 x 4 banks). Xmodem при записи в SDRAM не работает - выдает ошибки. Поэтому приходится писать в плату при помощи своих самодельных протоколов. CRC - сервисы процессора правильно считают CRC16, CRC32, ... только когда подсчитываемый массив находится в во внутренней SRAM процессора. Записал в DataFlash romboot.bin, модифицировав его таким образом, чтобы он копировал себя из internal SRAM в DataFlash. Записал u-boot в DataFlash, побайтно возвращая из платы на PC hex-символы для контроля ошибок при коммуникации DBGU, затем сбрасывая копию массива из SDRAM через DBGU по 4 hex - символа в файл на РС, и побайтно сравнивая затем переданный и принятый файлы, и затем записывая массив из SDRAM в DataFlash. При попытке запустить u-boot ничего не происходит. Сбросив копию области 0x20F00000 u-boot'a через DBGU на PC и побайтно сравнив файлы обнаружил массу ошибок по адресам, соответствующим младшему байту на шине данных процессора. Визуальный осмотр под микроскопом монтажа на плате дефектов не выявил. Пропайка микросхемы памяти и резисторов на шине данных не помогла. Что можно сделать еще, кроме замены микросхемы памяти, соотв. младшим разрядам шины данных процессора. P.S. В аттаче MS VC6 проекты моих консольных приложений, которые я использую, и файл diff с данными побайтного сравнения переданного и считанного u-boot'a.