IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 基于Linux的--裸机启动流程 -> 正文阅读

[系统运维]基于Linux的--裸机启动流程

驱动学习目标:

??? 1: 芯片的启动流程

??? 2: uboot一切的嵌入式设备都是来自uboot的启动)

??? 3: 内核和文件系统所有的开发板开发的大前提)

??? 4: 驱动内核的框架

??? 5: 内核的杂项驱动开发

??? 6: Linux2.6 内核驱动开发

??? 7: 多节点 + 文件内核接口

??? 8: Linux下的中断?+?等待队列

??? 9: Linux的定时器和POLL轮询

??? 10:小任务和工作队列

??? 11:内核的同步机制

??? 12:平台设备总线

??? 13:输入子系统

??? 14:产品发布

1、裸开发板 --- 7寸 屏幕800*480(32bit)

串口线:

CPU:

??? 三星的Exynos4412

??? 四核的CPU

??? 主频 1.4 GHZ

??? 内部自带:64KB i_ROM(不丢失)

??? 内部再带:256KB i_RAM(丢失)

开发板:

??? 友善之臂的Tiny4412 开发板

开发板的资源:

??? * 蜂鸣器

??? * 四个用户按键

??? * 电源开关(左边拨码开关)

??? * 启动方式的拨码开关(右边)

??????? * 向上拨 内部4GB(emmc)启动

??????? * 向下伯 外部的SD卡启动

??? * UART0--DB9--调试控制串口

??? * HDMI + MIC

??? * 自带两个USB(自带驱动)

??????????? 可以插摄像头

??????????? 可以插USB网卡

??? * 网口--RJ45--百兆

??? * 支持 RTC

??? * SPI接口

??? * 三个UART接口

??? * 四组IIC--但是一个IIC

??? * DVP摄像头接口

??? * 一大组GPIO口

现在市场上的芯片大部分架构

??? 一般都是 ARM架构的

??? ARM:三大系列

??????????? A系列 (高端芯片)

??????????? M系列 (工控)M0 M3 M4 M7

??????????? R系列 (军工/实时)

A系列的芯片除了芯片的频率高,DSP/解算/AI能力很强,外设是很弱的!它只有一些基本外设,一个SPI ,两个定时器。

裸机:指的是一个没有操作系统的硬件系统!

三个阶段的启动流程

?三星自带了一个 IROM——64KB

??? 不是让用户用的,这个空间是芯片厂商他预留给自己用的空间已经存储了厂商出场的代码,不可访问不可修改,且加密!它把该空间的代码叫做 irom_code,通常把它称为 BL0? 第一个阶段上电就会自动运行的代码!

BL0做了以下操作:(第一阶段运行的是BL0)

??? 1: 关闭窗口看门狗

??? 2: 关闭了中断和内存保护单元

??? 3: 关闭D_CACHE 开启 I_CACHE

??? 4: 刷新TLB向量表 初始化缓冲

??? 5: 制作 内核 1 的空闲

??? 6: 查看是否处于安全模式/睡眠模式

??????? 不是往下走

??? 7: 初始化 中断和管理员权限的堆栈空间

??? 8: 初始化 ZI/RW

??? 9: 注册函数指针

??? 10:获取复位状态

??? 11: 设置芯片PLL锁相环以及驱动时钟

??? 12: 获取开发板的启动方式

??????????? 右边的拨码开关决定启动方式

??? 13: 这段代码该做的事情做完了!

??????? 它就会寻找下一阶段代码去运行,从启动的存储介质的特殊位置下载第二阶段代码,运行到 SRAM(256)空间中。使命结束,开始运行第二阶段代码。

??? * 总结两句话 :BL0 开始各种初始化,BL0 引导出了BL1

BL1 SD 卡的第一个扇区

??? *?它做了以下操作:

??????? 1: 各种初始化

??????? 2: 判断开发板的启动方式

??????? 3: 搬运下载BL2 代码到SRAM中

? ? ? ? ? ? 至此它的生命就结束了

??? * 因为该阶段的代码也是三星提供的,只提供了一个加密后的二进制文件

BL2阶段:(Uboot--启动文件)

? ? 它SD卡第17扇区处开始

? ? BL2做了以下操作:

??????? *在一次初始化堆栈空间

??????? *设置整体开发板的时钟

? ? ? ? *将CPU的频率推上顶峰

??????????? 1.4 GHZ

??????? * 初始化DRAM(DDR3 RAM--1GB)

????????? 就可以用 1GB 内存空间了

??????? *?又一次检测开发板的启动方式

??????? * 为了去搬运操作系统!(内核)

??????????? 把内核搬运到DRAM中运行

??????????? 这个时候就开始运行操作系统了!?

编译

编译一个代码需要编译器!

编译器:将你写的代码转为汇编再转成二进制代码的软件

安装交叉编译工具

安装:

??? 1: 解压压缩包

??????? sudo tar -xvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz? -C /

??????? 会在根目录生成 opt 文件夹

??????? 这个就是交叉编译工具

??? 2: /etc/profile

??????? 传说中 环境变量文件!环境变量可以再此修改!

??????? 在最后一行添加

??????????? export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin

??? 3: 重启这个文件

??????? source /etc/profile

??????? 执行

??????????? arm-linux-gcc -v

??????? 执行成功即代表安装成功。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:57:06  更:2022-06-14 22:57:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:45:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码