移植 linux-5.8.5 到 iTOP-4412(一)build config
文章目录
- 一、下载
- 二、配置
- 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. 裁剪掉一些配置
> 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. 编译报错
scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory
sudo apt-get install libssl-dev
“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相关推荐
- 嵌入式设备NFS挂载目录(基于iTop 4412)
嵌入式设备NFS挂载目录(基于iTop 4412) 文章目录 嵌入式设备NFS挂载目录(基于iTop 4412) 1. 背景 2. 工作量分析 3. 上位机搭建NFS Server 3.1 上位机环境 ...
- 挑战 Linux 之父认为的“不可能”:向 M1 Mac 移植 Linux
整理 | 郑丽媛 头图 | CSDN下载自东方 IC 上个月苹果发布会推出的首款自研芯片 M1 ,不仅吸引了国内外评测技术网站对其性能的关注,更是在开发者的圈子内引起了轩然大波--换芯导致的生态迁移问 ...
- jquery程序 windows移植到linux显示不了,windows程序移植linux
1,路径名统一用正斜杠"/".(windows下正反斜杠都识别,linux只认正斜杠.) 2,统一使用UTF-8格式编码. vim中无法保存汉字时,可输入下列命令: :set fi ...
- 【ARM】一步一步移植Linux Kernel 2.6.13到板子
1环境搭建所需材料 2环境搭建所需材料之间的关系 3所使用的开发板 4译内核 1修改makefile 2拷贝配置文件 3编译得到zImage 4把zImage转成uImage 5开发板串口连接 6ub ...
- AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17
AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17 手上板子原来自带的是2.4.19的内核, 打算移植新的2.6的内核,从网上下了2.6.17的kernel,下载 ...
- 【移植Linux 3.4.2内核第二步】之修改系统分区
今天接着移植Linux 3.4.2内核,接着上一篇文章(点击查看:上一篇文章)我们完成了内核的串口启动打印输出,但是无法挂载根文件系统,我们看看启动后显示的是什么: 从打印结构可以看出,我们的分区不对 ...
- 【移植Linux 3.4.2内核第一步】之简单修改
前一阵子已经将U-boot移植好了,从今天开始,我们开始移植linux内核.移植的内核为3.4.2,移植的开发板为:jz2440开发板. 想看之前移植U-boot的记录,可以查看我的博客专栏,点击链接 ...
- Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程
Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...
- 在基于or1200处理器的SoC上移植linux
经历了前端的艰苦奋斗.SoC前端设计已经调试完毕,如今直接进入uboot移植 首先cd入u-boot-master 找到子文件夹include下得de2_115.h文件进行改动: (下一步计划:加 ...
最新文章
- Failed to open zip file Gradle dependency cache be corrupt
- 【目标检测系列】CNN中的目标多尺度处理方法
- WP7 开发(十) 处理Html标记
- stm32之 GPIO_Remap_SWJ_Disable之后无法使用swd下载 程序解决方法
- SQ 小车避障 Intel Realsense D435 基于线性梯度的深度值过滤
- LINUX挂接移动硬盘
- 如何编写 Cloud9 JavaScript IDE 的功能扩展
- uni-app微信小程序动态样式设置;微信小程序style行内式无效;微信小程序style行内式编译报错;微信小程序:style设置样式
- 基于python的分布式扫描器_基于python的服务器监测系统的设计
- 将一个数的字节顺序逆置
- 卡方分布分位数_数理统计第五讲(三大分布)
- 基础知识之什么是I/O
- 1's Complement和2's Complement的区别
- Gmail企业邮箱在用OUTLOK或FOXMAIL有时出现密码错误的解决办法
- html collapse不重叠,html – border-collapse的组合:collapse和transform:translate
- Proximal Gradient for LASSO
- java list 模糊查询_如何在java List中进行模糊查询(示例代码)
- python opencv实现 tiff转raw格式以及扩充体积补零
- Oracle Linux 8.5上架微软商店;英特尔发力 RISC-V;200 亿参数 GPT-NeoX 即将开源 | 开源日报
- 『注册中心』Consul微服务注册中心的使用及相关集群搭建