linux 内核移植4412,移植Linux-5.4+内核到4412开发板

Samsung EXYNOS  --->

--- Samsung EXYNOS

[]   SAMSUNG EXYNOS3

SAMSUNG EXYNOS4

[]   SAMSUNG EXYNOS5

*** EXYNOS SoCs ***

-*-   SAMSUNG EXYNOS4210

SAMSUNG EXYNOS4412

配置调试串口 - 设置为UART2

Kernel hacking  --->

Kernel low-level debugging functions (read help!)

Kernel low-level debugging port (Use Samsung S3C UART 2 for low-level debug)  --->

开启串口调试驱动

Device Drivers  --->

Character devices  --->

Serial drivers  --->

Samsung SoC serial support

Samsung SoC serial debug

Support for console on Samsung SoC serial port

开启DM96XX网卡驱动

Device Drivers  --->

Network device support  --->

   USB Network Adapters  --->

     Davicom DM96xx based USB 10/100 ethernet devices

设置内核压缩模式为LZMA(非必须,可减小文件大小)

General setup  --->

()  Build ID Salt

Kernel compression mode (LZMA)  --->

编译内核

~/linux-5.4$ make uImage LOADADDR=0x40008000 -j$(nproc)

...

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready

UIMAGE  arch/arm/boot/uImage

Image Name:   Linux-5.4.47

Created:      Sun Jun 21 22:41:40 2020

Image Type:   ARM Linux Kernel Image (uncompressed)

Data Size:    5337464 Bytes = 5212.37 KiB = 5.09 MiB

Load Address: 40008000

Entry Point:  40008000

Kernel: arch/arm/boot/uImage is ready

这里需要指定LOADADDR变量,才能生成正确的uImage文件。因为在uboot启动内核时,会先解析uImage中的前64B头信息,定义如下:

3ead5a9e6784d224a7e38e803a3e5d9c.png

3. 修改设备树(以适配开发板)

3.1 说明

在前面的步骤完成后,已经能够编译出可以运行的内核了,但是最后还需要根据板子的差异性,对设备树文件进行调整,以适配目标板。

3.2 修改

屏蔽掉firmware节点(安全相关,不启用,也不知道怎么用…)

修改bus_dmc 节点devfreq-events为devfreq-event

修改regulators 节点参数(参考原理图中的参数)

修改如下:

--- a/arch/arm/boot/dts/exynos4412-itop-scp-core.dtsi

+++ b/arch/arm/boot/dts/exynos4412-itop-scp-core.dtsi

@@ -23,10 +23,12 @@

reg = <0x40000000 0x40000000>;

};

+#if 0

firmware@203f000 {

compatible = "samsung,secure-firmware";

reg = <0x0203F000 0x1000>;

};

+#endif

fixed-rate-clocks {

xxti {

@@ -70,7 +72,7 @@

};

&bus_dmc {

-  devfreq-events = , ;

+  devfreq-event = , ;

vdd-supply = ;

status = "okay";

};

@@ -167,8 +169,8 @@

regulators {

ldo1_reg: LDO1 {

regulator-name = "VDD_ALIVE";

-        regulator-min-microvolt = <1100000>;

-        regulator-max-microvolt = <1100000>;

+        regulator-min-microvolt = <1000000>;

+        regulator-max-microvolt = <1000000>;

regulator-always-on;

regulator-boot-on;

op_mode = <1>; /* Normal Mode */

@@ -230,8 +232,8 @@

ldo9_reg: LDO9 {

regulator-name = "VDD33_LCD";

-        regulator-min-microvolt = <3300000>;

-        regulator-max-microvolt = <3300000>;

+        regulator-min-microvolt = <3000000>;

+        regulator-max-microvolt = <3000000>;

op_mode = <1>; /* Normal Mode */

};

@@ -252,8 +254,8 @@

ldo12_reg: LDO12 {

regulator-name = "VDD33_UOTG";

-        regulator-min-microvolt = <3300000>;

-        regulator-max-microvolt = <3300000>;

+        regulator-min-microvolt = <3000000>;

+        regulator-max-microvolt = <3000000>;

regulator-always-on;

op_mode = <1>; /* Normal Mode */

};

@@ -300,8 +302,8 @@

/* Used by HSIC */

ldo18_reg: LDO18 {

regulator-name = "VDDIOPERI_28";

-        regulator-min-microvolt = <3300000>;

-        regulator-max-microvolt = <3300000>;

+        regulator-min-microvolt = <2800000>;

+        regulator-max-microvolt = <2800000>;

regulator-always-on;

op_mode = <1>; /* Normal Mode */

};

@@ -313,15 +315,15 @@

ldo20_reg: LDO20 {

regulator-name = "VDD28_CAM";

-        regulator-min-microvolt = <1800000>;

-        regulator-max-microvolt = <2800000>;

+        regulator-min-microvolt = <3000000>;

+        regulator-max-microvolt = <3000000>;

op_mode = <1>; /* Normal Mode */

};

ldo21_reg: LDO21 {

regulator-name = "VDD28_AF";

-        regulator-min-microvolt = <1800000>;

-        regulator-max-microvolt = <2800000>;

+        regulator-min-microvolt = <3000000>;

+        regulator-max-microvolt = <3000000>;

op_mode = <1>; /* Normal Mode */

};

@@ -341,8 +343,8 @@

ldo24_reg: LDO24 {

regulator-name = "VDD33_A31";

-        regulator-min-microvolt = <3300000>;

-        regulator-max-microvolt = <3300000>;

+        regulator-min-microvolt = <3000000>;

+        regulator-max-microvolt = <3000000>;

op_mode = <1>; /* Normal Mode */

};

@@ -430,8 +432,8 @@

buck7_reg: BUCK7 {

regulator-name = "pvdd_buck7";

-        regulator-min-microvolt = <750000>;

-        regulator-max-microvolt = <2000000>;

+        regulator-min-microvolt = <2050000>;

+        regulator-max-microvolt = <2050000>;

regulator-boot-on;

regulator-always-on;

op_mode = <1>; /* Normal Mode */

3.3 编译dts

~/linux-5.4$ make dtbs

4. 启动测试

根据另一个专题《Uboot-2017-11移植DM9621网卡专题》移植的支持网络功能的uboot,和移植的ubuntu-base-20.04-base-armhf文件系统(下篇文章更新移植方法),可以直接tftp测试内核,效果如下:

ef886142f08d932d19eea00f4f977b43.png

cd2284d522f5d009d88a9f4097b00de5.png

到这一步,移植工作就完成了,是不是觉得很容易呢~

更多内容关注公众号噢:

weixin.jpg

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值