Jump to content

    

Kris2007

Участник
  • Content Count

    72
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Kris2007

  • Rank
    Участник
  1. Вспоминая Зеленоград.... Компания Элинс никогда не славилась приемлемым уровнем ЗП. Обычно набирала себе кучу студентов за копейки ежегодно. То что они счас предлагают, для них уже много. Торговаться там безсмысленно.
  2. ARM9 Нужно именно InterlockedExchangeAdd. Эта функция реализована под многие платформы в коде, а под ARM9 пока стоит неатомарная сишная версия(
  3. Никто не поможет с атомарной реализацией под ARM? Неатомарная на Си(логика работы): LONG InterlockedExchangeAdd(LONG volatile *dest, LONG incr) { LONG res = (*dest); (*dest) += incr; return res; } Атомарная под x86(для linux): static inline LONG InterlockedExchangeAdd (LONG volatile * dest, LONG incr) { int ret; __asm __volatile__( "lock\n\t"\ "xaddl %0,(%1)" : "=r" (ret) : "r" (dest), "0" (incr) : "memory" ); return ret; }
  4. Это критичный момент. Код портируется на много платформ x86, mips, porepc, IOS(на ARM) и т п для всех своя реализация на асме. Для IOS через функцию mach_absolute_time(), андроиде подобной увы нет.
  5. Да развернул. clock_gettime(другого решения пока не нашел( ) насколько я понимаю использует системный вызов sys_timer_gettime. Но это много дольше, чем просто прочитать регистр таймера в x86(
  6. ОС Андроид, платформа ARM(конкретные процессоры я предполагаю будут разнообразные), суть вопроса именно(!) как сделать по-аналогии для ARM.
  7. Нужно поюзать какой-нибудь точный счетчик циклов из-под ОС Linux из пространства пользователя. Кроме clock_gettime ничего в голову не приходит. Существует ли какой-нибудь счетчик типа rdtsc для x86, который можно использовать из пространства пользователя(для включения которого не нужен kernel mode)?
  8. Спасибо! Не подскажете еще как лучше сделать - опрашивать пины как-то в "цикле" или разрешить прерывания по изменению пинов (3-8 пинов)? Просто в linux не писал ничего низкоуровневого, а под микроконтроллеры с этим как-то вообще проблем не было(опрос+пауза для дребезга например).
  9. Нужно опрашивать пины процессора(предположим на них кнопки) из Linux. Как это проще всего сделать? Где почитать про сие можно?
  10. Устройство выпускается с блоком питания 5В, далее преобразователь на 3.3 для спец.микрухи и котроллера Atmega128L. Захотелось сменить контроллер на более производительный Atmega128(pin-to-pin), но ему на +5В. Нужно блок питания сменить, что не хотелось бы, на +7,5(или +9) и ставить еще один преобразователь на +5? Проще никак?
  11. Собираю модуль ядра под железку(исходник+LSP и текст модуля от производителя железки). выполняю скрипт: make -C ../ SUBDIRS=$PWD modules V=1 В папке на уровень выше исходники linux(это /home/kris/workspace/Linux4xcat/linux/XCAT/xcat_lsp/linux-2.6.22.18) Выводит ошибки: WARNING: "mvSwitchWriteReg" [/home/kris/workspace/Linux4xcat/linux/XCAT/xcat_lsp/linux-2.6.22.18/PPDrv/PPdrv.ko] undefined! WARNING: "mvSwitchReadReg" [/home/kris/workspace/Linux4xcat/linux/XCAT/xcat_lsp/linux-2.6.22.18/PPDrv/PPdrv.ko] undefined! Функции mvSwitchReadReg и mvSwitchWriteReg определены в /home/kris/workspace/Linux4xcat/linux/XCAT/xcat_lsp/linux-2.6.22.18/arch/arm/plat-feroceon/mv_hal/prestera в си файлах. Вопрос а почему make не увидел эти функции? Что сделать, что поправить чтобы все было ок? Загрузка insmod PPdrv.ko не проходит из-за этих функций. Сильно не пинать, я модули ядра по Linux в первый раз собираю.
  12. Спасибо! Собрал rootfs и uImage в один образ, залил все загрузилось и как-то даж работает. Но файловая система всеж на spi flash, насколько я понимаю из log. И на ихнем тож.
  13. edu, да спасибо, этот процесс я так себе и представляю. Тока вот где взять rootfs c файлами представляю плохо. А причем здесь cp то? Не совсем понял. В RAM что ль rootfs скопировать? но откуда ее взять? У меня есть spi_flash куда я гружу u-boot. Я могу его прописать программатором или обновить через TFTP как угодно. Больше микросхем памяти на плате нет. Была еще EPPROM с константами инициализации для платы, но их перенесли в spi_flash, и u-boot читает их оттуда(сторонние разработчики). flinfo видит (пишу по памяти т.к. платы нет): u-boot 0x000000 kernel 0x100000 rootfs 0x2c0000 Почему переменная linux_paths в uboot имеет другие значения не знаю (но возможно это и правильно - на конецы разделов указывает например) Я так понимаю, я должен где-то взять rootfs с файлами и прописать его (программатором???) в spi_flash по адресу 2с0000? Так? Но блин, где взять???) У меня есть U-boot от фирмы,который инициализирует PHY и.т.п. и позволяет залить образ и.т.п., даж его исходники есть. По адресам 2с0000 согласно файлу заливаемому программатором тока 0xffff и ничего больше. У меня есть исходнки Linux+LSP от фирмы - из них я собираю uImage, заливаю его командой mtdburn uImage(видимо в RAM). Вместе с Linux или U-boot собирается, ли что-нибудь из чего можно вытащить файловую систему rootfs? (Начал читать про mkfs т.е. про mkfs.jffs2)
  14. А как прописать этот образ??? Собирается файл uImage(make uImage) и после mtdburn uImage и перезагрузки он грузится. Распаковывается... На spi_flash Linux при этом сама rootfs не записывает? Думаю mtdblock2 именно, При смене на mtdblk2 следующий вывод: IP-Config: Complete: device=eth0, addr=192.168.0.89, mask=255.255.255.0, gw=255.255.255.255, host=192.168.0.89, domain=, nis-domain=(none), bootserver=192.168.0.20, rootserver=192.168.0.20, rootpath= VFS: Cannot open root device "nfs" or unknown-block(0,255) Please append a correct "root=" boot option; here are the available partitions: 1f00 1024 mtdblock0 (driver?) 1f01 1792 mtdblock1 (driver?) 1f02 13568 mtdblock2 (driver?) Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,255) kurtis, а я из флеша гружусь, не по сети. Конфиги все от производителя, но т.к. плата другаю(и другая флеш) то могут быть нестыковки. Я поправил код для spi_flash, т.е. добавил описание define-ов и.т.п. для впаянного spi_flash. Без него система стопилась при попытке опознать флеш ID. Но правил очень аккуратно и думаю дело не в этом. Там много типов флеш возможно разных размеров и фирм, я добавил описание еще одной.