S3C2440 ARM设备驱动(boot loader,kernel,rootfs)

news/2024/9/19 2:17:38/ 标签: linux, 运维, 服务器, arm开发, 学习

一、开发板Linux启动需求

        1、bootloader

        为内核启动准备环境,并引导内核启动

        2、kernel(linux内核)

        操作系统的核心,(狭义上的操作系统)

        3、rootfs

        一堆有组织的文件

1. bootloader(一个裸机程序)

        初始化CPU(工作模式)

        初始化栈

        初始化异常向量表

        初始化时钟

        初始化内存

        关闭Cache

        关闭MMU

        关闭中断

        关闭看门狗

        初始化相关外设(串口、flash、网卡)

        集成相关的协议

        搬移内核到内存

        向内核传参(根文件系统类型、位置,终端,ip, 指定init进程)

        启动内核 --- CPU的控制权彻底移交给内核,bootloader不再控制CPU

2. kernel(一个复杂的程序)

        文件管理 ,内存管理 ,进程管理, 网络管理 ,设备管理

        启动到最后阶段时:加载(挂载)根文件系统

3. rootfs根文件系统(一堆文件的集合)

        系统命令

        服务和用户程序

         配置文件, 库, 普通文件(文本,图片,MP3)

二、启动过程

1. bootloader启动

        Norflash: norflash被接在0地址处,PC复位后默认为0,可以直接执行norflash中的程序(bootloader),bootloader搬移内核到内存,并启动内核

         Nandflash:系统上电后,会自动搬移nandflash中的前4KB代码到IRAM中,并将0地址映射到0x40000000(IRAM的首地址,PC实际指向0x40000000)

         bootloader必须在自己的前4KB代码中完成内存的初始化,并搬移自己剩余的部分到内存,运行自己剩余部分,搬移内核到内存,并启动内核 IRAM 4KB

2. 内核启动

        Nandflash:bootloader读取nandflash中的内核,写入到内存的0x30008000地址处,传递参数给内核,启动0x30008000地址处的内核

        Ubuntu: bootloader通过tftp服务下载内核到内存的0x30008000地址处,传递参数给内核,启动0x30008000地址处的内核---内核文件必须存在于 ubuntu的tftp服务目录下

3. rootfs挂载

        Nandflash:直接挂载nandflash中的根文件系统

        Ubuntu:通过nfs服务挂载到ubuntu的nfs服务目录

三、Linux启动准备工作

        1. 下载一个bootloader到norflash中(uboot.bin)

        U-boot下载

        链接好开发板(J-Link),利用J-Flash软件下载U-boot框架

        

        单机file,选择一个工程文件

                单机Target,connect链接开发板,F6擦除norflash中数据,并重新装载

        下载完成

        U-boot功能验证

        利用SecureCRTP软件验证,效果如下

        打开软件,选择链接端口

        

        开发板上电(复位)

        2. 拷贝一个内核到ubuntu的tftp服务目录下(ubuntu已安装tftp服务)

        tftp安装配置

        在linux系统下执行命令:sudo apt-get install tftp-hpa tftpd-hpa    

        tftp功能验证

   tftp 客户端启动

          tftp serverip(服务端ip地址,多为Linux本机地址)或tftp进去后输入serverip

下载服务器端文件到本地

          get filename (服务端相应目录下必须有该文件)

上传本地文件到服务器

        put filename  (本地对应目录下必须有该文件,并且tftp服务端配置文件TFTP_OPTIONS选项支持,)

        3. 拷贝rootfs到ubuntu的nfs服务目录下(ubuntu已安装nfs服务)

        nfs 挂载安装配置

        linux下执行以下命令

        sudo apt-get install nfs-kernel-server(服务器

         sudo apt-get install nfs-common (客户端)

四、开发板Linux启动结果

        1、Ubantu网络配置

        1、查看虚拟机是否为桥接模式(不是则更改为桥接)

        2、修改网络连接网卡(不要桥接wifi,桥接主机网卡)

        2、printenv查看环境变量

        

        1、与服务端ip一致

        2、可以和开发板ip一致,也可以不一致,影响不大

        3、初始化linux

        4、网关IP和主机网关保持一致

        5、开发板ip,网段号需与服务端ip网段号保持一致

        6、子网掩码

        7、服务端ip

        3、检查连接情况

        ping一下服务端ip地址,U-boot的ping是单向的。

        4、下载uImage(内核文件)

        在U-boot下输入命令:tftp 0x30008000 uImage

        5、启动内核

        在U-boot下输入命令:bootm 0x30008000

        开发板linux操作系统启动成功


http://www.ppmy.cn/news/1525918.html

相关文章

LINUX网络编程:http

目录 1.认识http请求的字段 2.HTTP请求类 3.认识HTTP应答字段 4.HTTP应答类 5.源代码 协议就是一种约定,http也并不例外,使用http也无非就是,定义一个http请求的结构体,将结构体序列化为字符串,发送给服务器&…

计算机网络408考研 2022

https://zhuanlan.zhihu.com/p/695446866 1 1 1SDN代表软件定义网络。它是一种网络架构,旨在通过将网络控制平面从数据转发平面分离出来,从而实现网络的灵活性和可编程性。在SDN中,网络管理员可以通过集中式控制器 来动态管理网络流量&…

Python基础语法(1)上

常量和表达式 我们可以把 Python 当成一个计算器,来进行一些算术运算。 print(1 2 - 3) print(1 2 * 3) print(1 2 / 3) 这里我们可能会有疑问,为什么不是1.6666666666666667呢? 其实在编程中,一般没有“四舍五入”这样的规则…

Haskell中的数据交换:通过http-conduit发送JSON请求

无论是客户端与服务器之间的通信,还是服务之间的API调用,都需要一种高效、可靠的方法来传输数据。在众多编程语言中,Haskell以其强大的类型系统和函数式编程特性,为构建可靠和高效的数据交换提供了坚实的基础。本文将介绍如何在Ha…

支付域——聚合支付设计

摘要 聚合支付是支付行业的一项重要创新,通过整合多种支付方式,极大简化了支付流程,提升了交易效率,为商户和消费者提供了更加便捷的支付体验。随着移动支付的普及,聚合支付在未来的支付场景中将继续发挥重要作用&…

JAVA毕业设计170—基于Java+Springboot+vue3+小程序的房屋租赁小程序系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue3小程序的房屋租赁小程序系统(源代码数据库)170 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、房东、管理员三种角色 1、用户&am…

【开源免费】基于SpringBoot+Vue.JS高校心理教育辅导系统(JAVA毕业设计)

本文项目编号 T 031 ,文末自助获取源码 \color{red}{T031,文末自助获取源码} T031,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

【例题】lanqiao1331 二进制中 1 的个数

二进制中 1 的个数 题目描述 给定一个整数 x,输出该数二进制表示中 1 的个数。 例:9 的二进制表示为 1001,有 2 位是 1 ,所以函数返回 2。 输入描述 输入 x​ (内存空间为 32 位的整数)。 输出描述 第一…

AutoDL云计算GPT-SoVITS-TTS语音声色克隆语音合成

AutoDL云计算GPT-SoVITS-TTS语音声色克隆语音合成 AutoDL创建实例登录实例启动GPTSoVITS数据集前期处理手动标注训练模型推理生成语音 AutoDL创建实例 浏览器打开AutoDL官网,注册登录: https://www.autodl.com/home 算力市场,设置创建实例&a…

如何使用ssm实现基于VUE3+SSM框架的在线宠物商城+vue

TOC ssm598基于VUE3SSM框架的在线宠物商城vue 第1章 绪论 1.1 研究背景 互联网概念的产生到如今的蓬勃发展,用了短短的几十年时间就风靡全球,使得全球各个行业都进行了互联网的改造升级,标志着互联网浪潮的来临。在这个新的时代&#xff…

【信创】Linux中软链接和硬链接详解 _ 统信 _ 麒麟 _ 方德

原文链接:【信创】Linux中软链接和硬链接详解 | 统信 | 麒麟 | 方德 在Linux文件系统中,链接(Link)是一种将文件名与实际文件数据关联的机制。链接分为两种类型:硬链接(Hard Link)和软链接&…

VirtualBox桥接网卡消失,安装Docker后导致桥接网卡服务消失问题解决记录

问题记录:VirtualBox虚拟机的桥接网卡消失 记录时间:2024.9.14 系统:win10 问题已解决。 原因: 猜测是由于安装Docker,也会使用我们的网卡进行虚拟化,导致网卡与virtualbox的桥接服务丢失。 解决方案…

基于STM32设计的智能家庭防盗系统(华为云IOT)(224)

文章目录 一、前言1.1 项目介绍【1】项目背景【2】项目实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要1.4 开发工具的选择【1】设备端开发【2】上位机开…

go语言给结构体绑定方法

定义结构体person,里面有一个字段Name。因为person首字母小写,没有暴露,所以定义函数NewPerson,返回一个person指针。 package test_utils import ("fmt" )type person struct{Name string } func (p person) Test(){fmt.Println(…

日用放大器

JPA 相关概念 ORM 框架 (Object Relational Mapping) 建立 Java 程序实体类与数据库表之间的映射关系。使用 ORM 框架进行编程 Java 程序会根据开发者配置,在运行时自动把数据对象持久化到数据库中,比直接使用 JDBC 编程更为方便…

Flume:大规模日志收集与数据传输的利器

Flume:大规模日志收集与数据传输的利器 在大数据时代,随着各类应用的不断增长,产生了海量的日志和数据。这些数据不仅对业务的健康监控至关重要,还可以通过深入分析,帮助企业做出更好的决策。那么,如何高效…

Spring Boot 常用注解

1. 基础 Spring 注解 Component 标记一个类作为 Spring IoC 容器的一个组件。Repository 标记一个 DAO 类,同时提供了异常转换机制。Service 标记业务逻辑层的服务类。Controller 标记一个 Web 层的控制器类。RestController 结合了 Controller 和 ResponseBody&am…

鸿蒙OS Service Ability

鸿蒙OS Service模板的Ability基本概念 基于 Service 模板的 Ability(以下简称“Service”)主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。Service 可由其他应用或 Ability 启动&#xff0…

【Python机器学习】循环神经网络(RNN)——对RNN进行预测

目录 有状态性 双向RNN 编码向量 如果有一个经过训练的模型,接下来就可以对其进行预测: sample_1""" I hate that the dismal weather had me down for so long,when will it break! Ugh,when does happiness return? The sun is bl…

stm32单片机个人学习笔记3(GPIO输出)

前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…