x4412开发板移植Linux内核4.9.123版本

X4412开发板移植Linux内核4.9.123版本


基本移植

1、源码下载

官网下载linux4.9.123内核:https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/。

 

2、解压并配置

xz -d linux-4.9.123.tar.xz

tar -xvf linux-4.9.123.tar

使用命令cd linux-4.9.123进入源码根目录, 然后vi Makefile 打开顶层的Makefile进行如下修改:

修改:

ARCH  ?= $(SUBARCH)

CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)

为:

ARCH  ?= arm

CROSS_COMPILE ?= arm-linux-gnueabi-     /*根据实际使用的toolchain修改*/

注意:

  • 在VI命令下,可以使用/ CROSS_COMPILE 搜索并快速定位
  • 如果不修改编译工具链,默认将使用编译x86的gcc编译器,此时make编译需要指定架构和工具链前缀,如:
    make uImage ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

3、导入的exynos的默认配置

make exynos_defconfig

实际上是执行了:cp arch/arm/configs/exynos_defconfig .config

4、配置内核

make menuconfig

修改指定内核的调试串口:

Kernel hacking

    --> Kernel low-level debugging functions (read help!)  选择

        --> Kernel low-level debugging port (Use Samsung S3C UART 2 for low-level debug)  打开选择uart2

选择这个调试串口很重要,否则打印不出内核启动的相关信息(exynos默认没有打开此功能,没有打开此处会发现内核打印信息停止在Starting kernel …处)

5、编译内核和设备树

一、编译uImage镜像:

make uImage LOADADDR=0x40008000

注意:

LOADADDR=0X40008000表示指定内核的加载地址(如果没有添加该选项编译会出错) 

二、编译设备树:

在编译设备树之前需要对设备树进行配置,由于x4412和参考板origen类似,所以一般都是参考origen进行x4412的配置。

的设备树文件。

cp arch/arm/boot/dts/exynos4412-origen.dts  arch/arm/boot/dts/exynos4412-x4412.dts

修改arch/arm/boot/dts/下的Makefile文件:

make dtbs

6、移植网卡

增加DM9000网卡的设备树节点信息: vi arch/arm/boot/dts/exynos4412-x4412.dts 

srom-cs1@7000000 {

        compatible = "simple-bus";

        #address-cells = <1>;

        #size-cells = <1>;

        reg = <0x7000000 0x1000000>;

        ranges;

        ethernet@7000000 {

                compatible = "davicom,dm9000";

                reg = <0x7000000 0x2 0x7000004 0x2>;

                interrupt-parent = <&gpx2>;

                interrupts = <5 4>;

                davicom,no-eeprom;

                mac-address = [00 0a 2d a6 55 a2];

        };

};

添加外部中断pin配置,vi arch/arm/boot/dts/exynos4x12-pinctrl.dtsi。添加如下节点

eint21: ext-int21 {

                            samsung,pins = "gpx2-5";

                            samsung,pin-function = <EXYNOS_PIN_FUNC_F>;

                            samsung,pin-pud = <EXYNOS_PIN_PULL_NON22E>;

                            samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;

                   };

 

注意:

DM9000 网卡驱动正常都是一样的,移植时主要是更改pin配置和base addr,这个需要根据实际硬件电路修改.通过查询x4412电路图已经DM9000的trm,可知base addr是0x7000000.而pin使用的是gpx2-5,外部中断号eint21,所以还需要修改gedit arch/arm/boot/dts/exynos4x12-pinctrl.dtsi,添加eint21的初始化。(功能需要选择wakeup,也就是功能2).完成后按照手册的方法修改interrupt-parent = <&gpx2>;#xeint31是gpx2_5   
interrupts = <5 4>;#中断偏移是5,  4代表高电平触发

 

内核配置:

// 网络协议配置

[*] Networking support --->

Networking options --->

<*> Packet socket

<*> Unix domain sockets

[*] TCP/IP networking

[*] IP: kernel level autoconfiguration

 

// 网卡驱动的配置

Device Drivers --->

[*] Network device support --->

[*] Ethernet driver support (NEW) --->

<*> DM9000 support

 

// NFS服务和根文件系统配置

File systems --->

[*] Network File Systems (NEW) --->

<*> NFS client support

[*] NFS client support for NFS version 3

[*] NFS client support for the NFSv3 ACL protocol extension

[*] Root file system on NFS

重新编译内核和设备树即可。

最后为了能正常启动linux需要配置uboot环境变量,这边使用的变量如下:

fatload mmc 0:1 42000000 linux4.9/exynos4412-x4412.dtb
fatload mmc 0:1 41000000 linux4.9/uImage
setenv bootargs root=/dev/mmcblk0p2 rw rootfstype=ext4 console=ttySAC2,115200
bootm 41000000 - 42000000

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值