Digi 9P 9360/9750 manual Kernel Development, Writing kernel modules, What is a kernel module?

Page 39

K e r n e l D e v e l o p m e n t

Kernel Development

C H A P T E R

6

Writing kernel modules

What is a kernel module?

Modules are pieces of code that can be loaded and unloaded into the kernel upon demand. They are useful because they extend the functionality of the kernel without the need to reboot the system.

A typical kernel module is the device driver, which allows the kernel to access hardware connected to the system. Without modules, you would have to build substantial kernels and add new functionality directly into the kernel image. Besides having extensive kernels, you would be required to rebuild and reboot the kernel for every new functionality.

Writing your own kernel modules

Some kernel modules are included as examples. They can be found in the modules/ subdirectory of the project folder. Each kernel module must be stored in a different folder.

The easiest way to create your own kernel module is to clone one of the existing modules:

~/LxNETES3.2$ cd modules

~/LxNETES3.2/modules$ cp -r minimal my_kmodule

~/LxNETES3.2/modules$ cd my_kmodule

Add your source files

Add the sources for your kernel module directly to the new folder you’ve just created, and remove the original source files of the folder that you cloned.

3 9

Image 39
Contents LxNETES User’s Guide ConnectCore 9P 9360/9750 Page Page Page Contents Building the First Project Interfaces & Devices Appendix B Introduction OverviewCross-development environment Linux kernel sources Template projectExample applications Features General featuresWhat’s new in LxNETES 3.2? RTC Gpio This is a tip. It contains useful information about a topic Conventions used in this manualAcronyms and abbreviations Requirements System Requirements/PrerequisitesSystem requirements Optional but recommended components Disk spaceTftp daemon Applications & ServicesNFS server JTAG-Booster N E T E S U s e r ’ s G u i d e Connecting host PC with development board Getting StartedIntroduction Seyon MinicomSeyon Settings Connect powerTest Ethernet configuration # ifconfig eth0 Installing LxNETESGuided Installation Manual Installation N u a l Installation Building the Default Project Run configureBuilding the First Project Run make Run make installApplication Development Writing applicationsAdding your own applications Using C++ Included example applicationsDisplay Proc/cpuinfo contents Debugging applications Choose the right architecture for your target Web server Boa Included pre-built applicationsShell applications busybox Telnet daemon utelnetdEmbedded Qt Nano-X/microwindowsMem Useful applicationsWriting your own kernel modules What is a kernel module?Kernel Development Writing kernel modulesAdd the module to the build environment Building and loading of kernel modulesIncluded Kernel modules Minimal Advanced Topics Modifying the default projectD i f y i n g t h e d e Fault p r o j e c t Building a custom project Boot process BootIntroduction Bank # 0 00000000 32 MB ConnectCore 9P 9360/9750NAND-Flash Linux boot methodsUSB NOR FlashMMU Linux boot processV a n c e d T o p i c s Passing arguments to the kernel Automating the image downloadUpdating the Flash memory Updating a running system manually Updating a running system the easy wayDownload the new image file to RAM Erase the Flash partitionWrite the image to Flash Boot KernelRoot File System Updating a corrupted system using a debugger Root File System Types Set bootargs to be passed to the kernel Download the kernel to RAM via TftpLaunch the kernel from RAM JFFS2 Copy the kernel to RAM O t F i l e S y s t e m T y p e s N E T E S U s e r ’ s G u i d e Serial interface Interfaces & DevicesLCD interface USB host interfaceI2C interface SPI interfaceReal time clock RTC How to set the initial system date and timeCompact flash interface SD card interfacePCI interface CD contents Appendix aRelated documentation Docs Images Install.shReadme.txt RelNotes.txtHardware SetupConnectCore 9P 9360 CC9P9360 ConnectCore 9P 9750 CC9P9750Sdram memory layout Memory layoutsFlash memory layout ConnectCore 9P 9360 / ConnectCore 9PTextbase N E T E S U s e r ’ s G u i d e Appendix B Boot command referenceO o t c o m m a n d r e f e r e n c e Skipped CC9C CCXP270 UNC90 Example A9M24x0 User keys