uClinux and ARM : Modules

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

Reply to
Benoit LIETAER
Loading thread data ...

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

Reply to
Dan Kegel

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!
Reply to
Benoit LIETAER

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.