
Сделал на основе патча
http://avr32linux.org/twiki/pub/Main/Compi....atmel.4.tar.gz, только с LCD выбирал строки, иначе ошибка при компиляции:
1) Добавил в файл linux-2.6.26/arch/avr32/atngw100/setup.c следующие строки
Код
static struct fb_videomode __initdata video_modes[] = {
/* {
.name = "320x240@117",
.refresh = 117,
.xres = 320, .yres = 240,
.pixclock = KHZ2PICOS(12074),
.left_margin = 40, .right_margin = 8,
.upper_margin = 14, .lower_margin = 1,
.hsync_len = 32, .vsync_len = 3,
.sync = 0,
.vmode = FB_VMODE_DOUBLE,
},*/
{
.name = "640x480@60",
.refresh = 60,
.xres = 640, .yres = 480,
.pixclock = KHZ2PICOS(23856),
//.pixclock = 25000,
.left_margin = 80, .right_margin = 16,
.upper_margin = 13, .lower_margin = 1,
.hsync_len = 64, .vsync_len = 3,
.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
},
};
static struct fb_monspecs __initdata atngw100_default_monspecs = {
.manufacturer = "ATM",
.monitor = "GENERIC",
.modedb = video_modes,
.modedb_len = ARRAY_SIZE(video_modes),
.hfmin = 14820,
.hfmax = 32000,
.vfmin = 30,
.vfmax = 200,
.dclkmax = 30000000,
};
struct atmel_lcdfb_info __initdata atngw100_lcdc_data = {
.default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
| ATMEL_LCDC_INVCLK
| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
| ATMEL_LCDC_MEMOR_BIG),
.default_monspecs = &atngw100_default_monspecs,
.guard_time = 2,
};
static struct fb_monspecs __initdata atngw100_default_monspecs = {
.manufacturer = "ATM",
.monitor = "GENERIC",
.modedb = video_modes,
.modedb_len = ARRAY_SIZE(video_modes),
.hfmin = 14820,
.hfmax = 32000,
.vfmin = 30,
.vfmax = 200,
.dclkmax = 30000000,
};
struct atmel_lcdfb_info __initdata atngw100_lcdc_data = {
.default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
| ATMEL_LCDC_INVCLK
| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
| ATMEL_LCDC_MEMOR_BIG),
.default_monspecs = &atngw100_default_monspecs,
.guard_time = 2,
};
в структуру __init atngw100_init lj, добавил
Код
at32_add_device_lcdc(0, &atngw100_lcdc_data, fbmem_start, fbmem_size);
2)В файле linux-2.6.26/arch/avr32/mach-at32ap/at32ap700x.c исправил пины:
Код
case 0:
pdev = &atmel_lcdfb0_device;
//select_peripheral(PC(19), PERIPH_A, 0); /* CC */
select_peripheral(PC(20), PERIPH_A, 0); /* HSYNC */
select_peripheral(PC(21), PERIPH_A, 0); /* PCLK */
select_peripheral(PC(22), PERIPH_A, 0); /* VSYNC */
select_peripheral(PE(1), PERIPH_B, 0); /* DVAL */
select_peripheral(PE(2), PERIPH_B, 0); /* MODE */
//select_peripheral(PC(25), PERIPH_A, 0); /* PWR */
select_peripheral(PE(3), PERIPH_B, 0); /* DATA0 */
select_peripheral(PE(4), PERIPH_B, 0); /* DATA1 */
select_peripheral(PE(5), PERIPH_B, 0); /* DATA2 */
select_peripheral(PE(6), PERIPH_B, 0); /* DATA3 */
select_peripheral(PE(7), PERIPH_B, 0); /* DATA4 */
select_peripheral(PC(31), PERIPH_A, 0); /* DATA5 */
select_peripheral(PD(0), PERIPH_A, 0); /* DATA6 */
select_peripheral(PD(1), PERIPH_A, 0); /* DATA7 */
select_peripheral(PE(8), PERIPH_B, 0); /* DATA8 */
select_peripheral(PE(9), PERIPH_B, 0); /* DATA9 */
select_peripheral(PE(10), PERIPH_B, 0); /* DATA10 */
select_peripheral(PE(11), PERIPH_B, 0); /* DATA11 */
select_peripheral(PE(12), PERIPH_B, 0); /* DATA12 */
select_peripheral(PD(7), PERIPH_A, 0); /* DATA13 */
select_peripheral(PD(8), PERIPH_A, 0); /* DATA14 */
select_peripheral(PD(9), PERIPH_A, 0); /* DATA15 */
select_peripheral(PE(13), PERIPH_B, 0); /* DATA16 */
select_peripheral(PE(14), PERIPH_B, 0); /* DATA17 */
select_peripheral(PE(15), PERIPH_B, 0); /* DATA18 */
select_peripheral(PE(16), PERIPH_B, 0); /* DATA19 */
select_peripheral(PE(17), PERIPH_B, 0); /* DATA20 */
select_peripheral(PE(18), PERIPH_B, 0); /* DATA21 */
select_peripheral(PD(16), PERIPH_A, 0); /* DATA22 */
select_peripheral(PD(17), PERIPH_A, 0); /* DATA23 */
3) Кусок конфига linux-2.6.26/arch/avr32/atngw100_defconfig:
Код
#
# Graphics support
#
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set
# CONFIG_VGASTATE is not set
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_SYS_FOPS is not set
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_ATMEL=y
# CONFIG_FB_VIRTUAL is not set
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
При загрузке выдается:
Код
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2008.08.07 15:46:03 =~=~=~=~=~=~=~=~=~=~=~=
U-Boot 1.3.0.atmel.2 (Aug 6 2008 - 23:06:08)
U-Boot code: 00000000 -> 00010380 data: 00016248 -> 0004c8b8
SDRAM: 32 MB at address 0x10000000
Testing SDRAM...OK
malloc: Using memory from 0x11f73000 to 0x11fb3000
DMA: Using memory from 0x11f6f000 to 0x11f73000
Flash: 8 MB at address 0x00000000
DRAM Configuration:
Bank #0: 10000000 32 MB
In: serial
Out: serial
Err: serial
Net: macb0, macb1
Press SPACE to abort autoboot in 1 seconds
### JFFS2 loading '/boot/uImage' to 0x90300000
Scanning JFFS2 FS: | . / - \ | / - . \ . | / . - \ | / . - . \ | . / - \ | / - \ | / - \ . | / - done.
### JFFS2 load complete: 1287369 bytes loaded to 0x90300000
## Booting image at 90300000 ...
Image Name: Linux-2.6.26
Image Type: AVR32 Linux Kernel Image (gzip compressed)
Data Size: 1287305 Bytes = 1.2 MB
Load Address: 10000000
Entry Point: 90000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting kernel at 90000000 (params at 11f73008)...
Linux version 2.6.26 (denis@p-danilevskiy.masters) (gcc version 4.2.2-atmel.1.0.8) #1 Thu Aug 7 11:55:04 OMSST 2008
CPU: AT32AP700x chip revision C
CPU: AP7 [01] core revision 0 (AVR32B arch revision 1)
CPU: MMU configuration: Shared TLB
CPU: features: dsp simd ocd perfctr java
CPU: Running at 140.000 MHz
Physical memory:
10000000-11ffffff
Reserved memory:
10000000-10192aeb: Kernel code
10192aec-1022a15f: Kernel data
10500000-10595fff: Framebuffer
Exception vectors start at 90016000
CPU: Paging enabled
Node 0: start_pfn = 0x10000, low = 0x12000
Node 0: mem_map starts at 9022d000
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
Kernel command line: console=ttyS0 root=/dev/mtdblock1 rootfstype=jffs2 fbmem=600k@0x10500000 rootwait=1
PID hash table entries: 128 (order: 7, 512 bytes)
avr32_comparator: irq 0, 140.000 MHz
Console: colour dummy device 80x25
console [ttyS0] enabled
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 29656k/29656k available (1522k kernel code, 3112k reserved, 111k data, 88k init)
SLUB: Genslabs=10, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Calibrating delay using timer specific routine.. 283.77 BogoMIPS (lpj=141885)
Mount-cache hash table entries: 512
net_namespace: 324 bytes
NET: Registered protocol family 16
pdc pdc.0: Atmel Peripheral DMA Controller enabled
at32_eic at32_eic.0: External Interrupt Controller at 0xfff00100, IRQ 19
at32_eic at32_eic.0: Handling 4 external IRQs, starting with IRQ 64
smc smc.0: Atmel Static Memory Controller at 0xfff03400
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
NET: Registered protocol family 1
JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
msgmni has been set to 57
io scheduler noop registered
io scheduler cfq registered (default)
atmel_lcdfb atmel_lcdfb.0: 600KiB frame buffer at 10500000 (mapped at b0500000)
Unable to handle kernel NULL pointer dereference at virtual address 00000000
ptbr = 90214658 pgd = 00000000
Oops: Kernel access of bad area, sig: 11 [#1]
FRAME_POINTER chip: 0x01f:0x1e82 rev 2
Modules linked in:
PC is at fb_set_cmap+0x4e/0xb4
LR is at fb_set_var+0x15a/0x1bc
pc : [<900d66be>] lr : [<900d420e>] Not tainted
sp : 91c19d24 r12: 00000000 r11: 91c3cc00
r10: 00000000 r9 : 00000000 r8 : 00000100
r7 : 91c19d34 r6 : 91c3cc08 r5 : 91c3cde0 r4 : 00000000
r3 : 91c3cc00 r2 : 00000000 r1 : 91cc4000 r0 : 91c5de00
Flags: qvNzC
Mode bits: hjmde....g
CPU Mode: Supervisor
Process: swapper [1] (task: 91c16000 thread: 91c18000)
Stack: (0x91c19d24 to 0x91c1a000)
9d20: 00000000 00000000 91c5dc00 0000ffff 900d420e 91c19e0c 91c3cc08
9d40: 91c19d5c 00000000 91c3cc00 00000000 91c3cc08 00000080 00003040 90266880
9d60: 90016fb0 00000000 9021d2ec 00000000 9003b200 91c19d94 00000008 00000020
9d80: 00000000 00400004 901fa37c 00000200 00000020 9004b7de 91c19db0 91cc5000
9da0: 90017948 91c19db4 00000000 10060011 00000000 90017a8c 91c19dc8 00000001
9dc0: 00000258 00000000 90017c9e 91c19ddc 00000001 00000258 00000000 90016c3e
9de0: 91c19df0 00400004 00000258 00000000 900e38be 91c19e0c 901fc7fc 00000258
9e00: 00000000 901fc770 91c3ce34 9000951e 91c19e4c 901fc7fc 00000258 00000000
9e20: 901fc768 91c3ce34 91c3cc00 91c3cc00 91c3cc08 00000000 901fc770 901fd474
9e40: 00000000 10500000 b0500000 900fa488 91c19e70 901fc770 901fc818 00000000
9e60: 90208c08 90208c08 9020c84c 90015294 900f9ce4 91c19e84 901fc770 901fc818
9e80: 00000000 900f9d7e 91c19ea8 901fc770 901fc818 00000000 90208c08 90208c08
9ea0: 9020c84c 90015294 900f96aa 91c19ed8 00000000 91c19ecc 00000000 900f9d50
9ec0: 90208c08 9020c84c 90015294 91c033b8 91c033b8 901fc7b8 900f9bca 91c19efc
9ee0: 00000000 90208c08 00000000 9020c67c 91cbd060 9020c84c 90015294 900f9982
9f00: 91c19f10 00000000 90208c08 00000000 900f9eb8 91c19f34 00000000 90208c08
9f20: 00000000 9001037c 90021f60 00000000 90015294 900fa5f2 91c19f58 00000000
9f40: 90208bec 00000000 9001037c 90021f60 00000000 90015294 900fa602 91c19f6c
9f60: 00000000 90208bec 00000000 90009132 91c19f80 00000000 90009124 00000000
9f80: 900003d0 91c19fdc 00000000 90009124 00000000 91c19fa4 00000000 00000000
9fa0: 00000000 90016166 00000000 00000000 00000000 00000000 00400000 90018fe8
9fc0: 90018fe8 91c1a000 00000000 00000000 00000000 00000000 00000000 90021f60
9fe0: 00000000 00000000 00000000 00000000 00000000 90021f60 90000358 00000000
Call trace:
[<900d420e>] fb_set_var+0x15a/0x1bc
[<9000951e>] atmel_lcdfb_probe+0x3e6/0x51c
[<900fa488>] platform_drv_probe+0x10/0x12
[<900f9ce4>] driver_probe_device+0x84/0xf0
[<900f9d7e>] __driver_attach+0x2e/0x44
[<900f96aa>] bus_for_each_dev+0x2e/0x4c
[<900f9bca>] driver_attach+0x12/0x14
[<900f9982>] bus_add_driver+0x6a/0x174
[<900f9eb8>] driver_register+0x58/0xb0
[<900fa5f2>] platform_driver_register+0x4a/0x50
[<900fa602>] platform_driver_probe+0xa/0x38
[<90009132>] atmel_lcdfb_init+0xe/0x14
[<900003d0>] kernel_init+0x78/0x19c
[<90021f60>] do_exit+0x0/0x430
Kernel panic - not syncing: Attempted to kill init!
Причем, на монитор что то отсылается, так как появляется ребящее разными цветами изображение, почти как белый шум на телике, только цветной

Физическое подключение еще раз проверил и прозвонил контакты, вроде все верно...
Уважаемый singlskv, Вы говорили что необходимо:
1) "...нужно подправить настройки памяти :"
2) '...настройки пинов'
3) "исправить ошибку при инициализации памяти"
Воть чесслово, искал в каких фалах енто все исправить но так и не нашел. Будте любезны, напишите имена файлов, где надо сделать исправления и каким ядром, патчем, builfroot'ом Вы пользуетесь. Жду с нетерпеним