sasamy 7 26 декабря, 2011 Опубликовано 26 декабря, 2011 (изменено) · Жалоба Calibrating delay loop... Скорей всего не работает системный таймер - прерывания не приходят от него, поэтому зацикливается. pr_info("Calibrating delay loop... "); while ((loops_per_jiffy <<= 1) != 0) { /* wait for "start of" clock tick */ ticks = jiffies; while (ticks == jiffies) /* nothing */; А вот почему не работает - это другой вопрос. Сравните инициализацию таймеров в старом и новом ядре, в старом она тут arch/arm/mach-davinci/time.c я не знаком с этим процессором, тут ничего не подскажу. Еще на рабочем ядре погоняйте на всякий случай мемтестер нормальный - то что в убуте не находит ошибок не дает 100% гарантии, там он слишком примитивный. Изменено 26 декабря, 2011 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
am1808 0 26 декабря, 2011 Опубликовано 26 декабря, 2011 (изменено) · Жалоба Еще на рабочем ядра погоняйте на всякий случай мемтестер нормальный - то что в убуте не находит ошибок не дает 100% гарантии, там он слишком примитивный. извиняюсь, не совсем понял, а как же еще ячейки памяти проверить? разве не запись числа/чтение его и сравнение с записывемым, в юбуте реализовано именно так. еще раз спасибо Изменено 26 декабря, 2011 пользователем am1808 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 7 26 декабря, 2011 Опубликовано 26 декабря, 2011 (изменено) · Жалоба извиняюсь, не совсем понял? Ядро у вас есть рабочее - запустите memtester из-под Linux (есть например в составе buildroot), корневую в initramfs соберите, у меня какие смутные воспоминания остались что было такое из-за ошибок памяти, хотя я не уверен - для успокоения своего же потестируйте память :) Изменено 26 декабря, 2011 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
am1808 0 26 декабря, 2011 Опубликовано 26 декабря, 2011 · Жалоба Ядро у вас есть рабочее - запустите там memtester (есть например в составе buildroot), корневую в initramfs соберите, у меня какие смутные воспоминания остались что было такое из-за ошибок памяти, хотя я не уверен - для успокоения своего же потестируйте память :) спасибо :beer: , для 100% уверенности, свой тестер напишу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 26 декабря, 2011 Опубликовано 26 декабря, 2011 · Жалоба спасибо :beer: , для 100% уверенности, свой тестер напишу 100% получить затруднительно. Как минимум прогоните длительно псевдослучайную последовательность и проверьте ground bounce. Но и это не даст гарантии. Например, доработанный хавкборд замечательно проходит любые тесты памяти и работает под linux, но падает буквально за секунды под WinCE. В общем, если есть хоть малейшие подозрения на работу памяти - тестировать безжалостно. Потом будет меньше проблем "неясной этиологии". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 7 26 декабря, 2011 Опубликовано 26 декабря, 2011 (изменено) · Жалоба спасибо :beer: , для 100% уверенности, свой тестер напишу Еще гденибуть перед этим циклом распечатайте содержимое регистров контроллера прерываний, он там как раз незадолго до этого инициализируется NR_IRQS:245 Console: colour dummy device 80x30 Calibrating delay loop... и проверьте - разрешено ли вообще прервание для таймера который там используется. UPD все же непонятно - если это ядро работает на почти таком же процессоре но на другой плате - как оно там не зависает... и тут как раз такой ключевой момент - ожидание первого тика от таймера - это помоему первое переключение контекста в системе после старта, попробуйте все же кеши отключить, и еще в меню есть такой грозный пункт :) тоже можно попробовать отключить Изменено 26 декабря, 2011 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
am1808 0 27 декабря, 2011 Опубликовано 27 декабря, 2011 · Жалоба спасибо, завтра сравню регистры и конфиги для старого ядра. сегодня весь день провел за программированием ФС в нанд. все казалось бы делаю по инструкции, все вроде отрабатывает, а ядро при загрузке вот паникует и вываливает следующий лог: U-Boot > loadb ## Ready for binary (kermit) download to 0xC0700000 at 115200 bps... ## Total Size = 0x001d48c0 = 1919168 Bytes ## Start Addr = 0xC0700000 U-Boot > bootm ## Booting kernel from Legacy Image at c0700000 ... Image Name: Linux-3.1.6 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1919104 Bytes = 1.8 MB Load Address: c0008000 Entry Point: c0008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK mem.start: c0000000 mem.size: 2000000 bytes 32 MB Starting kernel ... debug: jump to c0008000 address debug: start boot params address: c0000100 debug: data debug: machID 1781 Uncompressing Linux... done, booting the kernel. Linux version 3.1.6 (xxx@ubuntu) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1- 203) ) #10 PREEMPT Tue Dec 27 11:33:39 MSK 2011 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 CPU: VIVT data cache, VIVT instruction cache Machine: DaVinci DA830/OMAP-L137/AM17x EVM bootconsole [earlycon0] enabled Memory policy: ECC disabled, Data cache writethrough DaVinci da830/omap-l137 rev2.0 variant 0x9 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 Kernel command line: console=ttyS2,115200n8 mem=32M earlyprintk ip=off root=/dev /mtdblock0 rw rootfstype=jffs2 PID hash table entries: 128 (order: -3, 512 bytes) Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) Memory: 32MB = 32MB total Memory: 28584k/28584k available, 4184k reserved, 0K highmem Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) DMA : 0xff000000 - 0xffe00000 ( 14 MB) vmalloc : 0xc2800000 - 0xfea00000 ( 962 MB) lowmem : 0xc0000000 - 0xc2000000 ( 32 MB) modules : 0xbf000000 - 0xc0000000 ( 16 MB) .text : 0xc0008000 - 0xc0358508 (3394 kB) .init : 0xc0359000 - 0xc037a000 ( 132 kB) .data : 0xc037a000 - 0xc039f080 ( 149 kB) .bss : 0xc039f0a4 - 0xc03c40ac ( 149 kB) SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 Preemptible hierarchical RCU implementation. NR_IRQS:245 Console: colour dummy device 80x30 Calibrating delay loop... 148.88 BogoMIPS (lpj=744448) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok DaVinci: 128 gpio irqs print_constraints: dummy: NET: Registered protocol family 16 bio: create slab <bio-0> at 0 Switching to clocksource timer0_0 Switched to NOHz mode on CPU #0 NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 1024 (order: 1, 8192 bytes) TCP bind hash table entries: 1024 (order: 0, 4096 bytes) TCP: Hash tables configured (established 1024 bind 1024) TCP reno registered UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. JFFS2 version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. msgmni has been set to 55 io scheduler noop registered (default) start plist test end plist test Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a 16550A serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a 16550A serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a 16550A console [ttyS2] enabled, bootconsole disabled console [ttyS2] enabled, bootconsole disabled brd: module loaded ONFI flash detected ONFI param page 0 valid NAND device: Manufacturer ID: 0x2c, Chip ID: 0xf1 (Micron MT29F1G08ABADAWP) Creating 1 MTD partitions on "davinci_nand.1": 0x000000000000-0x000008000000 : "filesystem" davinci_nand davinci_nand.1: controller rev. 2.5 spi_davinci spi_davinci.0: DMA: supported spi_davinci spi_davinci.0: DMA: RX channel: 14, TX channel: 15, event queue: 0 spi_davinci spi_davinci.0: Controller at 0xfec41000 davinci_mdio davinci_mdio.0: davinci mdio revision 1.5 davinci_mdio davinci_mdio.0: detected phy mask fffffff1 davinci_mdio.0: probed davinci_mdio davinci_mdio.0: phy[1]: device 0:01, driver unknown davinci_mdio davinci_mdio.0: phy[2]: device 0:02, driver unknown davinci_mdio davinci_mdio.0: phy[3]: device 0:03, driver unknown rtc-test rtc-test.0: rtc core: registered test as rtc0 rtc-test rtc-test.1: rtc core: registered test as rtc1 i2c /dev entries driver watchdog watchdog: heartbeat 60 sec SoftDog: cannot register miscdev on minor=130 (err=-16) cpuidle: using governor ladder cpuidle: using governor menu TCP cubic registered NET: Registered protocol family 17 davinci_emac davinci_emac.1: using random MAC addr: d2:0d:54:78:68:1c console [netcon0] enabled netconsole: network logging started rtc-test rtc-test.0: setting system clock to 1970-01-01 00:00:02 UTC (2) Root-NFS: no NFS server address VFS: Unable to mount root fs via NFS, trying floppy. List of all partitions: No filesystem could mount root, tried: jffs2 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) [<c000d830>] (unwind_backtrace+0x0/0xf8) from [<c0284cd4>] (panic+0x60/0x1a8) [<c0284cd4>] (panic+0x60/0x1a8) from [<c0359dcc>] (mount_block_root+0x1c8/0x224) [<c0359dcc>] (mount_block_root+0x1c8/0x224) from [<c0359ea8>] (mount_root+0x80/0 xc8) [<c0359ea8>] (mount_root+0x80/0xc8) from [<c0359ffc>] (prepare_namespace+0x10c/0 x1c8) [<c0359ffc>] (prepare_namespace+0x10c/0x1c8) from [<c035928c>] (kernel_init+0xec /0x12c) [<c035928c>] (kernel_init+0xec/0x12c) from [<c0009c9c>] (kernel_thread_exit+0x0/ 0x8) BOOTME bootargs=console=ttyS2,115200n8 mem=32M earlyprintk root=/dev/mtdblock0 rw rootfstype=jffs2 ip=off корневую ФС базовую скачал с офиц. сайта. распаковал и установил туда kernel headers and modules. собирал jffs2.bin следующим образом: # mkfs.jffs2 -p -d rootfs -s 2048 -e 0x20000 -l -q -o rootfs.jffs2 -v –n NAND Organization: – Page size x8: 2112 bytes (2048 + 64 bytes) – Page size x16: 1056 words (1024 + 32 words) – Block size: 64 pages (128K + 4K bytes) – Device size: 1Gb: 1024 blocks получившийся образ ФС я заливаю по терминалу в оперативку борды, затем делаю: 1. nand erase 0 0x08000000 2. nand write.jffs2 0xc0700000 0 $filesize все удачно программируется, затем гружу ядро( NAND & JFFS2 включены при сборке ядра) куда копать и что делать? подскажите пожалуйста. и еще, почему ядро первым делом пытается примонтировать ФС по NFS, когда я ему четко указал откуда брать корневую ФС? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 27 декабря, 2011 Опубликовано 27 декабря, 2011 · Жалоба Кстати, попробовать отключить кэши на "неработающем" ядре - это весьма дельный совет. Если оно после этого начнет запускаться, значит с весьма высокой вероятностью ваша железка имеет проблемы с памятью. Я бы проверил, по крайней мере. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
am1808 0 27 декабря, 2011 Опубликовано 27 декабря, 2011 (изменено) · Жалоба Кстати, попробовать отключить кэши на "неработающем" ядре - это весьма дельный совет. Если оно после этого начнет запускаться, значит с весьма высокой вероятностью ваша железка имеет проблемы с памятью. Я бы проверил, по крайней мере. да, спасибо, для ядра 3.1.6 кеши точно отключены и пунк "Reset unusing clock during boot" включен. завтра обращу внимание на ядро 2.6.34, которое TI поставляло к EVM1707 Изменено 27 декабря, 2011 пользователем am1808 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
am1808 0 28 декабря, 2011 Опубликовано 28 декабря, 2011 · Жалоба всем преогромное спасибо, весь прикол был только в Reset unusing clock during boot, неободимо включить такой параметр. с корневой фс вопрос решен Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivan1180 0 12 января, 2012 Опубликовано 12 января, 2012 · Жалоба Добрый день. Есть плата на AM1705, 16M SDRAM, NAND. Пересобрал u-boot из SDK, добавил поддержку платы, сделал AIS образ AISGen, записал в NAND при помощи CCS4. Поднял на вирутальной машине tftp сервер, взял образ ядра из SDK. Ядро нормально загружается по сети, разворачивается и ему передается управление. После передачи управления в консоли появляется одна строка мусора. Косоль заведена на UART0; Подскажите, куда смотреть? U-Boot 2009.11 (Dec 28 2011 - 22:38:45) DRAM: 16 MB NAND: 64 MiB Bad block table found at page 131040, version 0x01 Bad block table found at page 131008, version 0x01 nand_bbt: ECC error while reading bad block table *** Warning - bad CRC or NAND, using default environment In: serial Out: serial Err: serial ARM Clock : 300000000 Hz Net: Ethernet PHY: GENERIC @ 0x07 Hit any key to stop autoboot: 0 U-Boot > setenv bootargs mem=16M console=ttyS2,115200n8 root=/dev/mmcblk0p1 rw rootwait ip=off U-Boot > printenv bootcmd=sf probe 0;sf read 0xc0700000 0x60000 0x220000;bootm 0xc0700000 bootdelay=60 baudrate=115200 bootfile="uImage" stdin=serial stdout=serial stderr=serial ethaddr=0a:0b:14:00:15:16 ver=U-Boot 2009.11 (Dec 28 2011 - 22:38:45) bootargs=mem=16M console=ttyS2,115200n8 root=/dev/mmcblk0p1 rw rootwait ip=off Environment size: 309/131068 bytes U-Boot > setenv bootargs mem=16M console=ttyS0,115200n8 root=/dev/mmcblk0p1 rw rootwait ip=off U-Boot > setenv netmask 255.0.0.0 U-Boot > setenv ipaddr 192.168.0.10 U-Boot > setenv serverip 192.168.0.5 U-Boot > tftp uImage Using device TFTP from server 192.168.0.5; our IP address is 192.168.0.10 Filename 'uImage'. Load address: 0xc0700000 Loading: #####T ############################################################ ####T #########################################################T #### #############T #######################################T ############# ################################################################# ##################T #####################################T ########## ###T #########T ################################T #################### done Bytes transferred = 1990068 (1e5db4 hex) U-Boot > bootm ## Booting kernel from Legacy Image at c0700000 ... Image Name: Linux-2.6.33-rc4 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1990004 Bytes = 1.9 MB Load Address: c0008000 Entry Point: c0008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... A<a???oooo<ooooooooooooo?oooA?ooo?ooo€a Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
am1808 0 12 января, 2012 Опубликовано 12 января, 2012 (изменено) · Жалоба console=ttyS0,115200n8 передавайте такой параметр ядру, вы грузитесь с UART0, соотсветственно, ttyS0 должно решить проблему Изменено 12 января, 2012 пользователем am1808 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivan1180 0 12 января, 2012 Опубликовано 12 января, 2012 · Жалоба console=ttyS0,115200n8 передавайте такой параметр ядру, вы грузитесь с UART0, соотсветственно, ttyS0 должно решить проблему В предыдущем выводе так и было. Пересобрал ядро, включил early debug : #make ARCH=arm defconfig da830_omapl137_defconfig #make ARCH=arm CROSS_COMPILE=arm-unknown-linux-uclibcgnueabi- uImage Дополнительно исправил файлы : debug_macro.S orr \rx, \rx, #0x00C40000 @ physical base address orr \rx, \rx, #0x00002000 @ of UART 0 board-da830-evm.c: static int __init da830_evm_console_init(void) { return add_preferred_console("ttyS", 0, "115200"); } uncompress.h: static u32 *get_uart_base(void) { if (__machine_arch_type == MACH_TYPE_DAVINCI_DA830_EVM || __machine_arch_type == MACH_TYPE_DAVINCI_DA850_EVM) return (u32 *)DA8XX_UART0_BASE; else return (u32 *)DAVINCI_UART0_BASE; } После запуска u-boot дополнительно настроил переменные : U-Boot > setenv bootargs mem=16M console=ttyS0,115200n8 root=/dev/mmcblk0p1 rw rootwait ip=off U-Boot > setenv netmask 255.0.0.0 U-Boot > setenv ipaddr 192.168.0.10 U-Boot > setenv serverip 192.168.0.5 Загрузил по tftp и попробовал запустить, получил мусор в консоли. U-Boot 2009.11 (Jan 12 2012 - 00:21:11) DRAM: 16 MB NAND: 64 MiB Bad block table found at page 131040, version 0x01 Bad block table found at page 131008, version 0x01 nand_bbt: ECC error while reading bad block table *** Warning - bad CRC or NAND, using default environment In: serial Out: serial Err: serial ARM Clock : 300000000 Hz Net: Ethernet PHY: GENERIC @ 0x07 Hit any key to stop autoboot: 0 U-Boot > setenv bootargs mem=16M console=ttyS0,115200n8 root=/dev/mmcblk0p1 rw rootwait ip=off U-Boot > setenv netmask 255.0.0.0 U-Boot > setenv ipaddr 192.168.0.10 U-Boot > setenv serverip 192.168.0.5 U-Boot > tftp uImage Using device TFTP from server 192.168.0.5; our IP address is 192.168.0.10 Filename 'uImage'. Load address: 0xc0700000 Loading: ################################################################# ################################################################# ###T #################T ############################################# ################################################################# ################################################################# ################################################################# ### done Bytes transferred = 2008176 (1ea470 hex) U-Boot > bootm ## Booting kernel from Legacy Image at c0700000 ... Image Name: Linux-2.6.33-rc4 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2008112 Bytes = 1.9 MB Load Address: c0008000 Entry Point: c0008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel. À<àààð<øøøøøøøøøøøøøøøø€ðøøø<øøøøøøøøøøøøøð Как то у меня идеи пока кончились. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
am1808 0 13 января, 2012 Опубликовано 13 января, 2012 (изменено) · Жалоба в параметрах ядру передайте( добавьте в bootargs ) еще: earlyprintk и покажите лог Изменено 13 января, 2012 пользователем am1808 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 7 13 января, 2012 Опубликовано 13 января, 2012 (изменено) · Жалоба Uncompressing Linux... done, booting the kernel. А<ааар<шшшшшшшшшшшшшшшш€ршшш<шшшшшшшшшшшшшр Больше похоже на то что baud rate на uart-ах не совпадает. Если с у четом того что советовали в параметрах ядру передайте( добавьте в bootargs ) еще: earlyprintk появится часть нормальных сообщений после Uncompressing Linux... done, booting the kernel. то на инит UART в ядре нужно смотреть и править. Изменено 13 января, 2012 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться