PetaLinux User Module Template =================================== This directory contains a PetaLinux kernel module created from a template. If you are developing your module from scratch, simply start editing the file xilinx_can.c. You can easily import any existing module code by copying it into this directory, and editing the automatically generated Makefile as described below. The "all:" target in the Makefile template will compile compile the module. Modify the "install" target in Makefile to use $(TARGETROOTINST) to install your module to the host copy of the target file system referring to the comments of the "install" target. Before building the module, you will need to enable the module from PetaLinux menuconfig by running: "petalinux-config -c rootfs" You will see your module in the "Kernel Modules --->" submenu. To compile and install your module to the target file system copy on the host, simply run the "petlainux-build -c kernel" to build kernel first, and then run "petalinux-build -c rootfs/xilinx_can" to build the module command. You will also need to rebuild PetaLinux bootable images so that the images is updated with the updated target filesystem copy, run this command: "petalinux-build -x package" You can also run one PetaLinux command to compile the module, install it to the target filesystem host copy and update the bootable images as follows: "petalinux-build" If OF(OpenFirmware) is configured, you need to add the device node to the DTS(Device Tree Source) file so that the device can be probed when the mdoule is loaded. Here is an example of the device node in the device tree: xilinx_can_instance: xilinx_can@XXXXXXXX { compatible = "vendor,xilinx_can"; reg = ; interrupt-parent = <&INTR_CONTROLLER_INSTANCE>; interrupts = < INTR_NUM INTR_SENSITIVITY >; }; Notes: * "xilinx_can@XXXXXXXX" is the label of the device node, it is usually the "DEVICE_TYPE@PHYSICAL_START_ADDRESS". E.g. "xilinx_can@89000000". * "compatible" needs to match one of the the compatibles in the module's compatible list. * "reg" needs to be pair(s) of the physical start address of the device and the address range. * If the device has interrupt, the "interrupt-parent" needs to be the interrupt controller which the interrupt connects to. and the "interrupts" need to be pair(s) of the interrupt ID and the interrupt sensitivity. For more information about the the DTS file, please refer to this document in the Linux kernel: linux-2.6.x/Documentation/powerpc/booting-without-of.txt To add extra source code files (for example, to split a large module into multiple source files), add the relevant .o files to the list in the local Makefile where indicated.