Linux内核移植步骤
2015年05月13日星期三 上午 11:05
往设备树中添加网卡驱动:
1、选平台,指定交叉编译工具链:
(1)、在Makefile中指定:
源码顶层目录下Makefile
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:\
改为:
ARCH ?= arm
CROSS_COMPILE ?=arm-linux-
(2)、编译时指定:
# make ARCH=arm CROSS_COMPILE=/opt/arm-linux-gcc-4.6.4/bin/arm-linux-
2、导出缺省配置:
(1)、直接把缺省配置文件改成”.config“:
把“源码/arch/arm/configs”目录下的“xxxx_defconfig“(例如:”exynos_defconfig“)配置文件拷贝到源码顶层目录下,并改名为”.config“。 (2)、使用make生成缺省配置:
# make exynos_defconfig
#执行该命令后系统会在源码顶层目录下自动生成”.config“文件:
# configuration written to .config
3、往设备树文件中添加dm9000网卡驱动:
(1)、参考与自己板子最接近的demo板的设备树文件生成自己的设备树文件(直接拷贝修改)。
设备树文件在”源码目录/arch/arm/boot/dts/exynos4412-fs4412.dts“
(2)、在设备树文件中添加网卡设备驱动信息(参考网卡厂商提供的范例代码):
示例代码在”Documentation/devicetree/bindings/net/davicom-dm9000.txt“,如下:
Davicom DM9000 Fast Ethernet controller
Required properties:
- compatible = \
- reg : physical addresses and sizes of registers, must contain 2 entries: first entry : address register, second entry : data register.
- interrupt-parent : interrupt controller to which the device is connected - interrupts : interrupt specifier specific to interrupt controller
Optional properties:
- davicom,no-eeprom : Configuration EEPROM is not available - davicom,ext-phy : Use external PHY
Example:
ethernet@18000000 {
compatible = \
reg = <0x18000000 0x2 0x18000004 0x2>; interrupt-parent = <&gpn>; interrupts = <7 4>;
local-mac-address = [00 00 de ad be ef]; davicom,no-eeprom; }; 修改并添加:
ethernet@05000000 {
compatible = \
reg = <0x05000000 0x2 0x05000004 0x2>;/*0x05000000为4412处理器的srom片选地址,详见手册*/
interrupt-parent = <&gpx0>;/*继承父节点*/
interrupts = <6 4>;/*gpx0节点中断中的第6个,4是标志*/ local-mac-address = [00 00 de ad be ef];/*网卡地址*/ davicom,no-eeprom;
pinctrl@11000000 {
...
gpx0: gpx0 {
gpio-controller; #gpio-cells = <2>;
interrupt-controller;
interrupt-parent = <&gic>;
interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>,/*中断<类型中断号中断标志>*/
<0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>; #interrupt-cells = <2>; }; ... }
4、修改设备树的Makefile文件:
设备树的Makefile文件在”xxx/linux-3.19.1/arch/arm/boot/dts“目录下。
(1)、直接添加:
(2)、为了加快编译速度,删除其他多余的设备树文件,仅保留自己的设备树文件:
5、内核选配:
(1)、执行make menuconfig命令通过图形界面方式选配(在源码顶层目录下执行):
(2)、添加网络协议支持:
(3)、添加dm9000网卡设备驱动: