Перейти к содержанию
    

leen

Свой
  • Постов

    173
  • Зарегистрирован

  • Посещение

Весь контент leen


  1. Не знаю, возможно, поздно, но тем не менее: В витисе есть рабочий проект со своими настройками оптимизации, а есть т.н. platform project, включающий в себя board support package, в том числе локальные копии драйверов периферии, имеющейся (включенной) в проекте ПЛИС. Так вот они имеют свои уровни оптимизации - по умолчанию -O2, и из диалога изменения bsp это не правится. Я правлю ручками в мейкфайлах (благо, их немного), если захочется полазить дебагером по драйверам. Но это до первого реимпорта xsa-файла из Vivado, потом все возвращается на круги своя.
  2. В начале освоения ЛУТ тоже печатал в pdf или postscript, затем импортировал в Corel Draw и если в площадках были отверстия, то многие не были видны. При этом часть виа импортировалась нормально, а часть - нет, с падами точно так же. Поспрошал знакомого фотографа, тот сказал, что этот глюк не мой, а адоба - кривая работа со вложенными окружностями. Избавлялся от этого эффекта, делая площадки эллипсоидными или сглаженно-квадратными. Быстро надоело. Освоил CAM350, работа с герберами для меня стала удобнее. При этом, если на печать выводить из CAM350, хоть на принтер, хоть через виртуальный принтер в пдф, этого глюка не замечал. Правда, я перешел на предварительную сверловку, поэтому прозрачных отверстий на сверловке больше не делаю. На выходных если будет время - проверю и отпишусь.
  3. А что из оборудования у Вас есть? JTAG там, плата отладочная, какие версии софта? а то напишет кто-нибудь под CV выпуска так года 2003, а у Вас этот пример не соберется. Да и LCD разные бывают. Upd: вот, наковырял. #include <alcd.h> #include <delay.h> // ******************** ADC ***************************** // инициализация АЦП void adc_init(void){ ADMUX = (0<<REFS1)|(1<<REFS0); // AVCC - 5v ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // CK/128 //ADCSRB = (1<<ADTS2)|(1<<ADTS1)|(0<<ADTS0); // timer1 overflow } // разовое чтение АЦП поллингом unsigned short int adc_convert(unsigned char channel){ unsigned short int result; ADMUX = (ADMUX & 0xF0)|channel; ADCSRA |= (1<<ADSC); while (!(ADCSRA & (1<<ADSC))); result = ( ((unsigned short int)ADCH << 8) | (unsigned short int)ADCL); return result; } char flash fmt[] = "%d"; void main(void) { char buf[16]; unsigned short int adc_data; lcd_init(16); while(1) { adc_data = adc_convert(0); lcd_clear(); lcd_gotoxy(0,0); sprintf(buf, fmt, adc_data); lcd_puts(buf); вудфн_ьы(100)ж } } Лаба или курсач?
  4. Спасибо, почитал. Действительно, у меня в проекте она существенно ниже ошибки квантования. Учту на будущее.
  5. Странно, у меня все работает. ПЛИС - spartan3e на плате стартеркита, АЦП AD7352 на другой плате через разъем, 12 бит. Интерфейс spi-подобный, ч-та клока 48 МГц, выведен обычным выводом (по неопытности, надо было, наверно, вывод клоковый использовать). На замере рефа дрожало два младших бита. При этом питание цифровой части АЦП идет от ПЛИС, аналоговая - через локальный стабилизатор и маленькую индуктивность - от той же ПЛИС.
  6. Шарю? Хм, спорный вопрос, опустим для ясности:). По-крайней мере, из вариантов - собирать ручками, или собирать скриптами я уже выбрал второй. А первый - и в первый раз через пень-колоду получился, и сейчас не очень-то пошел.
  7. Скажи, а тебе так нуже java-компилер под АРМ? Или таки нет? Если нужен - ну, наверно, надо поставить gcj под i686. Лучше сконфигури кросстулзы сам - меньше мусора будет. И читай мануалы в процессе. Только в конфиге libc укажи addon nptl, компиляторы - по вкусу, я выставил gcc, g++. Джава мне не нужна, ада с фортраном - тоже. Свою реплику про "--with-tls" дезавуирую. Пока собралось не все (за ночь - не так уж быстро), но глицы и компилеры собрались, сейчас собирается нативный gdb. Да, и поотмечай в опциях binutils и gcc сборку библиотек. А будет у тебя нормальный тулчейн - займемся ручным изготовлением инитрамфс, а на его основе уже можно создать и свой постоянный рутовый раздел. Вчера попробовал поставить emdebian - пока собирались тулзы. И надо ж такому случиться - сервер недоступен. Аж обидно. UPD: тулчейн собрался за ночь. Проверил на ядре - собрал с рабочим конфигом новыми тулзами. Ядро нормально запустилось и нормально же запаниковало, не найдя инитрамфс. Вечером продолжу - соберу инитрамфс, вкручу в ядро. Кросстулз мне понравились тем, что правильно настроил, сырцы дал - и ушел. А оно работает:) Ну и аккуратнее получилось, чем у меня пару лет назад, когда я ручками все это собирал.
  8. Ты подожди денек, я сам разберусь с кросстулзами, отпишу че да как. Я первый раз тулзы с месяц собирал - то нормально, то такая злость разбирает, что не собирается нихрена, что к компе не подходил - боялся взять и уе..ть. первая ссылка в гугле по приведенной тобой ошибке, нижний пост libc_cv_forced_unwind=yes ....... ./configure .......
  9. Mops-7.0 beta - слегка причесанная слакварь. Голая консоль, сугубо для сборки проектов. У меня че-то начало получаться с кросстулзами, домой приду - продолжу. Как чего получится, допишу.
  10. Тащемто правильно nptl. Эт раз. По кросстулзам. На сборке глибцов все сломалось. В конфиг добавил ключ --with-tls, в использовании аддонов записал nptl. Для того, чтобы не пересобирать все сначала, включил отладку и запоминание промежуточных шагов. Перезапустил, через час посмотрю.
  11. В перерывах на производственный процесс тестирую crosstools-ng. Приятная вещь, жаль, в прошлый раз не смог ее освоить. Скачал отсюда. Выложил в /home/leen tar xf crosstool-ng-1.9.0.tar.bz2 cd crosstool-ng-1.9.0 ./configure --prefix=~/usr make && make install До этого попытался, как белый человек, поставить тулзу в /usr - не завелась, видать, ей надо w доступ на свои файлы. Создаю папку для сборки, конфигурю из нее (перед этим надо не забыть добавить саму тулзу в путь) mkdir ~/toolchain-build cd ~/toolchain-build export PATH=$PATH:~/usr/bin ct-ng menuconfig На всякий случай, вот мой конфиг arm_linux_eabi.config.txt Его только надо переименовать в .config, а то форумный движок запрещает мне заливать файлы такого типа. Хе-хе. Тут можно поступить двояко - или дать тулзе все необходимое загрузить, или сделать это самому. Я собираю все в виртуалке, путь до шлюза у меня не прописан, поэтому выкачал ручками и слил в ~/src. Если дать скрипту выкачивать все и отметить в конфиге, что сырцы надо сохранить, то сохранит он все как раз в ~/src, если такая папка есть. Если нет - не сохранит. Пакеты архивов: binutils-2.20.tar.bz2 gcc-4.4.5.tar.bz2 gdb-6.8.tar.bz2 glibc-2.9.tar.bz2 glibc-ports-2.9.tar.bz2 gmp-4.3.2.tar.bz2 linux-2.6.36.tar.bz2 mpfr-2.4.2.tar.bz2 ppl-0.10.2.tar.bz2 cloog-ppl-0.15.10.tar.gz expat-2.0.1.tar.gz ncurses-5.7.tar.gz Заметил баг в crosstools - Re: CLOOG/ppl failure in ct-ng 1.9.0. Ничего страшного, фиксим файл ~/usr/lib/ct-ng-1.9.0/scripts/build/companion_libs/cloog.sh, добавив строку, помеченную +++. Исправь до сборки, а то при ошибке сборка начинается с начала, блин. А дотуда - полчаса легко. Пока все.
  12. configure: WARNING: using cross tools not prefixed with host triplet Мне не нравится этот варнинг. Поищи его в config.log и посмотри (а можешь и мне показать), что рядом с ним, строк +/- 50 где-то. Касательно скрипта - сильно уж он старый. Ядро сильно изменилось после 2.6.18. Да и либси на месте не стоит. Можно еще помучаться с crosstools-ng. Я щас попробую его запустить, вечером приду домой - посмотрю, что получилось. версии: binutils 2.19.1 gcc 4.3.1 glibc 2.9 linux-2.6.29.6 с наложенными патчами PREEMT_RT - вытесняющая многозадачность и атмеловский патч, взятый с максим.орг.за. Насчет пива и девок - давай сначала соберем:)
  13. Ладно, начнем по порядку. 1 вся работа идет в шелле. Так удобнее. (Шелл это командная строка). Распаковка файла - tar xf имя_файла. Для автодополнения можно жать на таб, если файлов с введенной частью больше одного - шелл покажет варианты после второго нажатия таба, не обессудь, если их будет много. итак, папка с архивами glibc-2.11.2.tar.bz2, glibc-ports-2.11.tar.bz2. tar xf glibc-2.11.2.tar.bz2 tar xf glibc-ports-2.11.tar.bz2 Если хочешь понаблюдать за процессом - вместо xf пиши xvf. x - распаковка, f - в качестве аргументов будут файлы, v - подробно. Копируем содержимое glibc-ports-2.11 в glibc-2.11.2 cp -R glibc-ports-2.11/* glibc-2.11.2 Ну а дальше твоя строка конфигурации. И, кстати, опция --without-__thread у меня не проканала, а вот --with-__thread - прошла на ура. Все, я спать, вечером приду с работы - попробую пересобрать свежаки между делом.
  14. накатывание патчей patch -p1 -i имя_файла_с_патчем а вообще - man patch. Там довольно подробно объясняется. на opennet.ru есть русские переводы многих манов. Ты команды хоть приводи, непонятно ж ничерта - куда и что ты пишешь. Вот давай начнем с установленного gcc без библиотек, ага? export ARCH=arm CROSS_COMPILE=arm-linux- (ну или как ты там гцц переименовал). Так? Какие патчи накатываешь, какие версии софта используешь? Я не против тебе помочь, но ты уж меня телепатом не считай, ладно?
  15. А что я выше говорил про линукстредс? Пост 6. Кроме того, если брал сырцы у гну, наверно видел файлы glibc-ports-xxx? Так вот сама глибц - под x86, а под арм ее ориентирует (добавляет платформозависимые куски) именно порт. И не факт, что самую свежую версию уже портировали. с ошибкой придется разбираться, но чуть позже, а флаг нужен, иначе при сборке мейк будет по-всякому тестировать собираемое, а как, если оно не запускается? есс-но будет тьма ошибок.
  16. Да, нормально. заглянул в ванильное 2.6.33.6 - там тоже нет, когда появляется - не помню. В используемом 2.6.29.6 - есть, похоже эти папки появляются уже после сборки самого ядра. хз что это, надо гуглить Мдя. Мой грех. Забыл, как сам накувыркался с этим маном. В общем, там такое дело - сначала выкуривается gcc cross compiling c gcc.gnu.org, затем собирается и устанавливается цель all-gcc: make all-gcc make install-gcc glibc собранного, которого еще нет. пЫва мало было :beer: И еще раз - gcc собирается для кросс компиляции, т.е. соборанный им эльф на собирающей машине не запустится, а мэйк пробует сделать именно это, если мой телепатический модуль не сбойнул:)
  17. У меня рабочей является такая конфигурация (подсмотрено в слакваре): ядро с вкомипленной в него инит рам фс - так ядро занимает больше места, зато не надо по отдельности прогружать ядро и инитрд и указывать ядру на инитрд. Главное, чтобы в инитрамфс был файл инит. у меня это скрипт, делающий все необходимые манипуляции. Также в инитрамфс запихан статически собранный бизибокс с минимумом необходимого для монтирования микросд карточки, на которой создан основной рут. После загрузки ядро запускает процесс инит с инитрамфс. Инит, отработав, меняет рут на примонтированную микросд карту, запуская инит там. Инит на микросд запускает всех демонов и стартует шелл, привязанный к DBGU порту (/dev/ttyS0). Ну а из демонов - syslogd, sshd, mdev (вместо неповоротливого и прожорливого udev, входит в комплект бизибокса). Инит от инитрамфс. #!/bin/sh echo in initramfs echo # mount system fs mount /proc mount /sys mount /tmp mount /dev/pts mount /dev # get new devices echo /bin/mdev > /proc/sys/kernel/hotplug usleep 100000 mdev -s # find SD/MMC card # support work wuth mmcblk and mmcblk0p1 only if [ -r /dev/mmcblk0p1 ]; then # huge devices with partitions mount /dev/mmcblk0p1 /mmc elif [ -r /dev/mmcblk0 ]; then # little devices (my first 256 MB microSD) mount /dev/mmcblk0 /mmc else echo "no SD/MMC card found!" /bin/sh --login #start shell fi echo outting initramfs exec switch_root /mmc /linuxrc Может, профессионалы и фыркнут, но у меня работает - мне хватает. P.S. еще мне показалось удобным поднять ftp-сервер на плате, чтобы сливать туда-оттуда разные файлы.
  18. Ссылка с описанием была весьмя старой и уже мертва, прикладываю хтмл-файл, ориентируясь на который, я собирал LFS. _______toolchain_____ARM__________Linux____AT91RM9200.htm К слову, собирать glibc (не uclibc, а полновесный glibc) лучше с поддержкой потоков nptl, а не linuxthreads, т.к. последние были на заре линукса и сейчас активно выпиливаются. ИМХО, LFS хорош для ознакомления с системой, узнать, что и откуда у нее растет. Но параллельно посоветовал бы подготовить инструментарий, позволяющий работать. В этом смысле хорош Emdebian. Вроде были и еще проекты, предоставляющие не просто тулчейн с компиленным ядром и небольшим рутом, но полноценные дистры. Пока не интересовался этим.
  19. У меня получилось запустить плату, собрав из исходников и glibc, и gcc, и ядро, и мир. Долго это было и сложно. Сейчас гляжу в сторону emdebian, у них вроде есть и тулчейны, и собранные пакеты под армы. Но еще не пробовал - придет плата, запущу - отпишусь.
  20. А этот arm-linux-gnueabi - тот же, которым собраны ядро и рутфс на плате? Когда осваивал linux from scratch, нагугливал, что если glibc у кросскомпилятора и у системы-цели разной сборки (даже если версия одна и та же), то как раз чаще всего и будет незапускаемый код. Поэтому я бы посоветовал найти набор кросстулз на linux4sam. А если Вы хотите делать свою сборку кросстулз, то и рутфс и ядро придется пересобирать. Это, правда, не относится к пересборке gcc и binutils, только к пересборке glibc.
  21. Что касается eclipse, у меня эта оболочка используется для x86, avr и arm одновременно. Правда, я не использую различные плагины для конкретных семейств - просто написал мейкфайл, подходящий для большинства проектов и немного правлю его по мере надобности. Eclipse по умолчанию предлагает создать проект с кучей рюшечек и бантиков,но переносить такие проекты тяжело, поэтому я и остановился на Makefile project. По команде сборки (Build 'target' for project 'project') выполняется команда make. Make подхватывает расположенный в папке проекта makefile, а в нем уже прописано и название компилятора, и цель сборки, и этапы. Для работы достаточно, чтобы все используемые программы (i686-gcc, arm-elf-gcc, avr-gcc, остальные приблуды из их комплектов) были в пути к исполняемым файлам. У меня они все лежат в одной папке: с:\mingw\bin. Проблем не возникает, если даже собираются две программы - для контроллера и оболочка для ЭВМ. Единственная сложность - пришлось прочитать книжку GNU make 3.79.ru.
  22. Использую старую плату AS-9200 на контроллере at91rm9200. Из доп. железа - дырка в свиче (для ethernet), сом-портовый кабель для консоли, самопальный переходник для SD/MMC-карты. Ядро - с оф. сайта, минимум окружения (busybox, bash, glibc). Поиграться хватает. если кинуть внешний проводничок с выхода таймера на фход IRQn, можно еще с дровами поиграться. Для отладки пока использую только консоль, думаю над gdbserver, раз уж сеть есть. Кстати, стартеркит выпускает платы, ориентированные на использование под линуксом. А на официальные атмеловские платы цены что-то совсем заоблачные..
  23. Предупреждение: по указанному адресу находится вирус, замаскированный под readme.pdf: 29.04.2009 14:51:53 Win32/TrojanDownloader.Agent.ORH троян
  24. Для этого нужно переписать скрипт линкера. О том, как это делается, рассказано здесь. Если, конечно, используемый Вами пакет соответствует ветке :). Если лень читать первоисточник, то можно пройтись поиском по веткам, посвященным авр и гну утилам - тема весьма старая, поднималась не раз. Успехов.
×
×
  • Создать...