(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>

这篇具有很好参考价值的文章主要介绍了(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、bootloader、kernel、rootfs联系

二、内核移植

1. 内核源码获取

2. 内核配置与编译

🍍 基础配置与编译

🍍 TF卡分区

🍍 内核烧录

三、参考内容


一、bootloader、kernel、rootfs联系

kernel可以理解为一个庞大的裸机程序,和uboot以及其他比如点灯类似的裸机程序没有本质区别,只是kernel分为用户态和内核态,内存和设备操作与裸机程序不同。kernel是最底层,负责各种外设硬件的驱动,kernel类似于黑盒子,从外面只能看到接口,无法看到具体功能是如何实现的,内核初始化提供的接口后,将控制权通过init程序交给根文件系统。

详见:一文讲解Linux内核中根文件系统挂载流程 - 知乎


二、内核移植

1. 内核源码获取

下载Linux5.7.1源码,下载后完成后,将代码复制到Ubuntu新建的用户中并解压。

kernel/git/stable/linux.git - Linux kernel stable treehttps://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/refs/tags?h=v5.10.161

或者在国内镜像网站下载,速度相比于官网快很多很多。

Index of /kernel/linux/kernel/v5.x/https://mirror.bjtu.edu.cn/kernel/linux/kernel/v5.x/

2. 内核配置与编译

🍍 基础配置与编译

解压完成后,使用VScode打开linux源码,同uboot编译前一样进行配置,首先在顶层Makfile中指定架构和交叉编译工具。注意:arm必须是小写,必须!

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>,基于F1C200s的掌上电脑项目,驱动开发,内核移植,linux

在uboot移植中,我们使用licheepi_nano_defconfig配置uboot,以识别开发板(不同开发板拥有不同的外设),同样,Linux内核也需要进行配置,在墨云对Linux内核进行移植时,提到:

进入内核源码中的arch/arm/configs目录中,可以看到有很多开发板的配置文件,其中sunxi_defconfig是全志的配置文件,但是该配置文件非常不全,需要额外配置大量的选项,一般选项多大上千个,这里先使用licheepi_nano的配置文件。

因此,同样,作为新手来讲,只能使用荔枝派的配置文件,下载文件后放到arch/arm/configs文件夹中,在根目录使用以下命令配置Linux内核:

make linux-licheepi_nano_defconfig

可能会报错:

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>,基于F1C200s的掌上电脑项目,驱动开发,内核移植,linux

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>,基于F1C200s的掌上电脑项目,驱动开发,内核移植,linux

 使用如下命令安装组件:

sudo apt-get install flex
sudo apt-get install bison -y

如果出现以下错误,考虑更换镜像源,注意一定要按照自己的Ubuntu版本选择对应的源,最好更新为最新的清华源:

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>,基于F1C200s的掌上电脑项目,驱动开发,内核移植,linux

使用make命令编译,经过漫长的等待后,在 arch/arm/boot目录下生成内核文件:zImage,arch/arm/boot/dts目录下设备树文件:suniv-f1c100s-licheepi-nano.dtb。

如果出现以下错误,使用sudo apt install libssl-dev命令安装对应缺失库文件即可。

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>,基于F1C200s的掌上电脑项目,驱动开发,内核移植,linux

🍍 TF卡分区

uboot移植的时候bootcmd变量记录了内核文件(zImage)设备树(.dtb文件)的存放位置,那么现在我们就要准备好TF卡的分区,一旦编译出内核文件和设备树文件,就可以放到TF卡的指定位置,启动Linux内核。

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>,基于F1C200s的掌上电脑项目,驱动开发,内核移植,linux

我们需要将TF卡分区如下,其中uboot只能识别FAT16格式,EXT4格式为Linux内核识别格式。注意:一定要把上面图片中的分区删除,否则无法识别到启动文件(zImage、.dtb)。

分区 分区一 分区二
名称 kernel rootfs
分区格式 FAT16 EXT4
大小 32M(可以随意填写) 剩余空间

TF卡配置完成如下图所示,注意我的TF卡是8G容量。

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>,基于F1C200s的掌上电脑项目,驱动开发,内核移植,linux

注意需要给uboot预留1M的空间,在【之前的空余空间】选择1M即可,在上面的可视化分区中无法看到这个预留空间。

🍍 内核烧录

将上面编译产生的zImage、suniv-f1c100s-licheepi-nano.dtb两个文件拷贝到KERNEL分区。将TF卡插好之后上电,打开串口调试,按下复位按键,等待uboot启动,5秒倒计时结束,读取两个文件,启动Linux内核。至此,Linux内核移植完成,下一步是Linux根文件系统(rootfs)。

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>,基于F1C200s的掌上电脑项目,驱动开发,内核移植,linux


三、参考内容

1. 墨云uboot移植;

2. 稚辉君github项目;

3. 正点原子《嵌入式Linux驱动开发指南》      


(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>,基于F1C200s的掌上电脑项目,驱动开发,内核移植,linux文章来源地址https://www.toymoban.com/news/detail-605858.html

到了这里,关于(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式开发之linux内核移植

    目录  前言 一、下载内核源码 1.1 下载linux-3.0.1 1.2 解压源码文件 二、 内核添加yaffs2文件系统支持 2.1 下载yaffs2 2.2 内核添加yaffs2文件补丁 三、配置开发板 3.1 修改机器ID 3.2 添加开发板初始化文件 3.3 配置NandFalsh 3.3.1 添加NandFlash设备 3.3.2 添加NandFlash驱动 3.3 修改Kconfig(支持

    2024年02月07日
    浏览(78)
  • 【手写数据库】从零开始手写数据库内核,行列混合存储模型,学习大纲成型了

    ​ 专栏内容 : 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况下对故障容灾的支持。 手写数据库toadb 本专栏主要介绍如何从零开发,开发的

    2024年02月04日
    浏览(43)
  • Linux内核移植:内核的启动过程分析、启动配置与rootfs必要文件

     内核启动通常包括4个阶段: iROM代码启动(BIOS启动)。开发板上电后,先执行内部iROM中的固化代码,类似于BIOS,执行通电自检和初始化过程,包括初始化CPU、存储器、时钟、总线等一些必要的硬件资源。 启动引导加载程序BootLoader。根据启动引脚的电平,读取相应的存储

    2024年02月13日
    浏览(62)
  • 分享一种快速移植OpenHarmony Linux内核的方法

    本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开发者,介绍一种借助三方芯片平台自带 Linux 内核的现有能力,快速移植 OpenHarmony 到三方芯片平台的方法。 内核态层和用户态层 为了更好的解释整个内核移植,首先需要介绍一些概念: 我们可以把 OpenHarmony 简单的分为

    2024年04月26日
    浏览(28)
  • 嵌入式Linux底层系统开发 +系统移植+内核文件系统(基础)

    搭建交叉编译开发环境 bootloader的选择和移植 kernel的配置、编译、移植和调试 根文件系统的制作 前两个要点通常芯片厂家提供。后边两个要点是公司的工作重点。 学习方法:先整体后局部,层层推进 如何编译—如何添加命令和功能—如何定义自己的开发板。 移植的基本步

    2024年02月03日
    浏览(49)
  • 现在开始学linux驱动内核好吗?

    一开始是觉得,内核诶,高大上。然后看了几个月驱动后,是认认真真的钻了几个月源码,写了很多学习笔记的那种。 先说好处吧,对基础能力的提升很明显。比如内核数据结构,指针,以及如何用c需要去完成面向对象的编程思想。还有硬件底层的认识。看着自己写的代码

    2024年02月12日
    浏览(35)
  • 【Linux内核】从0开始入门Linux Kernel源码

    🌈 博客个人主页 :Chris在Coding 🎥 本文所属专栏 :[Linux内核] ❤️  前置学习专栏 :[Linux学习]从0到1 ⏰  我们仍在旅途                                                                                    ​ 目录         前言--Linux内核简述         内核的

    2024年02月20日
    浏览(32)
  • 【Linux】从零开始认识进程 — 前篇

    我从来不相信什么懒洋洋的自由。我向往的自由是通过勤奋和努力实现的更广阔的人生。。——山本耀司 学习进程,我们需要对计算机操作系统 有一个初步的了解,也就是经典的冯诺依曼体系: 计算机的逻辑结构。冯·诺依曼从逻辑入手,他的逻辑设计具有以下特点: (

    2024年03月18日
    浏览(46)
  • 【Linux】从零开始认识进程 — 中篇

    今天我们继续学习进程,首先送给大家一句话: 如果痛恨所处的黑暗,请你成为你想要的光。 —— 顾城 进程的路径是可以改变的, 每个进程在启动的时候,会记录自己当前在哪个路径下启动。 我们可以使用 fopen (\\\"log.txt\\\",“w”) 来进行使用,该函数会在路径下创建一个新文

    2024年03月22日
    浏览(24)
  • 【Linux】从零开始学习Linux基本指令(三)

    🚩 纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:Linux入门 🔥该文章主要了解Linux操作系统下的基本指令。 ⚡️该篇为Linux指令部分的终章,如果您想了解前两篇文章的内容,可以在阅读本文后点击👉【Linux】从零开始学习Linux基本指令(一) 和 【Linux】从零

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包