uClinux and ARM : Modules

Nov 25, 2003 2 Replies

Hi,



I am porting the router firmware from proprietary kernel to Linux. This involves that our modem software will become a module.



Thing is that I am not sure how I should compile/load it: I create a library modem.a wrapped into a module interface ->modem.o this is ok for standalone (thendo a insmod).



I would like to make kernel aware of this: make modules make modules_install and put insmod modem.o in rc.init


--> where should I put my driver sources so it is involved in the "make modules, make modules_install procedure"?



Thank you very much.



Regards, Ben


If you are writing a proprietary module which will not be open sourced, you are better off compiling your module out-of-tree. The preferred way to do this is documented here:

formatting link
i.e. use make -C /path/to/kernel/source SUBDIRS=`pwd` modules

- Dan

Yes you are right. So I compiled my module separatelly and then embedded it in the romfs. I still have some questions:

1./ In the kernel code there a some goto statement, inC code. Isn't it a bit ugly? 2./ Do you know a nice book for embedded linux (ARM) using uCLinux? 3./ What can we say of the log here under?

/lib/modules> insmod -x etnamsw.o MswDebugLevel=2 Using etnamsw.o kernel BUG at page_alloc.c:117! kernel BUG at page_alloc.c:121! kernel BUG at page_alloc.c:117! kernel BUG at page_alloc.c:121! kernel BUG at page_alloc.c:117! kernel BUG at page_alloc.c:121! kernel BUG at page_alloc.c:117! kernel BUG at page_alloc.c:121! kernel BUG at page_alloc.c:117! kernel BUG at page_alloc.c:121! kernel BUG at page_alloc.c:117! kernel BUG at page_alloc.c:121! kernel BUG at page_alloc.c:117! kernel BUG at page_alloc.c:121! kernel BUG at page_alloc.c:117! kernel BUG at page_alloc.c:121! kernel BUG at page_alloc.c:117! kernel BUG at page_alloc.c:121! kernel BUG at page_alloc.c:117! kernel BUG at page_alloc.c:121! fault-common.c 243 Unable to handle kernel NULL pointer dereference at virtual address

0000003f fault-common.c(97): start_code=0x380040, start_stack=0x3bff70) Internal error: Oops: 0 CPU: 0 pc : [] lr : [] Not tainted sp : 003fdddc ip : e1a03803 fp : 003fddf8 r10: 001b7c64 r9 : 00372be0 r8 : 00000000 r7 : 60000013 r6 : 0025e218 r5 : 000000f0 r4 : 0025e210 r3 : 9a017fef r2 : 86b6e00c r1 : 000000f0 r0 : 0025e210 Flags: nzCv IRQs off FIQs on Mode SVC_32 Segment kernel Control: 107D Process insmod (pid: 16, stackpage=003fd000) Stack: 003fddc0: 00360000 000215fc 20000093 ffffffff 000872 60 003fdde0: 00000000 00000000 00000400 003fde10 003fddfc 000287d0 00021540 000000 00 003fde00: 00000c00 003fde38 003fde14 000288ec 0002878c 001b7c64 00000400 000004 00 003fde20: 00001f00 00000258 0037c0b0 003fde50 003fde3c 0002a888 000288cc 000000 96 003fde40: 002cb120 003fde74 003fde54 0002aad0 0002a814 00000000 00001f00 000004 00 003fde60: 00000258 00001000 003fde94 003fde78 00028378 0002a9e8 000000b0 000000 b0 003fde80: 00282b40 00096000 003fdeac 003fde98 00028678 00028344 00001000 000000 b0 003fdea0: 003fded8 003fdeb0 00047e8c 0002866c 00001000 001b6950 00372be0 0037c0 00 003fdec0: fffffffb 002c6120 000869e8 003fdf00 003fdedc 00048320 00047df4 002e2e f0 003fdee0: 001b6950 00000000 00372c90 00001000 00000000 003fdf44 003fdf04 0001ee e8 003fdf00: 00048250 00000001 00000061 00372be0 0001f308 003fdf50 002c6140 00065e f8 003fdf20: 002c6120 00000000 002c6120 002c6140 00000003 00000001 003fdf80 003fdf 48 003fdf40: 0001f400 0001ebbc 00000001 00085140 00060fcc 00004f2c 00360fd0 000000 00 003fdf60: 00065ef8 002c6120 ffffffea 00000000 00300004 003fdfac 003fdf84 00025f c0 003fdf80: 0001f3ac 003fdf90 00025e0c 00000000 0039e228 00065ef8 003fc000 00008b 20 003fdfa0: 00000000 003fdfb0 000089a0 00025ef4 00000000 000091b4 00000003 003000 04 003fdfc0: 00065ef8 0039dc94 00000000 0039e228 00065ef8 00300004 00000000 00065e f8 003fdfe0: 00000001 003bf954 00000000 003ba018 0039073c 00392984 60000010 000000 03 Backtrace: invalid frame pointer 0x003fddf8 Code: e59e300c e08e210c (e5921018) e5940018 e58e1014 Unable to handle kernel NULL pointer dereference at virtual address 0000003f fault-common.c(97): start_code=0x0, start_stack=0x0) Internal error: Oops: 0 CPU: 0 pc : [] lr : [] Not tainted sp : 003fdcc0 ip : 003fdce0 fp : 003fdcdc r10: 0006d8d0 r9 : 003fdd94 r8 : 0000000b r7 : 002be1a0 r6 : 000869c0 r5 : 000869bc r4 : 00264580 r3 : 00000000 r2 : e5820000 r1 : 60000013 r0 : 002be1a0 Flags: NzCv IRQs on FIQs on Mode SVC_32 Segment kernel Control: 107D Process insmod (pid: 16, stackpage=003fd000) Stack: 003fdca0: 0000ff54 00020894 a0000013 ffffff ff 003fdcc0: 002be1a0 003fdd94 003fc000 003fc000 003fdcf0 003fdce0 0000ff54 000208 70 003fdce0: 002be1a0 003fdd00 003fdcf4 00014924 0000ff18 003fdd18 003fdd04 0000ca 1c 003fdd00: 00014864 0000003f 003fdd94 003fdd38 003fdd1c 0000d4cc 0000c960 002be1 b4 003fdd20: 003fc000 00000000 002be1a0 003fdd6c 003fdd3c 0000d714 0000d474 003636 e0 003fdd40: 00000000 ffffffff 0000003f 003fdd94 0006cbb8 000000ef 20000093 001b7c 64 003fdd60: 003fdd90 003fdd70 0000dae4 0000d5fc ffffffff 003fddc8 0025e218 600000 13 003fdd80: 00000000 003fddf8 003fdd94 000083e0 0000daa0 0025e210 000000f0 86b6e0 0c 003fdda0: 9a017fef 0025e210 000000f0 0025e218 60000013 00000000 00372be0 001b7c 64 003fddc0: 003fddf8 e1a03803 003fdddc 00360000 000215fc 20000093 ffffffff 000872 60 003fdde0: 00000000 00000000 00000400 003fde10 003fddfc 000287d0 00021540 000000 00 003fde00: 00000c00 003fde38 003fde14 000288ec 0002878c 001b7c64 00000400 000004 00 003fde20: 00001f00 00000258 0037c0b0 003fde50 003fde3c 0002a888 000288cc 000000 96 003fde40: 002cb120 003fde74 003fde54 0002aad0 0002a814 00000000 00001f00 000004 00 003fde60: 00000258 00001000 003fde94 003fde78 00028378 0002a9e8 000000b0 000000 b0 003fde80: 00282b40 00096000 003fdeac 003fde98 00028678 00028344 00001000 000000 b0 003fdea0: 003fded8 003fdeb0 00047e8c 0002866c 00001000 001b6950 00372be0 0037c0 00 003fdec0: fffffffb 002c6120 000869e8 003fdf00 003fdedc 00048320 00047df4 002e2e f0 003fdee0: 001b6950 00000000 00372c90 00001000 00000000 003fdf44 003fdf04 0001ee e8 003fdf00: 00048250 00000001 00000061 00372be0 0001f308 003fdf50 002c6140 00065e f8 003fdf20: 002c6120 00000000 002c6120 002c6140 00000003 00000001 003fdf80 003fdf 48 003fdf40: 0001f400 0001ebbc 00000001 00085140 00060fcc 00004f2c 00360fd0 000000 00 003fdf60: 00065ef8 002c6120 ffffffea 00000000 00300004 003fdfac 003fdf84 00025f c0 003fdf80: 0001f3ac 003fdf90 00025e0c 00000000 0039e228 00065ef8 003fc000 00008b 20 003fdfa0: 00000000 003fdfb0 000089a0 00025ef4 00000000 000091b4 00000003 003000 04 003fdfc0: 00065ef8 0039dc94 00000000 0039e228 00065ef8 00300004 00000000 00065e f8 003fdfe0: 00000001 003bf954 00000000 003ba018 0039073c 00392984 60000010 000000 03 Backtrace: invalid frame pointer 0x003fdcdc Code: e3520000 0a00001f (e5923004) e2433001 e3530000 pid 16: failed 11 fault-common.c 243 Unable to handle kernel NULL pointer dereference at virtual address 0000003f fault-common.c(97): start_code=0x290040, start_stack=0x29ffb8) Internal error: Oops: 0 CPU: 0 pc : [] lr : [] Not tainted sp : 002d9ec8 ip : e1833c21 fp : 002d9ee4 r10: 0029ce74 r9 : 00000001 r8 : 003d1000 r7 : 40000013 r6 : 0025f0a8 r5 : 000001f0 r4 : 0025f0a0 r3 : e1a03421 r2 : 86333084 r1 : 000001f0 r0 : 0025f0a0 Flags: nzCv IRQs off FIQs on Mode SVC_32 Segment kernel Control: 107D Process sh (pid: 12, stackpage=002d9000) Stack: 002d9ea0: 00264000 000215 fc 002d9ec0: 20000093 ffffffff 00000000 000001f0 0025e280 000001f0 002d9f10 002d9e e8 002d9ee0: 00021364 00021540 0025e280 000001f0 0025e288 40000013 00008b20 000000 6a 002d9f00: 0029ce74 002d9f30 002d9f14 00021658 00021274 00087ec0 fffffff4 0029c2 4c 002d9f20: 002d9f78 002d9f54 002d9f34 00030128 00021540 002d9f78 0029ff28 000000 09 002d9f40: 002d9f78 00008b20 002d9f74 002d9f58 000318e8 00030114 002d9f78 0029ff 28 002d9f60: 0029db44 002d8000 002d9fac 002d9f78 0002da28 000318e0 002d9f84 000261 94 002d9f80: 00026e40 00000010 00290e0c 0029cc74 00000000 0000003b 0029ff28 0029d3 0c 002d9fa0: 00000000 002d9fb0 000089a0 0002da14 0000003b 0000e7f0 0029c24c 0029db 44 002d9fc0: 0029ff2a 00000000 0000003b 0029ff28 0029d30c 0029cc24 0029cc24 000000 01 002d9fe0: 0029ce74 00000000 0029db30 0029ff18 00295228 00298764 60000010 0029c2 4c Backtrace: invalid frame pointer 0x002d9ee4 Code: e59e300c e08e210c (e5921018) e5940018 e58e1014 Unable to handle kernel NULL pointer dereference at virtual address 0000003f fault-common.c(97): start_code=0x0, start_stack=0x0) Internal error: Oops: 0 CPU: 0 pc : [] lr : [] Not tainted sp : 002d9dac ip : 002d9dcc fp : 002d9dc8 r10: 0006d8d0 r9 : 002d9e80 r8 : 0000000b r7 : 002be120 r6 : 000869c0 r5 : 000869bc r4 : 002643e0 r3 : 00000000 r2 : e3a03001 r1 : 60000013 r0 : 002be120 Flags: NzCv IRQs on FIQs on Mode SVC_32 Segment kernel Control: 107D Process sh (pid: 12, stackpage=002d9000) Stack: 002d9d80: 0000ff 54 002d9da0: 00020894 a0000013 ffffffff 002be120 002d9e80 002d8000 002d8000 002d9d dc 002d9dc0: 002d9dcc 0000ff54 00020870 002be120 002d9dec 002d9de0 00014924 0000ff 18 002d9de0: 002d9e04 002d9df0 0000ca1c 00014864 0000003f 002d9e80 002d9e24 002d9e 08 002d9e00: 0000d4cc 0000c960 002be134 002d8000 00000000 002be120 002d9e58 002d9e 28 002d9e20: 0000d714 0000d474 00015d7c 00000000 ffffffff 0000003f 002d9e80 0006cb b8 002d9e40: 000000ef 20000093 0029ce74 002d9e7c 002d9e5c 0000dae4 0000d5fc ffffff ff 002d9e60: 002d9eb4 0025f0a8 40000013 003d1000 002d9ee4 002d9e80 000083e0 0000da a0 002d9e80: 0025f0a0 000001f0 86333084 e1a03421 0025f0a0 000001f0 0025f0a8 400000 13 002d9ea0: 003d1000 00000001 0029ce74 002d9ee4 e1833c21 002d9ec8 00264000 000215 fc 002d9ec0: 20000093 ffffffff 00000000 000001f0 0025e280 000001f0 002d9f10 002d9e e8 002d9ee0: 00021364 00021540 0025e280 000001f0 0025e288 40000013 00008b20 000000 6a 002d9f00: 0029ce74 002d9f30 002d9f14 00021658 00021274 00087ec0 fffffff4 0029c2 4c 002d9f20: 002d9f78 002d9f54 002d9f34 00030128 00021540 002d9f78 0029ff28 000000 09 002d9f40: 002d9f78 00008b20 002d9f74 002d9f58 000318e8 00030114 002d9f78 0029ff 28 002d9f60: 0029db44 002d8000 002d9fac 002d9f78 0002da28 000318e0 002d9f84 000261 94 002d9f80: 00026e40 00000010 00290e0c 0029cc74 00000000 0000003b 0029ff28 0029d3 0c 002d9fa0: 00000000 002d9fb0 000089a0 0002da14 0000003b 0000e7f0 0029c24c 0029db 44 002d9fc0: 0029ff2a 00000000 0000003b 0029ff28 0029d30c 0029cc24 0029cc24 000000 01 002d9fe0: 0029ce74 00000000 0029db30 0029ff18 00295228 00298764 60000010 0029c2 4c Backtrace: invalid frame pointer 0x002d9dc8 Code: e3520000 0a00001f (e5923004) e2433001 e3530000 fault-common.c 243 Unable to handle kernel NULL pointer dereference at virtual address 0000003f fault-common.c(97): start_code=0x2b0040, start_stack=0x2b7fb8) Internal error: Oops: 0 CPU: 0 pc : [] lr : [] Not tainted sp : 002f9ec8 ip : e1833c21 fp : 002f9ee4 r10: 002b47b4 r9 : 00000001 r8 : 003d0000 r7 : 40000013 r6 : 0025f0a8 r5 : 000001f0 r4 : 0025f0a0 r3 : e1a03421 r2 : 86333084 r1 : 000001f0 r0 : 0025f0a0 Flags: nzCv IRQs off FIQs on Mode SVC_32 Segment kernel Control: 107D Process init (pid: 1, stackpage=002f9000) Stack: 002f9ea0: 00264000 000215 fc 002f9ec0: 20000093 ffffffff 00000000 000001f0 0025e280 000001f0 002f9f10 002f9e e8 002f9ee0: 00021364 00021540 0025e280 000001f0 0025e288 40000013 00008b20 000000 0a 002f9f00: 002b47b4 002f9f30 002f9f14 00021658 00021274 00087ec0 fffffff4 002b40 dc 002f9f20: 002f8000 002f9f54 002f9f34 00030128 00021540 0000000c 002b4690 000000 01 002f9f40: 002f8000 00008b20 002f9f90 002f9f58 00032ba0 00030114 00000000 002f80 00 002f9f60: 00000000 00000000 0000000c 002b4690 00000001 0000000c 002b4690 000000 01 002f9f80: 002f8000 00000000 002f9f94 000089a0 00032b9c 0000000c 0000e80c 002b40 dc 002f9fa0: 002b7f2c 00000000 00000000 0000000c 002b4690 00000001 002b4694 002b46 98 002f9fc0: 002b7f44 002b47b4 00000000 00000045 002b7f2c 002b0170 002b33c4 600000 10 002f9fe0: 002b40dc 000869b0 0009c000 0007df14 00000000 002fa000 00009d2c 000080 4c Backtrace: invalid frame pointer 0x002f9ee4 Code: e59e300c e08e210c (e5921018) e5940018 e58e1014 Kernel panic: Attempted to kill init!

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required