Linux - Embedded & Single-board computerThis forum is for the discussion of Linux on both embedded devices and single-board computers (such as the Raspberry Pi, BeagleBoard and PandaBoard). Discussions involving Arduino, plug computers and other micro-controller like devices are also welcome.
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
I'm not familiar with embedded linux so I have a general question regarding memory.
Currently, I'm part of a group that is using an arm-based dev board to develop an embedded system. The dev board has 128M of RAM, however the final silicon (which we don't have yet) will only have 16M of RAM (which is enough for our software). My question is: If we just want to transfer the software over to the final silicon, will I need to make any changes to the kernel to adjust for the lower memory? Or should it just transfer over nicely if the only change is the memory size?
I know it's a fairly general question, but any help is appreciated. Thanks!
Distribution: OpenSUSE, Ubuntu, Mythbuntu, iMedia, Embedded Linux
[Usual Disclaimer: I am somewhat knowledgeable on embedded systems and with Linux in particular. BUT always verify such claims directly to your development & target hardware.]
Generally, you just develop, test, debug your application using either your on-board embedded target, or on a Linux development machine (which is your case). Once your satisfied with your application, you then build a Linux configuration to suit your embedded target, removing any and all unnecessary options, particularly kernel (built-in modules) not required to run the application, administrative and/or on-line debug capabilities.
On your particular ARM target usually if your a student or in a learning environment the target system will have a general Linux kernel already running. It this is not the case you would build a streamlined kernel configuration containing only the necessary functionality required for your application, pass the configuration over to your Linux tool chain which will build your required kernel. (it all depends on your Linux tool chain - so your mileage may vary).
Basically, the Linux tool chain will separate out those structures requiring RO, and those requiring RW capability (that is its primary task). It passes this structured information to the cross-compiler(s) that build your configured kernel accordingly.
Once your got a working Linux kernel running on your target system, you usually either load the kernel via tftp, dhcp or nfs booting. Some target systems have UBoot as its BIOS, so you can boot both your specially configured kernel (inclusive libs) and your application, and simply run it.
If your interested in some very good Linux Embedded books I can highly recommend the following:
Embedded Linux Primer - Hallinan - ISBN 9780131679849
Linux Application Design - Smith et Al. - ISBN 9781593271404
Programming Embedded Systems - Barr & Massa - ISBN 0596009836