文章目录

  • 一、下载
  • 二、配置
    • 1. 裁剪掉一些配置
    • 2. 设置调试串口
    • 3. 网卡驱动
    • 4. 压缩模式
  • 三、build kernel
    • 1. 编译报错
    • 2. 编译成功
  • 四、build dts
    • 1. 修改 dtsi
    • 2. build
  • 五、后续
  • 参考

一、下载

  • https://www.kernel.org/

这里就下载目前最新的版本,今天是 2020.08.30,所以就下载前两天刚发布的稳定版本。

二、配置

   源码下载解压后,设置编译器等路径,然后 make menuconfig 打开配置选项界面,选择类似的开发板的配置。

   拷贝一份类似的配置,难度就会小一些。

cd arch/arm/configs/
cp exynos_defconfig xhr4412_defconfig
make xhr4412_defconfig
make menuconfig

1. 裁剪掉一些配置

  1. > System Type > Samsung Exynos
    我们可以只保留 Exynos 4 相关的,其他的可以去掉,减少内核大小。

2. 设置调试串口

将 UART2 设置为 low-level debug 串口输出。

> Kernel hacking > arm Debugging
[*] Kernel low-level debugging functions (read help!)Kernel low-level debugging port (Use Samsung S3C UART 2 for low-level debug)  --->
[*] Early printk

3. 网卡驱动

> Device Drivers > Network device support > USB Network Adapters<*>     Davicom DM96xx based USB 10/100 ethernet devices

4. 压缩模式

   设置内核压缩模式为 LZMA,可以减小文件大小。

> General setupKernel compression mode (LZMA)  --->

三、build kernel

make uImage LOADADDR=0x40007000 -j$(nproc)

   这里需要指定 LOADADDR 的值,才能生成正确的 uImage 文件。因为在 uboot 启动内核时,会先解析 uImage 中的前 64B 文件头信息。具体定义可以在网上找找。

1. 编译报错

  1. scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory

    sudo apt-get install libssl-dev

  2. “mkimage” command not found - U-Boot images will not be built

    sudo apt-get install uboot-mkimage (似乎已经遗弃)
    sudo apt-get install u-boot-tools

2. 编译成功

xhr@ubuntu:~/iTop4412/xhr4412/linux/linux-5.8.5$ make uImage LOADADDR=0x40008000 -j$(nproc)
make[1]: Entering directory '/home/xhr/iTop4412/xhr4412/linux/linux-5.8.5/out'GEN     MakefileCALL    ../scripts/atomic/check-atomics.shCALL    ../scripts/checksyscalls.shCHK     include/generated/compile.hKernel: arch/arm/boot/Image is readyKernel: arch/arm/boot/zImage is readyUIMAGE  arch/arm/boot/uImage
Image Name:   Linux-5.8.5
Created:      Sun Aug 30 13:16:01 2020
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    5222448 Bytes = 5100.05 KiB = 4.98 MiB
Load Address: 40007000
Entry Point:  40007000Kernel: arch/arm/boot/uImage is ready
make[1]: Leaving directory '/home/xhr/iTop4412/xhr4412/linux/linux-5.8.5/out'

四、build dts

查看一下会编译的 dts 文件:

  • vim arch/arm/boot/dts/Makefile

看起来官方的 kernel 有支持 itop 的板子,应该简单移植一下就可以支持了。

dtb-$(CONFIG_ARCH_EXYNOS4) += \exynos4210-i9100.dtb \exynos4210-origen.dtb \exynos4210-smdkv310.dtb \exynos4210-trats.dtb \exynos4210-universal_c210.dtb \exynos4412-i9300.dtb \exynos4412-i9305.dtb \exynos4412-itop-elite.dtb \exynos4412-n710x.dtb \exynos4412-odroidu3.dtb \exynos4412-odroidx.dtb \exynos4412-odroidx2.dtb \exynos4412-origen.dtb \exynos4412-smdk4412.dtb \exynos4412-tiny4412.dtb \exynos4412-trats2.dtb

1. 修改 dtsi

修改文件 arch/arm/boot/dts/exynos4412-itop-scp-core.dtsi

  • 屏蔽掉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 0firmware@203f000 {compatible = "samsung,secure-firmware";reg = <0x0203F000 0x1000>;};
+#endiffixed-rate-clocks {xxti {@@ -70,7 +72,7 @@};&bus_dmc {-   devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
+  devfreq-event = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;vdd-supply = <&buck1_reg>;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 */

2. build

  • make dtbs

编译成功,文件在:

  • arch/arm/boot/dts/exynos4412-itop-elite.dtb

五、后续

   到目前为止还比较顺利,毕竟只是下载后简单修改,能够编译通过,但是是否能够烧写到开发板上 boot 起来还是个问题。

参考

  • 移植Linux-5.4+内核到4412开发板
  • patch文件的生成和使用
  • 如何使用patch命令打补丁
  • Linux下Patch的应用和制作方法介绍

移植 linux-5.8.5 到 iTOP-4412(一)build config相关推荐

  1. 嵌入式设备NFS挂载目录(基于iTop 4412)

    嵌入式设备NFS挂载目录(基于iTop 4412) 文章目录 嵌入式设备NFS挂载目录(基于iTop 4412) 1. 背景 2. 工作量分析 3. 上位机搭建NFS Server 3.1 上位机环境 ...

  2. 挑战 Linux 之父认为的“不可能”:向 M1 Mac 移植 Linux

    整理 | 郑丽媛 头图 | CSDN下载自东方 IC 上个月苹果发布会推出的首款自研芯片 M1 ,不仅吸引了国内外评测技术网站对其性能的关注,更是在开发者的圈子内引起了轩然大波--换芯导致的生态迁移问 ...

  3. jquery程序 windows移植到linux显示不了,windows程序移植linux

    1,路径名统一用正斜杠"/".(windows下正反斜杠都识别,linux只认正斜杠.) 2,统一使用UTF-8格式编码. vim中无法保存汉字时,可输入下列命令: :set fi ...

  4. 【ARM】一步一步移植Linux Kernel 2.6.13到板子

    1环境搭建所需材料 2环境搭建所需材料之间的关系 3所使用的开发板 4译内核 1修改makefile 2拷贝配置文件 3编译得到zImage 4把zImage转成uImage 5开发板串口连接 6ub ...

  5. AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17

    AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17 手上板子原来自带的是2.4.19的内核, 打算移植新的2.6的内核,从网上下了2.6.17的kernel,下载 ...

  6. 【移植Linux 3.4.2内核第二步】之修改系统分区

    今天接着移植Linux 3.4.2内核,接着上一篇文章(点击查看:上一篇文章)我们完成了内核的串口启动打印输出,但是无法挂载根文件系统,我们看看启动后显示的是什么: 从打印结构可以看出,我们的分区不对 ...

  7. 【移植Linux 3.4.2内核第一步】之简单修改

    前一阵子已经将U-boot移植好了,从今天开始,我们开始移植linux内核.移植的内核为3.4.2,移植的开发板为:jz2440开发板. 想看之前移植U-boot的记录,可以查看我的博客专栏,点击链接 ...

  8. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程

    Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...

  9. 在基于or1200处理器的SoC上移植linux

    经历了前端的艰苦奋斗.SoC前端设计已经调试完毕,如今直接进入uboot移植   首先cd入u-boot-master 找到子文件夹include下得de2_115.h文件进行改动: (下一步计划:加 ...

最新文章

  1. Failed to open zip file Gradle dependency cache be corrupt
  2. 【目标检测系列】CNN中的目标多尺度处理方法
  3. WP7 开发(十) 处理Html标记
  4. stm32之 GPIO_Remap_SWJ_Disable之后无法使用swd下载 程序解决方法
  5. SQ 小车避障 Intel Realsense D435 基于线性梯度的深度值过滤
  6. LINUX挂接移动硬盘
  7. 如何编写 Cloud9 JavaScript IDE 的功能扩展
  8. uni-app微信小程序动态样式设置;微信小程序style行内式无效;微信小程序style行内式编译报错;微信小程序:style设置样式
  9. 基于python的分布式扫描器_基于python的服务器监测系统的设计
  10. 将一个数的字节顺序逆置
  11. 卡方分布分位数_数理统计第五讲(三大分布)
  12. 基础知识之什么是I/O
  13. 1's Complement和2's Complement的区别
  14. Gmail企业邮箱在用OUTLOK或FOXMAIL有时出现密码错误的解决办法
  15. html collapse不重叠,html – border-collapse的组合:collapse和transform:translate
  16. Proximal Gradient for LASSO
  17. java list 模糊查询_如何在java List中进行模糊查询(示例代码)
  18. python opencv实现 tiff转raw格式以及扩充体积补零
  19. Oracle Linux 8.5上架微软商店;英特尔发力 RISC-V;200 亿参数 GPT-NeoX 即将开源 | 开源日报
  20. 『注册中心』Consul微服务注册中心的使用及相关集群搭建

热门文章

  1. 干货 | CrateDb在携程机票BI的实践
  2. RK3566-商显广告机、跑步机主板方案
  3. c++遇到的编译错误
  4. in 在将 nvarchar 值转换成数据类型 int 时失败
  5. mysql zimbra_记一次zimbra服务器故障导致mysql起不来问题
  6. ST北生(600556)关于资产重组进展情况的公告
  7. PC+运动控制卡的控制方案
  8. 大神手把手教源码阅读的方法、误区以及三种境界
  9. 执行git checkout -b出错的解决办法
  10. Java基础回归之注解Annotation【低仿ButterKnife实战篇】