linux-kernel-4.4 移植 (1)启动
开发环境:win10 64位 + VMware12 + Ubuntu14.04 32位
工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi
要移植的kernel版本:linux-4.4
Tiny4412开发板硬件版本为:
底板: Tiny4412SDK 1312B
核心板:Tiny4412 - 1306
1、下载、解压内核
linux-4.4.tar.gz
2、配置
1)配置开发板类型及指定交叉编译链
diff --git a/arch/arm/boot/dts/exynos4412-tiny4412.dts b/arch/arm/boot/dts/exyno
index 4840bbd..048ae67 100644
--- a/arch/arm/boot/dts/exynos4412-tiny4412.dts
+++ b/arch/arm/boot/dts/exynos4412-tiny4412.dts
@@ -21,6 +21,7 @@ESCOD
index 70dea02..42b0d63 100644
--- a/Makefile
+++ b/Makefile
@@ -248,8 +248,11 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/x86/ -e s/x86_6# "make" in the configured kernel build directory always uses that.# Default value for CROSS_COMPILE is not to prefix executables# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
-ARCH ?= $(SUBARCH)
-CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
+#ARCH ?= $(SUBARCH)
+#CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
+
+ARCH ?= arm
+CROSS_COMPILE ?= /usr/local/ARM-toolchian/gcc-linaro-6.1.1-2016.08-i686_arm-linux-gnueabi/bin/arm-linux-gnueabi-# Architecture as present in compile.hUTS_MACHINE := $(ARCH)
2)修改设备树
diff --git a/arch/arm/boot/dts/exynos4412-tiny4412.dts b/arch/arm/boot/dts/exyno index 4840bbd..048ae67 100644 --- a/arch/arm/boot/dts/exynos4412-tiny4412.dts +++ b/arch/arm/boot/dts/exynos4412-tiny4412.dts @@ -21,6 +21,7 @@chosen {stdout-path = &serial_0; + bootargs="root=/dev/ram0 rw rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc earlyprintk";
};memory { @@ -78,7 +79,8 @@bus-width = <4>;pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;pinctrl-names = "default"; - status = "okay"; + /* status = "okay";*/ + status = "disabled";};&serial_0 {
这里关键的一点是在chosen中增加了bootargs的设置,上面设置bootargs表示的意思是:根文件系统是ramdisk,可读写,文件系统类型是ext4格式,串口终端使用ttySAC0,波特率是115200,earlyprintk用于打印内核启动早期的一些log,它会把printk的信息打印到一个叫做bootconsole的终端上,在真正的console注册后,bootconsole会被disable掉,要想使用earlyprintk,需要在内核中做相关的配置,这个下面再说。bootargs的设置很灵活,既可以在内核的设备树中设置,也可以在u-boot中设置,需要注意的是:如果在u-boot中设置了bootargs的话,在bootm的时候u-boot会用自己的bootargs来覆盖设备树里的bootargs( do_bootm_linux -> bootm_linux_fdt -> fdt_chosen)。还有一点是把SD卡控制器2给禁掉了,目前SD控制器的初始化还有些问题,会导致内核挂掉,这个以后再解决,因为我们将来先用ramdisk做根文件系统,跟eMMC和SD卡都没有关系
3,配置内核支持Ramdisk
make menuconfig
File systems --->;
<*> Second extended fs support
Device Drivers
SCSI device support --->;
<*> SCSI disk support
Block devices --->;
<*>RAM block device support
(16)Default number of RAM disks
(8192) Default RAM disk size (kbytes) (修改为8M)
General setup --->;
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
这个exynos的默认配置就已经支持了。
4.配置内核支持Tmpfs
$ make menuconfig File systems --->;
Pseudo filesystems --->
[*] Virtual memory file system support (former shm fs)
[*] Tmpfs POSIX Access Control Lists这个exynos的默认配置也已经支持了。
5.编译内核
第一次编译需要获取exynos配置
make exynos_defconfig
root@ubuntu:/home/arm/linux-4.4# cat build.sh #!/bin/bashecho "---------------" echo "rm ./ uImage and dtb" rm uImage exynos4412-tiny4412.dtbecho "make" make uImage LOADADDR=0x40007000 -j4echo "make dtb" make dtbsecho "backup config" cp .config tiny4412_defconfigecho "copy uImage" cp arch/arm/boot/uImage ./echo "copy dtb" cp arch/arm/boot/dts/exynos4412-tiny4412.dtb ./echo "over"
编写脚本。执行,烧写
即可初步启动kernel
---------------------------------------------------------------------------------------------------------------------------------------------------------------
问题:启动后如果显示文件太多会出现
dma-pl330 12680000.pdma: Reset Channel-1 CS-20000f FTC-20000
[ 1573.447654] dma-pl330 12680000.pdma: Reset Channel-1 CS-20000f FTC-20000
参考:https://blog.csdn.net/sinat_20006769/article/details/79060779
说是DMA驱动的问题,按照介绍取消dma-pl330后,kernel无法启动
参考:https://blog.csdn.net/hyyoxhk/article/details/83305367
修改arch/arm/boot/dts/exynos4412-tiny4412.dts中,serial_0的dmas导致卡死,serial_2的dmas无效果
参考:https://blog.csdn.net/qq_25370227/article/details/84891632
是uboot中TrustZone造成,目前未尝试
--------------------------------------------------------------------------------------------------------------------------------------------------------------
已解决:就是TrustZone造成,具体查看:linux-kernel-4.4 移植 (2)解决上部遗留DMA-PL330的问题
————————————————————————————————————————————————
整体参考:
https://www.cnblogs.com/pengdonglin137/p/5143516.html
https://blog.csdn.net/sinat_20006769/column/info/19139
转载于:https://www.cnblogs.com/chu-yi/p/10496621.html
linux-kernel-4.4 移植 (1)启动相关推荐
- linux 文件系统 启动,linux kernel文件系统启动部分
现在的kernel里,有个叫做ramfs的文件系统,会把initrd(或者ramdisk,为惯性叫法)里的东西挂载到early-rootfs里(即rootfs,是ramfs的一个特殊实例),执行一些在 ...
- 【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 Kernel系列一:开篇和Kernel启动概要
前言 近期几个月将Linux Kernel的大概研究了一下,以下须要进行深入具体的分析.主要将以S3C2440的一块开发板为硬件实体.大概包含例如以下内容: 1 bootloader分析,以uboot ...
- linux启动参数怎么传给内核,如何启动内核(vivi与Linux kernel的参数传递情景分析)...
vivi开发笔记(十七):vivi与Linux kernel的参数传递情景分析(上) 在上一部分提到过了,vivi作为bootloader,向内核传递启动参数是其本职工作之一.要把这个情景分析清楚,不 ...
- 4核a5中断linux,Cortex A5 MPcore寄存器TPIDRPRW复位值不为零,造成Linux Kernel不能启动的问题...
问题现象: Cortex A5 MPcore寄存器TPIDRPRW复位值不为零,造成Linux Kernel不能启动的问题. 问题原因分析: 由于Linux Kernel内核配置使能了CONFIG_T ...
- 在mtk移植个linux内核,移植 Linux Kernel 造成無法開機之解決方案以及除錯工具
一般在以下情況, 我們會進行移植 Linux Kernel 的動作. 1. 將新版 Linux Kernel 移植到全新 SoC 上 開發人員為 SoC 廠商(e.g. MTK, TI, Allwin ...
- Linux内核学习(七):linux kernel内核启动(一):概述篇
Linux内核学习(七):linux kernel内核启动(一):概述篇 这一篇让我们来大致的了解一下Linux内核的启动过程 这篇文章不涉及源码,重在让你知道这个linux内核的启动过程,源码详细的 ...
- Linux kernel编译、安装及指定默认内核版本启动
内容转自: https://blog.csdn.net/weixin_41666796/article/details/96434229 https://blog.mtkfan.com/post-43 ...
- linux kernel decompress_kernel 启动解压
linux 解压后会跳转到,kernel执行地址: head.S中入口执行.解压之前的操作流程呢? 1. linux kernel 被uboot load到内存后的入口函数 arch/arm/boot ...
最新文章
- 麻省理工研究:深度图像分类器,居然还会过度解读
- 十年中文技术社区风雨之路 今晚4位老炮畅聊过去未来
- 七种Vue3传值方式
- php命名空间规则解析及高级功能,PHP命名空间解析规则
- phoenix数据类型,语法,方法
- 自由软件基金会庆祝成立35周年
- java非堆内存_java – 监视JVM的非堆内存使用情况
- Angular 第一章 开始
- Kubernetes (1.6) 中的存储类及其动态供给
- springboot 集成redis实现session共享
- ACM__搜素之BFS与DFS
- 2021高考河北省艺术类成绩查询,2021河北省艺术类高考专业考试成绩有关规定
- Zotero及部分常用插件安装和使用教程
- 人工智能研究中心快递柜——代码分析十一
- MotionEvent和TouchSlop
- 【新知实验室】TRTC体验
- 005_解密饿了么大前端团队
- 在国内发展,有IPMP证书有用吗?
- vue项目中使用阿里巴巴矢量图库图标的操作步骤
- Linux安装Git(一条命令即可)