December 17, 2008

NSLU2 i├žin kernel derleme

Filed under: Embedded Linux — Tags: , , , , , , — admin @ 5:20 pm

Embedded sistemler icin kernel derlediginizde asagidaki problemle karsilasmaniz muhtemeldir.
Bu problem ya kullandiginiz kerneldeki veya bootloaderdaki bir bug dan kaynaklanmaktadir.
Asagidaki yazida www.kernel.org da kernel 2.6.27 kadar gelmis bir problemin NSLU2 sistemleri icin cozumu yer almaktadir

RedBoot> ip_addr -l 192.168.1.7 -h 192.168.1.2
IP: 192.168.1.7/255.255.255.0, Gateway: 192.168.0.1
Default server: 192.168.1.2, DNS server IP: 0.0.0.0
RedBoot> load -r -b 0x1600000 zImage.bolat
Using default protocol (TFTP)
Raw file loaded 0x01600000-0x0173998f, assumed entry at 0x01600000
RedBoot> go -n 0x1600000
Uncompressing Linux……………………………………………………..
…………………………………. done, booting the kernel.

Error: unrecognized/unsupported machine ID (r1 =0x00000001).

Available machine support:
ID (hex) NAME 00000255 Linksys NSLU2

Please check your kernel config and/or bootloader.

Yukaridaki problem, bootloaderin (RedBoot) Kernele sistemin kart tanimlayici bilgisinin gecirilememesinden kaynaklanmaktadir.
Daha dogrusu Kernel bu parametreyi okuyamamaktadir.

Asagida belirtilen degisikligi yaparak bu problemi cozebilirsiniz.

linux/arch/arm/boot/compressed/head-xscale.S

dosyasina;

#ifdef CONFIG_MACH_NSLU2
mov r7, #(MACH_TYPE_NSLU2 & 0xff)
orr r7, r7, #(MACH_TYPE_NSLU2 & 0xff00)
#endif

satirlarini ekleyin. NSLU2 karti icin kernel eklentileri yapilirken bu kisim ihmal edilmistir.
Linux Kerneli bootloader tarafindan cagirilirken kernele calisacagi platform hakkinda bilgiler iceren deregerler aktarilir.
r7 registarinda kernele board id si gecirilmektedir.
Not: kernel derleme esnasinda MACH_TYPE_NSLU2 alakali olarak bir derleme hatasi aliyorsaniz bunun yerine 597 sayisini girebilirsiniz

NSLU2 kartlari icin Board ID=597 seklindedir.

Umarim faidesi dokunur.

Older Posts »

Powered by WordPress