|
AM1705 первый запуск, UBL, UART |
|
|
|
Oct 12 2011, 10:05
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441

|
Добрый день! Пытаюсь запустить AM1705 уже который день. Плата и схема моего же производства. Скачал OMAP-L137_FlashAndBootUtils_2_20. Откомпилировал благополучно. Установил частоту 300Mhz, тайминги памяти, частоту uartа. (device.c, device_uart.c) Установил strapы в BOOTMODE UART2. При старте выдает BOOTME. Пытаюсь стереть флешку командой: sfh_OMAP-L137.exe -v -p COM1 -targetType AM1707 -erase -flashType SPI_MEM Прошивка благополучно передается по UART и застревает на Код (AIS Parse): AIS complete. Jump to address 0x80000000. (AIS Parse): Waiting for DONE... (AIS Parse): Boot completed successfully.
Waiting for SFT on the OMAP-L137... Осциллографом не видно SDRAM clk - делаю вывод что до инициализации памяти дело не доходит, застревает раньше. Питание процессора подаю вручную тумблерами (сначала 1.2 потом 3.3). Не подаю питание 1.2 и 1.8 на USB так как не буду его использовать. Думал из-за этого не работает. Пробовал в инициализации PSC не включать USB. Код void DEVICE_PSCInit() { ... // for( i = 1; i <= 13; i++ ) for( i = 2; i <= 13; i++ ) PSC1->MDCTL[i] = (PSC1->MDCTL[i] & 0xFFFFFFE0) | PSC_ENABLE; ... } Не помогает. Есть jtag SAU510-USB но его подключить так и не смог. CCS4.1.2 ругается и не конектится к процессору. (не завел на плате RTCK, может из за этого) Посоветуйте хотя бы в каком направлении двигаться с этим черным ящиком, который только BOOTME выдавать может.
Сообщение отредактировал Славка - Oct 12 2011, 10:09
|
|
|
|
|
 |
Ответов
(90 - 104)
|
Dec 26 2011, 19:07
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата 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% гарантии, там он слишком примитивный.
Сообщение отредактировал sasamy - Dec 26 2011, 19:17
|
|
|
|
|
Dec 26 2011, 19:17
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 26 2011, 23:07)  Еще на рабочем ядра погоняйте на всякий случай мемтестер нормальный - то что в убуте не находит ошибок не дает 100% гарантии, там он слишком примитивный. извиняюсь, не совсем понял, а как же еще ячейки памяти проверить? разве не запись числа/чтение его и сравнение с записывемым, в юбуте реализовано именно так. еще раз спасибо
Сообщение отредактировал am1808 - Dec 26 2011, 19:24
|
|
|
|
|
Dec 26 2011, 19:26
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 26 2011, 23:24)  Ядро у вас есть рабочее - запустите там memtester (есть например в составе buildroot), корневую в initramfs соберите, у меня какие смутные воспоминания остались что было такое из-за ошибок памяти, хотя я не уверен - для успокоения своего же потестируйте память  спасибо  , для 100% уверенности, свой тестер напишу
|
|
|
|
|
Dec 26 2011, 19:48
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(am1808 @ Dec 26 2011, 23:26)  спасибо  , для 100% уверенности, свой тестер напишу 100% получить затруднительно. Как минимум прогоните длительно псевдослучайную последовательность и проверьте ground bounce. Но и это не даст гарантии. Например, доработанный хавкборд замечательно проходит любые тесты памяти и работает под linux, но падает буквально за секунды под WinCE. В общем, если есть хоть малейшие подозрения на работу памяти - тестировать безжалостно. Потом будет меньше проблем "неясной этиологии".
|
|
|
|
|
Dec 26 2011, 19:58
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Dec 26 2011, 23:26)  спасибо  , для 100% уверенности, свой тестер напишу Еще гденибуть перед этим циклом распечатайте содержимое регистров контроллера прерываний, он там как раз незадолго до этого инициализируется Цитата NR_IRQS:245
Console: colour dummy device 80x30
Calibrating delay loop... и проверьте - разрешено ли вообще прервание для таймера который там используется. UPD все же непонятно - если это ядро работает на почти таком же процессоре но на другой плате - как оно там не зависает... и тут как раз такой ключевой момент - ожидание первого тика от таймера - это помоему первое переключение контекста в системе после старта, попробуйте все же кеши отключить, и еще в меню есть такой грозный пункт  тоже можно попробовать отключить
Сообщение отредактировал sasamy - Dec 26 2011, 20:44
|
|
|
|
|
Dec 27 2011, 14:32
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
спасибо, завтра сравню регистры и конфиги для старого ядра. сегодня весь день провел за программированием ФС в нанд. все казалось бы делаю по инструкции, все вроде отрабатывает, а ядро при загрузке вот паникует и вываливает следующий лог: Код 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, когда я ему четко указал откуда брать корневую ФС?
|
|
|
|
|
Dec 27 2011, 15:23
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(aaarrr @ Dec 27 2011, 19:17)  Кстати, попробовать отключить кэши на "неработающем" ядре - это весьма дельный совет. Если оно после этого начнет запускаться, значит с весьма высокой вероятностью ваша железка имеет проблемы с памятью. Я бы проверил, по крайней мере. да, спасибо, для ядра 3.1.6 кеши точно отключены и пунк "Reset unusing clock during boot" включен. завтра обращу внимание на ядро 2.6.34, которое TI поставляло к EVM1707
Сообщение отредактировал am1808 - Dec 27 2011, 15:24
|
|
|
|
|
Jan 12 2012, 07:36
|
Частый гость
 
Группа: Участник
Сообщений: 112
Регистрация: 29-10-06
Пользователь №: 21 768

|
Добрый день. Есть плата на AM1705, 16M SDRAM, NAND. Пересобрал u-boot из SDK, добавил поддержку платы, сделал AIS образ AISGen, записал в NAND при помощи CCS4. Поднял на вирутальной машине tftp сервер, взял образ ядра из SDK. Ядро нормально загружается по сети, разворачивается и ему передается управление. После передачи управления в консоли появляется одна строка мусора. Косоль заведена на UART0; Подскажите, куда смотреть? CODE 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
|
|
|
|
|
Jan 12 2012, 16:10
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Код console=ttyS0,115200n8 передавайте такой параметр ядру, вы грузитесь с UART0, соотсветственно, ttyS0 должно решить проблему
Сообщение отредактировал am1808 - Jan 12 2012, 16:11
|
|
|
|
|
Jan 12 2012, 20:02
|
Частый гость
 
Группа: Участник
Сообщений: 112
Регистрация: 29-10-06
Пользователь №: 21 768

|
Цитата(am1808 @ Jan 12 2012, 20:10)  Код console=ttyS0,115200n8 передавайте такой параметр ядру, вы грузитесь с UART0, соотсветственно, ttyS0 должно решить проблему В предыдущем выводе так и было. Пересобрал ядро, включил early debug : CODE #make ARCH=arm defconfig da830_omapl137_defconfig #make ARCH=arm CROSS_COMPILE=arm-unknown-linux-uclibcgnueabi- uImage
Дополнительно исправил файлы : debug_macro.S CODE orr \rx, \rx, #0x00C40000 @ physical base address orr \rx, \rx, #0x00002000 @ of UART 0 board-da830-evm.c: CODE static int __init da830_evm_console_init(void) { return add_preferred_console("ttyS", 0, "115200"); } uncompress.h: CODE 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 дополнительно настроил переменные : CODE 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 и попробовал запустить, получил мусор в консоли. CODE 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. À<àààð<øøøøøøøøøøøøøøøø€ðøøø<øøøøøøøøøøøøøð Как то у меня идеи пока кончились.
|
|
|
|
|
Jan 13 2012, 07:18
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
в параметрах ядру передайте( добавьте в bootargs ) еще: Код earlyprintk и покажите лог
Сообщение отредактировал am1808 - Jan 13 2012, 07:18
|
|
|
|
|
Jan 13 2012, 07:55
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(Arischenko Ivan @ Jan 13 2012, 00:02)  Код Uncompressing Linux... done, booting the kernel. А<ааар<шшшшшшшшшшшшшшшш€ршшш<шшшшшшшшшшшшшр Больше похоже на то что baud rate на uart-ах не совпадает. Если с у четом того что советовали Цитата в параметрах ядру передайте( добавьте в bootargs ) еще: earlyprintk появится часть нормальных сообщений после Цитата Uncompressing Linux... done, booting the kernel. то на инит UART в ядре нужно смотреть и править.
Сообщение отредактировал sasamy - Jan 13 2012, 07:55
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|