嵌入式系统移植导学

news2024/11/15 13:00:30

目录

系统移植导学

系统移植过程

Windows装机

Linux系统移植

开发板启动过程


系统移植导学

操作系统:向下管理硬件、向上提供接口

操作系统为我们提供了:

1.进程管理

2.内存管理

3.网络接口

4.文件系统

5.设备管理

那系统移植是干什么呢,就是将Linux操作系统移植到基于ARM处理器的开发板中。

那为什么要移植系统呢,在裸机开发的时候我们发现我们什么函数都调不了,什么都要自己实现。这样做开发的时候需要大量的时间。只能做一些小的项目。

那什么是移植呢

    不同架构的处理器指令集不兼容,即便是相同的处理器架构,板卡不同驱动代码也不兼容

    Linux是一个通用的内核并不是为某一个特定的处理器架构或板卡设计的,所以从官方获取Linux源码后我们要先经过相应的配置使其与我们当前的硬件平台相匹配后才能进行编译和安装

我们下载Windows下载的是镜像或者说是编译过的代码,而去Linux官网上下载的是源代码。

系统移植过程

Windows装机

  1.准备Windows系统镜像、U盘启动盘(老毛桃/大白菜)

  2.进入BIOS选择启动方式(U盘启动)

     BIOS:   百度百科-验证

  3.通过U盘中的引导程序安装系统

  4.安装Windows驱动程序

     驱动:    百度百科-验证

  5.安装Windows应用程序

Linux系统移植

  1.准备Linux内核镜像、SD卡启动盘(uboot)

      u-boot:  百度百科-验证

  2.通过拨码开关选择启动方式(SD启动)

  3.通过SD卡中的引导程序安装系统

 Exynos_4412中三星已经为我们安装了BL0,他就类似于BIOS

ARM专题:S5PV210的BL0解读【Cortex-A8系利】_Lytain2022的博客-CSDN博客

  4.安装Linux驱动程序

  5.安装Linux应用程序

开发板启动过程

 EMMC:相当于电脑的外存断电不丢失
        开发板上电后首先运行SOC内部iROM中固化的代码(BL0),这段代码先对基本的软硬件环境(时钟等...)进行初始化,然后再检测拨码开关位置获取启动方式,然后再将对应存储器中的uboot搬移到内存,然后跳转到uboot运行。

 

        uboot开始运行后首先对开发板上的软硬件环境做进一步初始化(栈、网卡、硬件……),然后将linux内核、设备树(dtb)、根文件系统(rootfs)从外部存储器(或网络)搬移到内存,然后跳转到linux运行。
dtb属于Linux操作系统,rootfs不属于Linux。

 

        linux开始运行后先对系统环境做初始化,当系统启动完成后,Linux再从内存中(或网络)挂载根文件系统。
(常用的挂载根文件系统的方式是用网络)

 

地址映射表

        一上电,芯片就会先执行IROM里的程序,这里就放着BL0,但是这段代码不是开源的我们不知道它写了什么。

0202 0000-0206 0000这段地址是三星设计的一块内存

1000 0000-1400 0000这段地址是特殊功能寄存器,之前裸机开发用到的寄存器大多在这段地址中。

4000 0000-A000 0000这1.5G是留给扩展内存的

A000 0000-FFFF FFFF这1.5G也是预留给扩展内存的

系统移植过程:

uboot移植
linux内核移植(包含设备树)
根文件系统移植

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zabbix使用LLD自动发现规则发现监控docker容器(下)

本篇是使用Zabbix监控docker容器下篇。利用ZABBIX自动发现监控功能,在部署zabbix agent客户端的服务器上,编写自定义功能脚本,实现自动获取服务器上运行的docker服务并监控其运行状态。 前提条件 已经部署好的zabbix监控系统 Zabbix服务器…

自动驾驶专题介绍 ———— 惯性导航

文章目录介绍工作原理特点应用场景介绍 惯性导航系统(Inertial Navigation System - INS)是一种不依赖外部输入信息、也不向外辐射能量的自助式导航系统,是通过陀螺仪和加速度计为敏感器件的导航参数解算系统。该系统根据陀螺仪输出建立导航坐…

安全—03day

虚拟主机基于域名、端口、IP访问nginx 一、虚拟主机基于域名访问nginx 1.为虚拟主机提供域名解析 echo "192.168.181.130 www.nj.com www.benet.com" >> /etc/hosts2.为虚拟主机准备网页文档 mkdir -p /var/www/html/benet mkdir -p /var/www/html/nj echo…

linux系统中QT进行文本读写操作的方法

大家好,今天主要和大家聊一聊,利用QT进行文本的读写操作方法。 目录 第一:文本读写基本简介 第二:应用实例 第三:运行效果 第一:文本读写基本简介 有时候我们需要对文件进行读写,比如写个Mp3…

第01讲:Docker入门

一、什么是Docker 1、Docker 是一个开源的应用容器引擎 2、诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc) 3、Docker 是一个可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器引擎&…

Java--集合--经典七道综合练习题

文章目录 一、集合的遍历方式 二、添加数字并遍历 三、添加学生对象并遍历 四、添加学生对象并遍历 五、添加用户对象并判断是否存在 六、添加手机对象并返回要求的数据 七、创建学生管理系统(*****) 一、集合的遍历方式 需求:定义一…

深耕5G云专网,阿里云祝顺民入选“2022年度5G创新人物”

2022 年,5G 商用发展成效显著,正在加速产业数字化,全面赋能经济社会发展。运营商 5G 投资超过 4000 亿元,共带动 8.6 万亿元的经济产出,而这一切离不开奋战在 ICT 行业的 5G 应用推动者。 日前,由中国工信…

分享104个PHP源码,总有一款适合您

PHP源码 分享104个PHP源码,总有一款适合您 链接:https://pan.baidu.com/s/1MnmNb3vsofBnQ4kKoMlSBw?pwdkl4o 提取码:kl4o 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载…

Python学生信息管理系统源码,学生教师端分离,支持数据的增删查改、数据分析与统计 基于Tkinter带图形界面

介绍 Python学生信息管理系统。学生教师端分离,支持数据的增删查改、数据分析与统计。 下载地址:Python学生信息管理系统源码 软件架构 Python3.9版本 Python-Tkinter库开发的图形界面 Python-Pandas库数据处理 Python-matplotlib库数据分析与展示 P…

C语言经典100例(006,007)

题目:用*号输出字母C的图案。 程序分析:可先用*号在纸上写出字母C,再分行输出。 程序源代码: #include "stdio.h" int main() {printf("用 * 号输出字母 C!\n");printf(" ****\n");printf("…

CSS知识点精学7-小兔鲜项目实现案例

一.网页和网站的关系 包含关系 网页和网站的关系就是包含关系,网站包含了很多的网页,网页不能单独存在于网络中。 网站是一个整体,网页是一个个体,一个网站是由很多网页构建而成。就像进入百度网站,里面还有其他许多…

AI作画怎么弄?超详细ai绘画教程在这里

AI作画怎么弄?如何实现将照片生成ai漫画图,如何通过关键词描述生成好看的壁纸、背景?最全最详细教程来了,一分钟学会! 一、将照片生成二次元 我们先打开数画ai绘画软件,在首页这里,点击“相册”…

【Git】Git常用命令

3、Git 常用命令 命令名称作用git config --global user.name 用户名设置用户签名git config --global user.email 邮箱设置用户签名git init初始化本地库git status查看本地库状态git add 文件名添加到暂存区git commit -m “日志信息” 文件名提交到本地库git reflog查看历史…

手写RPC框架06-基于线程和队列提升框架并发处理能力

源代码地址:https://github.com/lhj502819/IRpc/tree/v7 系列文章: 注册中心模块实现路由模块实现序列化模块实现过滤器模块实现自定义SPI机制增加框架的扩展性的设计与实现基于线程和队列提升框架并发处理能力 Server端 现有的问题 目前我们的RPC框…

酷早报:1月9日全球Web3加密行业重大资讯大汇总

2023年1月9日 星期一 【数据指标】 加密货币总市值:$0.84万亿 BTC市值占比:39.14% 恐慌贪婪指数:25 极度恐慌【今日快讯】 1、【政讯】 1.1、美债关键收益率曲线倒挂幅度创纪录以来新高 1.2.1、美联储博斯蒂克:倾向于将利率升至5%…

2020年MathorCup高校数学建模挑战赛—大数据竞赛A题移动通信基站流量预测求解全过程文档及程序

2020年MathorCup高校数学建模挑战赛—大数据竞赛 A题 移动通信基站流量预测 原题再现: 随着移动通信技术的发展,4G、5G 给人们带来了极大便利。移动互联网的飞速发展,使得移动流量呈现爆炸式增长,从而基站的流量负荷问题变得越来…

代码随想录第55天|● 392.判断子序列 ● 115.不同的子序列

392.判断子序列 dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。 if (s[i - 1] t[j - 1]),那么dp[i][j] dp[i - 1][j - 1] 1;,因为找到了一个相同的字符,相同子…

当没有成熟案例可参考时,企业该如何实现数字化转型?

对于企业来说,数字化转型过程中,参考成熟的案例是可以提高成功率的。但是在现实中,很多企业由于行业、领先地位、技术保密性等原因,导致没有或者找不到可参考的数字化转型案例为自身提供经验。那么这种情况下该如何做呢&#xff0…

Java中日期和时间的类

文章目录JDK8之前日期和时间的APISystem类中的Date类中的java.util.Date类中的二个构造器二个方法java.sql.Date类中的实例化将java.sql.Date类对象转化为java.util.Date类的对象将java.util.Date类对象转化为java.sql.Date类的对象每日一考JDK8之前日期和时间的API System类中…

你对Bug了解多少?如何“正确的”向开发人员提出Bug?

目录 一、Bug的级别 二、Bug的生命周期 三、如何向开发人员提出Bug(如何创建Bug)? 四、跟开发产生争执怎么办?(面试高频) 一、Bug的级别 为什么Bug也要存在级别?不同的Bug等级,惩罚机制不一…