前言

  • 经过多次尝试,基于AT91SAM9261EK的Linux 内核终于启动了,内核版本先回退到了:Linux 2.6.39,之所以回退这个版本,因为这个版本是linux-at91最老的分支

环境

  • arm gcc 的交叉编译器:gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202)
  • AT91Bootstrap 3.10.4
  • U-Boot 2015.01
  • Linux version 2.6.39
  • 编译主机:Ubuntu 20.04.4 LTS

搭建过程

  • 首先使用最新的 gcc version 9.4.0,无法编译较老的 Linux 2.6.39,因此使用 2010q1-202,这个arm gcc 工具链全称为:arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu
  • 编译过程中遇到了两个问题

问题一

  • Can't use 'defined(@array)'
  • 【解决方法】这个根据网上的提示,把这个defined 移除即可

diff --git a/kernel/timeconst.pl b/kernel/timeconst.pl
index eb51d76e058a..063fcc0b52fb 100644
--- a/kernel/timeconst.pl
+++ b/kernel/timeconst.pl
@@ -370,7 +370,7 @@ if ($hz eq '--can') {}@val = @{$canned_values{$hz}};
-       if (!defined(@val)) {+       if (!(@val)) {@val = compute_values($hz);}output($hz, @val);

第二个问题:

  • drivers/video/atmel_lcdfb.c 中报:'struct atmel_lcdfb_info' has no member named 'bl_power'
drivers/video/atmel_lcdfb.c: In function 'atmel_bl_update_status':
drivers/video/atmel_lcdfb.c:92: error: 'struct atmel_lcdfb_info' has no member named 'bl_power'
drivers/video/atmel_lcdfb.c:99: error: 'struct atmel_lcdfb_info' has no member named 'bl_power'
drivers/video/atmel_lcdfb.c:101: error: 'struct atmel_lcdfb_info' has no member named 'bl_power'
drivers/video/atmel_lcdfb.c:113: error: 'struct atmel_lcdfb_info' has no member named 'bl_power'
make[2]: *** [scripts/Makefile.build:284: drivers/video/atmel_lcdfb.o] Error 1
make[1]: *** [scripts/Makefile.build:419: drivers/video] Error 2
make: *** [Makefile:919: drivers] Error 2

  • 【解决方法】对比新的分支代码,如 linux-3.4.9-at91,使用背光的【宏】,处理一下即可
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index 402cb24e49f3..554d85356ce8 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
@@ -9,6 +9,7 @@*/#include <linux/kernel.h>
+#include <linux/module.h>#include <linux/platform_device.h>#include <linux/interrupt.h>#include <linux/backlight.h>
@@ -85,6 +86,7 @@ static void atmel_lcdfb_update_dma(struct fb_info *info,atmel_lcdfb_update_dma2d(sinfo, var);}+#if defined(CONFIG_BACKLIGHT_ATMEL_LCDC)/* some bl->props field just changed */static int atmel_bl_update_status(struct backlight_device *bl){@@ -122,11 +124,6 @@ static int atmel_bl_get_brightness(struct backlight_device *bl)return lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_VAL);}-static const struct backlight_ops atmel_lcdc_bl_ops = {-       .update_status = atmel_bl_update_status,
-       .get_brightness = atmel_bl_get_brightness,
-};
-static void atmel_lcdfb_init_contrast(struct atmel_lcdfb_info *sinfo){/* contrast pwm can be 'inverted' */
@@ -137,6 +134,24 @@ static void atmel_lcdfb_init_contrast(struct atmel_lcdfb_info *sinfo)lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, contrast_ctr);lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, ATMEL_LCDC_CVAL_DEFAULT);}
+#else
+static int atmel_bl_update_status(struct backlight_device *bl)
+{+               return 0;
+}
+
+static int atmel_bl_get_brightness(struct backlight_device *bl)
+{+               return ATMEL_LCDC_CVAL_DEFAULT;
+}
+
+static void atmel_lcdfb_init_contrast(struct atmel_lcdfb_info *sinfo) {}
+#endif
+
+static const struct backlight_ops atmel_lcdc_bl_ops = {+               .update_status = atmel_bl_update_status,
+                       .get_brightness = atmel_bl_get_brightness,
+};void atmel_lcdfb_start(struct atmel_lcdfb_info *sinfo){


编译命令

  • 这个Linux 2.6.39,比较的老,可以直接编译,不需要传入什么参数
make distclean    /* 清理一下工程 */
make ARCH=arm at91sam9261ek_defconfig   /* ARCH=arm 需要的,除非Makefile中写死 */
make uImage ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-  /* 编译uImage */

烧写

  • 编译成功后,生成的产物目录:arch/arm/boot/zImage
  OBJCOPY arch/arm/boot/zImageKernel: arch/arm/boot/zImage is readyUIMAGE  arch/arm/boot/uImage
Image Name:   Linux-2.6.39+
Created:      Mon May  2 00:27:32 2022
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1436876 Bytes = 1403.20 KiB = 1.37 MiB
Load Address: 20008000
Entry Point:  20008000Image arch/arm/boot/uImage is ready
  • 烧写时,这里使用NandFlash启动,所以烧写到NandFlash中,注意其实地址为:0x20 0000,也就是偏移 2M 的地址
  • 可以把NandFlash 全部擦除,重新烧写 BootStrap、U-Boot、uImage

运行

  • 使用sam-ba 烧写完后,关闭 sam-ba,然后重启开发板,看到了Linux内核启动的信息了,因为没有根文件系统,所以最后会报错
RomBOOTAT91Bootstrap 3.10.4-00001-g4a8de59c (2022-04-27 00:21:44)NAND: ONFI not supported
NAND: Manufacturer ID: 0xec Chip ID: 0xf1
NAND: Disable On-Die ECC
NAND: Press the recovery button (BP4) to recovery
NAND: Using Software ECC
NAND: Image: Copy 0xa0000 bytes from 0x40000 to 0x21f00000
NAND: Done to load imageU-Boot 2015.01-linux4sam_5.2-00004-g0bb01949e9 (May 01 2022 - 23:13:53)CPU: AT91SAM9261
Crystal frequency:   18.432 MHz
CPU clock        :  198.656 MHz
Master clock     :   99.328 MHz
DRAM:  64 MiB
WARNING: Caches not enabled
NAND:  128 MiB
*** Warning - bad CRC, using default environmentIn:    serial
Out:   serial
Err:   serial
Net:   dm9000
Error: dm9000 address not set.dm9000 i/o: 0x30000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 00:00:00:00:00:00
WARNING: Bad MAC address (uninitialized EEPROM?)
could not establish link
Hit any key to stop autoboot:  0 NAND read: device 0 offset 0x200000, size 0x3000003145728 bytes read: OK
## Booting kernel from Legacy Image at 22000000 ...Image Name:   Linux-2.6.39+Image Type:   ARM Linux Kernel Image (uncompressed)Data Size:    1436876 Bytes = 1.4 MiBLoad Address: 20008000Entry Point:  20008000Verifying Checksum ... OKLoading Kernel Image ... OKStarting kernel ...Uncompressing Linux... done, booting the kernel.
Linux version 2.6.39+ (root@pluto-os) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202) ) #2 Mon May 2 00:26:41 CST 2022
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Atmel AT91SAM9261-EK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: console=ttyS0,115200 earlyprintk mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,256k(env),256k(env_redundant),256k(spare),512k(dtb),6M(kernel)ro,-(rootfs) root=/dev/mtdblock7 rw rootfstype=jffs2
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 61952k/61952k available, 3584k reserved, 0K highmem
Virtual kernel memory layout:vector  : 0xffff0000 - 0xffff1000   (   4 kB)fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)DMA     : 0xffc00000 - 0xffe00000   (   2 MB)vmalloc : 0xc4800000 - 0xfee00000   ( 934 MB)lowmem  : 0xc0000000 - 0xc4000000   (  64 MB)modules : 0xbf000000 - 0xc0000000   (  16 MB).init : 0xc0008000 - 0xc0025000   ( 116 kB).text : 0xc0025000 - 0xc02b2000   (2612 kB).data : 0xc02b2000 - 0xc02d1540   ( 126 kB)
NR_IRQS:192
AT91: 96 gpio irqs in 3 banks
Console: colour dummy device 80x30
console [ttyS0] enabled
Calibrating delay loop... 98.71 BogoMIPS (lpj=493568)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
AT91: Power Management
AT91: Starting after user reset
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
i2c-gpio i2c-gpio: using pins 39 (SDA) and 40 (SCL)
Switching to clocksource pit
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
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
NetWinder Floating Point Emulator V0.97 (double precision)
msgmni has been set to 121
io scheduler noop registered (default)
atmel_lcdfb atmel_lcdfb.0: clut resources unusable
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
brd: module loaded
atmel_nand atmel_nand: No DMA support for NAND access.
NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-bit)
Scanning device for bad blocks
Bad eraseblock 446 at 0x0000037c0000
Bad eraseblock 994 at 0x000007c40000
8 cmdlinepart partitions found on MTD device atmel_nand
Creating 8 MTD partitions on "atmel_nand":
0x000000000000-0x000000040000 : "bootstrap"
0x000000040000-0x0000000c0000 : "uboot"
0x0000000c0000-0x000000100000 : "env"
0x000000100000-0x000000140000 : "env_redundant"
0x000000140000-0x000000180000 : "spare"
0x000000180000-0x000000200000 : "dtb"
0x000000200000-0x000000800000 : "kernel"
0x000000800000-0x000008000000 : "rootfs"
atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffc8000 (irq 12)
dm9000 Ethernet Driver, V1.31
dm9000 dm9000.0: eth%d: Invalid ethernet MAC address. Please set using ifconfig
dm9000 dm9000.0: eth0: Features changed: 0x00004802 -> 0x00004002
eth0: dm9000a at c4814000,c481e044 IRQ 107 MAC: 12:f3:db:e5:d2:ac (random)
usbmon: debugfs is not available
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 20, io mem 0x00500000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
udc: at91_udc version 3 May 2006
mousedev: PS/2 mouse device common for all mice
input: gpio-keys as /devices/platform/gpio-keys/input/input0
ads7846 spi0.2: touchscreen, irq 29
kernel BUG at arch/arm/mm/dma-mapping.c:451!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 805 [#1]
last sysfs file:
Modules linked in:
CPU: 0    Not tainted  (2.6.39+ #2)
PC is at __bug+0x24/0x30
LR is at console_unlock+0x170/0x188
pc : [<c002dfd4>]    lr : [<c003bf64>]    psr: 60000093
sp : c381bcdc  ip : c381bc28  fp : c381bce8
r10: 00000000  r9 : c396b000  r8 : c3973c7c
r7 : c3973c28  r6 : c3973c08  r5 : c3960a00  r4 : c3973c7c
r3 : 00000000  r2 : c02b943c  r1 : c02b9464  r0 : 00000033
Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 0005317f  Table: 20004000  DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc381a260)
Stack: (0xc381bcdc to 0xc381c000)
bcc0:                                                                c381bcf8
bce0: c381bcec c002f708 c002dfc0 c381bd0c c381bcfc c01629b4 c002f6dc c3960ae8
bd00: c381bd30 c381bd10 c01630fc c0162998 c395ae60 00000000 0000000c c02bb438
bd20: 00000000 c381bd60 c381bd34 c0067910 c0162fa0 c02b9420 c02bb438 00000000
bd40: 0000000c 00000002 c381bdf8 c396b000 c3815d60 c381bd74 c381bd64 c0067aa0
bd60: c00678ec c02bb438 c381bd88 c381bd78 c0069bc0 c0067a80 0000000c c381bda0
bd80: c381bd8c c0025078 c0069b1c ffffffff fefff000 c381be24 c381bda4 c002b188
bda0: c0025010 c381be00 00000000 c381be3c 40000013 7fffffff c381be38 c381a000
bdc0: 00000002 c381bdf8 c396b000 c3815d60 c381be24 00000000 c381bdec c0219c88
bde0: c0219d00 40000013 ffffffff 00000001 c3815d60 c00367c8 c381be3c c381be3c
be00: c3973c08 00000000 00000000 c391c6a0 c3960a00 c396b3e4 c381be34 c381be28
be20: c0219e4c c0219c44 c381be64 c381be38 c016213c c0219e44 00000000 c381bdf8
be40: c381bdf8 c396b000 c02b8cb4 c3973c00 c391c6a0 c3973c08 c381be74 c381be68
be60: c0162184 c01620c0 c381bebc c381be78 c0219304 c0162180 c02947db c396b000
be80: c396b2e4 00000000 c02cd144 c395a860 c396f000 c391c6a0 c391c6a0 c02cd144
bea0: c02cd144 00000000 00000000 00000000 c381becc c381bec0 c0161c1c c021881c
bec0: c381beec c381bed0 c013d7e8 c0161c0c c391c6a0 c391c6d4 c02cd144 00000000
bee0: c381bf08 c381bef0 c013d908 c013d740 c02cd144 c013d8a0 00000000 c381bf2c
bf00: c381bf0c c013cfe4 c013d8b0 c3830838 c39588d0 c02cd144 c3972bc0 c02c9640
bf20: c381bf3c c381bf30 c013d624 c013cfa0 c381bf68 c381bf40 c013c8cc c013d614
bf40: c02947db c02cd144 c001bf70 00000000 00000013 00000000 00000000 c381bf8c
bf60: c381bf6c c013df5c c013c834 c0021198 c001bf70 00000000 00000013 00000000
bf80: c381bf9c c381bf90 c01628bc c013debc c381bfac c381bfa0 c001bf84 c0162880
bfa0: c381bfe0 c381bfb0 c0025408 c001bf80 000000bf c00083c8 c003e794 c0021198
bfc0: c00083c8 c003e794 00000013 00000000 00000000 c381bff4 c381bfe4 c000845c
bfe0: c0025374 00000000 00000000 c381bff8 c003e794 c00083d8 00000000 00000000
Backtrace:
[<c002dfb0>] (__bug+0x0/0x30) from [<c002f708>] (___dma_single_dev_to_cpu+0x3c/0x64)
[<c002f6cc>] (___dma_single_dev_to_cpu+0x0/0x64) from [<c01629b4>] (atmel_spi_dma_unmap_xfer+0x2c/0x4c)
[<c0162988>] (atmel_spi_dma_unmap_xfer+0x0/0x4c) from [<c01630fc>] (atmel_spi_interrupt+0x16c/0x208)r4:c3960ae8
[<c0162f90>] (atmel_spi_interrupt+0x0/0x208) from [<c0067910>] (handle_irq_event_percpu+0x34/0x194)r8:00000000 r7:c02bb438 r6:0000000c r5:00000000 r4:c395ae60
[<c00678dc>] (handle_irq_event_percpu+0x0/0x194) from [<c0067aa0>] (handle_irq_event+0x30/0x40)
[<c0067a70>] (handle_irq_event+0x0/0x40) from [<c0069bc0>] (handle_level_irq+0xb4/0xdc)r4:c02bb438
[<c0069b0c>] (handle_level_irq+0x0/0xdc) from [<c0025078>] (asm_do_IRQ+0x78/0xa8)r4:0000000c
[<c0025000>] (asm_do_IRQ+0x0/0xa8) from [<c002b188>] (__irq_svc+0x28/0x60)
Exception stack(0xc381bda4 to 0xc381bdec)
bda0:          c381be00 00000000 c381be3c 40000013 7fffffff c381be38 c381a000
bdc0: 00000002 c381bdf8 c396b000 c3815d60 c381be24 00000000 c381bdec c0219c88
bde0: c0219d00 40000013 ffffffffr5:fefff000 r4:ffffffff
[<c0219c34>] (wait_for_common+0x0/0x170) from [<c0219e4c>] (wait_for_completion+0x18/0x1c)
[<c0219e34>] (wait_for_completion+0x0/0x1c) from [<c016213c>] (__spi_sync+0x8c/0xa8)
[<c01620b0>] (__spi_sync+0x0/0xa8) from [<c0162184>] (spi_sync+0x14/0x18)r8:c3973c08 r7:c391c6a0 r6:c3973c00 r5:c02b8cb4 r4:c396b000
[<c0162170>] (spi_sync+0x0/0x18) from [<c0219304>] (ads7846_probe+0xaf8/0xc20)
[<c021880c>] (ads7846_probe+0x0/0xc20) from [<c0161c1c>] (spi_drv_probe+0x20/0x24)
[<c0161bfc>] (spi_drv_probe+0x0/0x24) from [<c013d7e8>] (driver_probe_device+0xb8/0x170)
[<c013d730>] (driver_probe_device+0x0/0x170) from [<c013d908>] (__driver_attach+0x68/0x8c)r7:00000000 r6:c02cd144 r5:c391c6d4 r4:c391c6a0
[<c013d8a0>] (__driver_attach+0x0/0x8c) from [<c013cfe4>] (bus_for_each_dev+0x54/0x84)r6:00000000 r5:c013d8a0 r4:c02cd144
[<c013cf90>] (bus_for_each_dev+0x0/0x84) from [<c013d624>] (driver_attach+0x20/0x28)r6:c02c9640 r5:c3972bc0 r4:c02cd144
[<c013d604>] (driver_attach+0x0/0x28) from [<c013c8cc>] (bus_add_driver+0xa8/0x21c)
[<c013c824>] (bus_add_driver+0x0/0x21c) from [<c013df5c>] (driver_register+0xb0/0x140)
[<c013deac>] (driver_register+0x0/0x140) from [<c01628bc>] (spi_register_driver+0x4c/0x60)r8:00000000 r7:00000013 r6:00000000 r5:c001bf70 r4:c0021198
[<c0162870>] (spi_register_driver+0x0/0x60) from [<c001bf84>] (ads7846_init+0x14/0x1c)
[<c001bf70>] (ads7846_init+0x0/0x1c) from [<c0025408>] (do_one_initcall+0xa4/0x17c)
[<c0025364>] (do_one_initcall+0x0/0x17c) from [<c000845c>] (kernel_init+0x94/0x144)r9:00000000 r8:00000000 r7:00000013 r6:c003e794 r5:c00083c8
r4:c0021198
[<c00083c8>] (kernel_init+0x0/0x144) from [<c003e794>] (do_exit+0x0/0x660)r4:00000000
Code: e59f0010 e1a01003 eb07ae9c e3a03000 (e5833000)
---[ end trace c751bc77ee2ec16a ]---
Kernel panic - not syncing: Fatal exception in interrupt
Backtrace:
[<c002e178>] (dump_backtrace+0x0/0x110) from [<c02198bc>] (dump_stack+0x18/0x1c)r6:c381a260 r5:c3815d60 r4:c02d1918
[<c02198a4>] (dump_stack+0x0/0x1c) from [<c021991c>] (panic+0x5c/0x184)
[<c02198c0>] (panic+0x0/0x184) from [<c002e5b0>] (die+0x190/0x1d4)r3:00010000 r2:c381bb4c r1:00002a5d r0:c027b2ddr7:00000000
[<c002e420>] (die+0x0/0x1d4) from [<c002ff98>] (__do_kernel_fault+0x6c/0x8c)r8:00000000 r7:c381bc94 r6:00000000 r5:00000805 r4:00000000
[<c002ff2c>] (__do_kernel_fault+0x0/0x8c) from [<c0030178>] (do_page_fault+0x1c0/0x1d8)r8:00000805 r7:00000000 r6:c381bc94 r5:c3815d60 r4:00000000
[<c002ffb8>] (do_page_fault+0x0/0x1d8) from [<c0030228>] (do_translation_fault+0x24/0xac)
[<c0030204>] (do_translation_fault+0x0/0xac) from [<c00252d4>] (do_DataAbort+0x3c/0xa0)r7:c381bc94 r6:00000000 r5:c02b6f90 r4:00000805
[<c0025298>] (do_DataAbort+0x0/0xa0) from [<c002b140>] (__dabt_svc+0x40/0x60)
Exception stack(0xc381bc94 to 0xc381bcdc)
bc80:                                              00000033 c02b9464 c02b943c
bca0: 00000000 c3973c7c c3960a00 c3973c08 c3973c28 c3973c7c c396b000 00000000
bcc0: c381bce8 c381bc28 c381bcdc c003bf64 c002dfd4 60000093 ffffffffr7:c3973c28 r6:c3973c08 r5:c381bcc8 r4:ffffffff
[<c002dfb0>] (__bug+0x0/0x30) from [<c002f708>] (___dma_single_dev_to_cpu+0x3c/0x64)
[<c002f6cc>] (___dma_single_dev_to_cpu+0x0/0x64) from [<c01629b4>] (atmel_spi_dma_unmap_xfer+0x2c/0x4c)
[<c0162988>] (atmel_spi_dma_unmap_xfer+0x0/0x4c) from [<c01630fc>] (atmel_spi_interrupt+0x16c/0x208)r4:c3960ae8
[<c0162f90>] (atmel_spi_interrupt+0x0/0x208) from [<c0067910>] (handle_irq_event_percpu+0x34/0x194)r8:00000000 r7:c02bb438 r6:0000000c r5:00000000 r4:c395ae60
[<c00678dc>] (handle_irq_event_percpu+0x0/0x194) from [<c0067aa0>] (handle_irq_event+0x30/0x40)
[<c0067a70>] (handle_irq_event+0x0/0x40) from [<c0069bc0>] (handle_level_irq+0xb4/0xdc)r4:c02bb438
[<c0069b0c>] (handle_level_irq+0x0/0xdc) from [<c0025078>] (asm_do_IRQ+0x78/0xa8)r4:0000000c
[<c0025000>] (asm_do_IRQ+0x0/0xa8) from [<c002b188>] (__irq_svc+0x28/0x60)
Exception stack(0xc381bda4 to 0xc381bdec)
bda0:          c381be00 00000000 c381be3c 40000013 7fffffff c381be38 c381a000
bdc0: 00000002 c381bdf8 c396b000 c3815d60 c381be24 00000000 c381bdec c0219c88
bde0: c0219d00 40000013 ffffffffr5:fefff000 r4:ffffffff
[<c0219c34>] (wait_for_common+0x0/0x170) from [<c0219e4c>] (wait_for_completion+0x18/0x1c)
[<c0219e34>] (wait_for_completion+0x0/0x1c) from [<c016213c>] (__spi_sync+0x8c/0xa8)
[<c01620b0>] (__spi_sync+0x0/0xa8) from [<c0162184>] (spi_sync+0x14/0x18)r8:c3973c08 r7:c391c6a0 r6:c3973c00 r5:c02b8cb4 r4:c396b000
[<c0162170>] (spi_sync+0x0/0x18) from [<c0219304>] (ads7846_probe+0xaf8/0xc20)
[<c021880c>] (ads7846_probe+0x0/0xc20) from [<c0161c1c>] (spi_drv_probe+0x20/0x24)
[<c0161bfc>] (spi_drv_probe+0x0/0x24) from [<c013d7e8>] (driver_probe_device+0xb8/0x170)
[<c013d730>] (driver_probe_device+0x0/0x170) from [<c013d908>] (__driver_attach+0x68/0x8c)r7:00000000 r6:c02cd144 r5:c391c6d4 r4:c391c6a0
[<c013d8a0>] (__driver_attach+0x0/0x8c) from [<c013cfe4>] (bus_for_each_dev+0x54/0x84)r6:00000000 r5:c013d8a0 r4:c02cd144
[<c013cf90>] (bus_for_each_dev+0x0/0x84) from [<c013d624>] (driver_attach+0x20/0x28)r6:c02c9640 r5:c3972bc0 r4:c02cd144
[<c013d604>] (driver_attach+0x0/0x28) from [<c013c8cc>] (bus_add_driver+0xa8/0x21c)
[<c013c824>] (bus_add_driver+0x0/0x21c) from [<c013df5c>] (driver_register+0xb0/0x140)
[<c013deac>] (driver_register+0x0/0x140) from [<c01628bc>] (spi_register_driver+0x4c/0x60)r8:00000000 r7:00000013 r6:00000000 r5:c001bf70 r4:c0021198
[<c0162870>] (spi_register_driver+0x0/0x60) from [<c001bf84>] (ads7846_init+0x14/0x1c)
[<c001bf70>] (ads7846_init+0x0/0x1c) from [<c0025408>] (do_one_initcall+0xa4/0x17c)
[<c0025364>] (do_one_initcall+0x0/0x17c) from [<c000845c>] (kernel_init+0x94/0x144)r9:00000000 r8:00000000 r7:00000013 r6:c003e794 r5:c00083c8
r4:c0021198
[<c00083c8>] (kernel_init+0x0/0x144) from [<c003e794>] (do_exit+0x0/0x660)r4:00000000


小结

  • U-boot 的版本,需要跟 Linux内核的版本配合好,才能正常的引导,后面继续验证新版本的Linux内核启动问题
  • 先搭建好开发的环境,再深入学习【嵌入式Linux】的完整开发

【AT91SAM9261EK】 编译运行Linux Kernel 2.6.39相关推荐

  1. linux内核烧制,手机烧录自己编译的linux kernel

    编译linux kernel : 首先,要编译手机平台上的内核镜像,需要交叉编译工具,而一般主流的手机上的交叉编译环境都很完备了,只要把它纳入PATH目录,基本都可以make成功. 假设交叉编译环境工 ...

  2. 荔枝派 Nano 全志 F1C100s 编译运行 Linux ubuntu并升级gcc

    首先是荔枝派的官方文档,写的不是很细,应当说我们必须明确几点: 出厂时 SPI Flash 自带了一个 U-Boot+Linux Kernel(出厂的时候可能烧过了),可直接拿来用.如果希望自己烧固件 ...

  3. 荔枝派 Nano 全志 F1C100s 编译运行 Linux 笔记

    首先是荔枝派的官方文档,写的不是很细,应当说我们必须明确几点: 出厂时 SPI Flash 自带了一个 U-Boot+Linux Kernel(出厂的时候可能烧过了),可直接拿来用.如果希望自己烧固件 ...

  4. linux 3 内核编译环境,Linux编译内核记

    前段时间学校某课程(你猜啥课程~)要求进行简单的linux内核编译,并添加自己的系统调用,对于Linux小白来说这可不是件简单的事,的确话费不少时间和精力.趁此博客终于过了之际,来记录一下~ 0x01 ...

  5. 基于Qemu搭建x86_64虚拟环境运行Linux内核

    主机软件版本信息 主机系统: wxer@wxer:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Desc ...

  6. linux命令注入,Linux kernel本地命令注入漏洞

    Linux kernel本地命令注入漏洞 2005-10-19 eNet&Ciweek Linux kernel 2.2.6 Linux kernel 2.2.5 Linux kernel 2 ...

  7. linux 版本号 加号,Linux kernel编译生成的版本多一个加号“+”

    其实,一直以来,我们编译KVM(Linux kernel)生成的RPM包中的kernel版本总是带有一个"莫名其妙"的加号(+),其实我知道大概是因为我们修改了Linux.git( ...

  8. k n:linux kernel 从开机,到加载内核镜像到内存

    原文地址: linux的内核运行原理是怎么样的呢?如何从开机,到加载内核镜像到内存? linux的内核运行原理是怎么样的呢?如何从开机,到加载内核镜像到内存? 最佳答案 本回答由提问者推荐 头像 匿名 ...

  9. Linux Kernel 0.01 的编译和运行

    Linux Kernel 0.01 的编译和运行 本文操作环境均在 Linux 系统中实现. ===================================================== ...

最新文章

  1. [BZOJ 1098] [POI2007] 办公楼biu 【链表优化BFS】
  2. 一、flask的基本使用-flask
  3. html约束验证的例子,HTML5利用约束验证API来检查表单的输入数据的代码实例
  4. js动态添加控件服务器响应,JS实现动态给标签控件添加事件的方法示例
  5. kinect 手势识别的原理?
  6. WPF-14:绑定中数据模型必须为public问题
  7. 怎么用PDF转换器将PDF文件转成txt
  8. Xmind模板文档分享——行业模板(1)
  9. 计算机算法设计与分析(1-6章 复习笔记)
  10. HRESULT:0x80029C4A错误
  11. 思考篇|姜子牙观影后感
  12. steam卡价越来越高,steam搬砖项目还能玩么?
  13. 关于boost和loki的智能指针
  14. 微信小程序的作用,到底能为企业带来什么价值呢?
  15. Cathy Zhang automation test
  16. 大学女生兼职适合做的工作有哪些?这些总有一样适合你
  17. 【前端篇】火狐浏览器打开调试器,报“Error: Incorrect contents fetched, please reload.”
  18. WPS中设置参考文献自动插入和更新
  19. PMP 项目资源管理
  20. 以企业级实时数据平台为例,了解何为敏捷大数据

热门文章

  1. [matlab]AHP层次分析法
  2. Win7重新受到用户追捧,竟然因为勒索病毒!
  3. June 11th 模拟赛C T1 Sandcas Solution
  4. M2E插件maven-dependency-plugin问题
  5. 如何用stc单片机内部ad采集多路交流信号
  6. sublime快捷键设置(十年积累经常在用)
  7. 测试公式测试公式测试公式
  8. nginx伪静态规则
  9. galgame 游戏动画汉化(动画外挂字幕)和字幕合成方法
  10. 思考技术 (一) —— 什么是新技术