Jump to content

    

ivan1180

Участник
  • Content Count

    109
  • Joined

  • Last visited

Community Reputation

0 Обычный

About ivan1180

  • Rank
    Частый гость
  1. aaarrr, спасибо. EMIFB.BPRIO было равно 0xFF, поменял на 0x15 и проблема решилась.
  2. Добрый день. Я занимаюсь портированием ядерного драйвера framebuffer для процессора AM1707. Я работаю с 800х480 TFT дисплеем. LCDC контроллер процессра AM1707 работает в растерном режиме (raster mode) и и контроллеру LCDC выставлен максимальный приоритет доступа к шине (master priority). Для тестового режима я запускаю на плате демо приложение QT (в библиотеке есть пример где в окне перемещаются 4 синих квадрата). При работе тестового изображения на дисплее появляются артефакты (белые или зеленые полосы длинной 20-40 пикселей). Выглядит это примерно следущим образом : ------------------------------- | | | o - - - | | /|\ - - - | | | | | / \ - -- - | | | -------------------------------- Причем есть странная закономерность : если процессор не загружен то артефактов изображения нет. Чем выше нагрузка, тем больше артефактов. Коллеги, как вы считаете или какие есть идеи в чем может быть проблема?
  3. Добрый день. У меня есть комплект : плата на основе ti am1707@456@MHz c памятью на борту 64Mb SDRAM 32@100Мгц и tft дисплей 800х480. На плате запущен Linux (ядро 3.2.1). Проблема : сбивается синхронизация при выводе изображения на дисплей. Как это примерно выглядит, видно ниже на фото Я посмотрел линию DE на осциллографе, видно что некоторые кадры уходят не полностью. У меня кончились идеи, в чем может быть причина. Прошу, подскажите направление поиска, куда копать и в чем дело?
  4. #$#$!! В точку! scifi, Большое спасибо. В общем дело в чем : на столе у меня лежат две одинаковые платы и я считал что работаю с 417 процессором. С одной работаю, на второй смотрю процессор, разводку, думаю. В общем оказалось что я работал действительно с 217, думая что работаю с 417, держа в руках вторую плату с 417!. Ведь IAR мне в консоли честно писал Cortex M3;
  5. CFSR = 0x00010000, UNDEFINSTR = 1 UNDEFINSTR: Undefined instruction Usage Fault: 0 = no undefined instruction 1 = the processor has attempted to execute an undefined instruction. When this bit is set, the PC value stacked for the exception return points to the undefined instruction. An undefined instruction is an instruction that the processor cannot decode. Potential reasons: a) Use of instructions not supported in the Cortex-M device. B) Bad or corrupted memory contents. HFSR =0x40000000, FORSED = 1 The HFSR has bit 30 set indicating that the Usage Fault was escalated to a Hard Fault (displayed as the FORCED bit). This is consistent with the debugger source window that shows the PC at the Hard Fault handler address.
  6. stm32f4xx, переменная во внутренней sram, глобальная. Entry Address Size Type Object WriteReadAddr 0x20000814 0xc Data Gb main.o [1]
  7. Коллеги, Дано: IAR for ARM, 6.30.1342 Есть структура : typedef struct { uint16_t Zone; uint16_t Block; uint16_t Page; } NAND_ADDRESS; создаю элемент типа этой структуры : NAND_ADDRESS WriteReadAddr; При попытке прочитать элемент WriteReadAddr.Zone попадаю в HardFault. Я сделал workaround, чтобы обойти эту проблему, поменял тип элементов структуры поменял тип uint16_t на uint32_t. typedef struct { uint32_t Zone; uint32_t Block; uint32_t Page; } NAND_ADDRESS; Но это не решение, просто я закопал проблему глубже. Помоги разобраться, в чем корень проблемы?
  8. 1. Поднять на ubutu tftp сервер. 2. Проинициализировать прерывание-обработчик где - нибудь в arch/arm/mach-davinci/board-da830-evm.c функции "static __init void da830_evm_init(void)" прерывание и обработчик как в примере 3. Пересобрать ядро, запустить на плате (для начала загрузив через tftp), убедиться что все работает 4. Прошить в плату. Как-то так.
  9. Самый простой вариант экспортировать GPIO и дергать их bash скриптом.
  10. Если процессор уже перепаял, что стоит добавить часовой кварц? На сколько я помню, процессор сначала стартует именно на часовом кварце, а потом уже переключается на основной, если неправ меня коллеги поправят. У меня так же не отвечал 9263, пока я часовой кварц не поставил.
  11. Попробуйте подключить часовой кварц.
  12. DenchikS Спасибо за ссылку, очень помогло! У есть проверенный u-boot, который работает через UART0, могу переслать на почту. До меня дошло сегодня фразы с форума что uboot-тов должно быть два, а именно : первый чтобы загрузиться, второй который пишется во флеш память. Для генерации AIS образа я использовал AISGen for D800K003, он имеет GUI интерфейс, также при работе он создает ini файл настроек, который я использовал как пример для HexAIS_OMAP-L137.exe; Тут есть одна тонкость : если брать последний u-boot, то AISGen отказывается делать для него AIS образ и приходится пользоваться HexAIS_OMAP-L137.exe Как писать AIS образ в NAND память, при помощи консольных утилит 1. По ссылке на первой странице этой ветки нужно пересобрать консольные утилиты Как пересобрать flash утилиты 2. Нужно собрать u-boot, в котором поправить таблицы по ссылке постом выше nand_ecclayout nand_davinci_4bit_layout_oobfirst 3. Подготовить ДВА образа AIS, первый с загрузкой по UART, второй по NAND 4. Загрузить образ первый образ по UART (выставить правильно конфигурацию загрузки bootmode pins) slh_OMAP-L137.exe -v -waitForDevice -p COM1 u-boot_ti_1705_test.bin 5. В uboot записать второй образ в NAND память. ais_reg_am1705.txt - настройки для AISGen config.txt - конфигурация для HexAIS_OMAP-L137.exe
  13. PavelG Сейчас я использую версию из sdk_1_10_00_01, uboot-03.20.00.12. Более новые версии у меня не получалось конвертировать в AIS образ, но сегодня я нашел следующий способ : HexAIS_OMAP-L137.exe -ini config.ini -entrypoint 0xc1080000 -otype binary -o u-boot.ais uboot.bin@0xC1080000 Попробую свежую версию запустить, вроде там больше команд для работы с NAND памятью. Особенно меня интересует команда "nandecc hw". DenchikS Да, есть такое дело. Как я думаю это проблема в том что в ядре и u-boot разные таблицы ECC. По идее более свежая версия u-boot должна решить эту проблему. Обсуждалось ТУТ
  14. DenchikS PavelG Для процессора 1705 у меня получилось записать u-boot в NAND память и загрузиться из NAND памяти : 1. Собрал u-boot 2. Обработал elf файл u-boot AISGen-ном, получил AIS образ 3. Записал образ в NAND при помощи Code Composer Studio и проекта NANDWriter (из пакета OMAP-L137_FlashAndBootUtils_2_20) Если писать образ u-boot самим u-boot то не заполняются биты OOB: (не работает ECC?). Я очень хочу отказаться от ССS, но пока не получается. Лог записи образа в NAND память при помощи Code Composer Stodio (через программатор BlackHawk): Starting OMAP-L137 NANDWriter. Do you want to global erase NAND flash?n Enter the binary AIS file name to flash (enter 'none' to skip) : C:\linuxubuntu\u-boot_ti_1705_test.bin Number of blocks needed for data: 0xC Writing image data to block 0x1, page 0x0 Writing image data to block 0x1, page 0x1 ..... Writing image data to block 0xC, page 0x1 Writing image data to block 0xC, page 0x2 NAND boot preparation was successful! Из лога видно, что писать он начинает с блока 1, у моей памяти размер блока 16К, т.е. смещение от начала NAND памяти 0х4000 После старта u-boot я посмотрел дамп NAND U-Boot > nand dump 0x4000 Page 00004000 dump: 54 49 50 41 0d 59 53 58 00 00 02 00 02 09 01 18 ... 00 00 00 00 ff ff ff ff 88 21 11 11 0d 59 53 58 07 00 03 00 01 00 00 00 ff ff ff ff 11 11 11 11 OOB: ff ff ff ff ff ff 98 a3 40 7a 37 a0 21 97 c2 a3 U-Boot > Если я пишу образ u-boot средствами u-boot, дамп отличается и процессор не стартует. Как я пишу в u-boot 1. Гружу u-boot через uart slh_OMAP-L137.exe -v -waitForDevice -p COM1 u-boot_ti_1705_test.bin 2. Загружаю образ u-boot по сети, протокол tftp setenv netmask 255.0.0.0 setenv ipaddr 192.168.0.10 setenv serverip 192.168.0.5 tftp u-boot_ti_1705_test.bin 3. Пишу в NAND nand erase 0x4000 0x40000 nand write.e 0xc0700000 0x4000 0x40000 4. Ресет и плата не стратует (биты OOB не заполнены!) U-Boot > nand dump 0x4000 Page 00004000 dump: 54 49 50 41 0d 59 53 58 00 00 02 00 02 09 01 18 .... 00 00 00 00 ff ff ff ff 88 21 11 11 0d 59 53 58 07 00 03 00 01 00 00 00 ff ff ff ff 11 11 11 11 OOB: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff U-Boot >
  15. Проблема в том, что ядро не может корректно записать таблицу испорченных блоков (bad block table), т.е. блоки куда помещается таблица при следующей загрузке объявляются битыми. Есть структура static struct nand_bbt_descr da830_evm_nand_bbt_main_descr = { .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | NAND_BBT_WRITE | NAND_BBT_2BIT | NAND_BBT_VERSION | NAND_BBT_PERCHIP, .offs = 2, .len = 4, .veroffs = 16, .maxblocks = 80, .pattern = da830_evm_nand_bbt_pattern }; Определяющая таблицу. Вопрос, как ее корректно настроить? Если выкинуть флаги NAND_BBT_CREATE NAND_BBT_WRITE то работает, но я не уверен что это правильно.