linux的系统移植——序言
1.单片机裸机和带有操作系统OS的区别
\qquad裸机有三层,从上至下依次为:应用层、驱动层、硬件层;而带有OS的单片机有四层,从上至下依次为:应用层、内核层、驱动层、硬件层。
2.系统移植学习内容
\qquad四大块:搭建交叉编译环境、bootloader的选择和移植、kernel的配置,编译,移植和调试、根文件系统的制作
3.系统移植的基本步骤
3.1 确定目标机(单片机)和主机(PC电脑)的连接方式
\qquad目前,基本有四种连接方式:
\qquadUART异步串行通信接口(串口)
通信方式 | 特点 |
---|---|
UART异步串行通信接口(串口) | 速率低,实用性强,可以输入输出 |
USB串行通信接口 | 速度快,驱动要移植修改 |
TCP/IP网络通信接口 | 速度快,驱动要移植 |
Debug Jtag调试接口 | 方便快捷,价格高 |
3.2安装交叉编译器
\qquadgcc是基于X86架构,所以它编译出来的文件在ARM上运行不起来,所以需要交叉编译器,编译出可以在ARM上运行的文件。
\qquad交叉编译器的来源:1.安装芯片厂商已经编译好的交叉工具链,比如arm-none-linux-gnueabi-
,arm-none-eabi-
,arm-linux-
,arm-elf-
…2.自己动手编译交叉工具链,自己制作。
\qquad交叉编译器的名称:arm
:最终生成的体系结构目标;none
:厂商名;linux
:交叉工具链编译出来的程序是针对linux系统运行的;gnueabi
:gnu表示开源,eabi表示嵌入式的调用标准接口。
\qquad有时候会看到arm-linux-
,这是表示一个软连接,输入arm-linux-
相当于输入arm-none-linux-gnueabi-
\qquadarm-none-eabi-
:不支持操作系统
\qquadarm-elf-
:特别老的编译工具链,很少见到。
3.3搭建主机和目标机传输通道
\qquad网络相关服务配置:TFTP和NSH是最常用的
3.4 编译三大子系统
\qquadBootLoader子系统、内核核心子系统、文件系统子系统
3.5 烧写测试
linux的系统移植——序言相关推荐
- zybo上运行linux,Zybo开发板linux作业系统移植
文章主要介紹zybo board上linux作业系统移植过程.分别介绍了开发环境搭建.U-boot编译.linux内核编译.busybox制作等流程及注意事项.文章使用的开发板是zynq 7000系列 ...
- Linux之系统移植与根文件系统构建
Linux之系统移植与根文件系统构建 1.Uboot 1. 什么是Uboot: 一个裸机程序 就是一个bootloader用于启动Linux或其他系统 最主要的工作就是初始化DDR.因为Linux是运 ...
- 嵌入式Linux开发——系统移植篇回顾
前言: 最近在学习正点原子Linux开发板u-boot.内核移植,根文件系统构建的相关内容,本文旨在起到一个流程梳理.宏观地把握整个移植u-boot.kernel,构建文件系统过程的作用,像Makef ...
- linux的系统移植——交叉编译器
1.为什么要有交叉编译器? \qquad一般电脑是X86架构,而单片机一般不是,比如单片机是ARM架构,那么gcc编译生成的程序只能在X86的架构上运行,而不能在ARM架构上运行,所以需要交叉编译器编 ...
- 《Linux操作系统-系统移植》第12章 5G模组移植-第1节 中移物联5G移植(PPP拨号)
开发环境 主机:ubuntu14.04 开发板内核版本:linux-4.14.78 1 内核驱动修改 当模块连接到USB串行驱动时,驱动程序将在目录/dev中创建设备文件, ttyUSB0/ttyUS ...
- 《Linux操作系统-系统移植》第4章 内核移植 - 内核解析(Linux3.14)
4.1内核配置过程分析 4.1.1前言 1.linux内核五大功能: 进程管理(cpu) 内存管理(内存) 设备管理(驱动) 网络管理(网络协议tcp/ip) 文件系统(vfs) 2.linux版本号 ...
- 《Linux操作系统-系统移植》第8章 USB-4G/LTE移植 -第3节 USB-4G移植(移远AG35开发-Gobi拨号)
开发环境 主机:ubuntu12.04 开发板内核版本:linux-2.6.35 [注]AG35支持PPP拨号,Gobi拨号和QMI拨号,笔者使用的是Gobi拨号,关于另外两种拨号请参考官方文档,后文 ...
- 《Linux操作系统-系统移植》第8章 USB-4G/LTE移植 -第3节 USB-4G移植(移远EC20开发-Gobi拨号)
开发环境 主机:ubuntu12.04 开发板内核版本:linux-2.6.35 开发板:imx283开发板 [注]EC20支持PPP拨号,Gobi拨号和QMI拨号,笔者使用的是Gobi拨号,关于另外 ...
- linux的系统移植——内核启动
1.uImage zImage Image bzImage的区别 \qquaduImage既包括内核数据,又包括和uboot的衔接数据:zImage Image bzImage本质是一样的,但是数据压 ...
最新文章
- Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务
- python的代码编译、代码打包方法
- 团队计划(5.25)
- python项目管理器 宝塔面板 django 404_宝塔面板成功部署Django项目流程(图文)
- 场景:如果一个select下拉框的值被选中,其他两个字段值的校验也生效
- C++入门项目——通讯管理系统
- halcon教程之VisionPro软件和Halcon软件 的详细对比
- 增程式混合动力汽车Cruise整车仿真模型 串联混合动力仿真 基于Cruise平台搭建整车部件等动力学模型
- android 连接蓝牙耳机 播放音乐,Android连接蓝牙耳机播放音乐
- java浮点数转整数_(题目2)自己实现浮点数转换为整数
- 九宫格,二十五宫格,甚至八十一宫格 技巧
- dataworks/odps上传资源,注册函数,下载资源
- VS 2019教程:创建ASP.NET Core Web App
- unity基础(3)——从Unity Asset store获取资源
- docker进入容器时报错 Error response from daemon: Container xxx is restarting, wait until the container is
- 基于CUDA的N-Body问题并行程序设计及性能优化
- 自媒体创作怎么细分领域?怎么进行选题?
- 谓词逻辑在计算机中的,谓词逻辑与归纳原理1.ppt
- 获取图像的Hu不变矩
- Ambari添加快速链接Quick Links
热门文章
- 剑指Offer - 面试题61. 扑克牌中的顺子
- A*搜索算法--游戏寻路
- Android 引用模块中的类,解决Android项目中找不到Module中的封装类或引用的第三方类库...
- VUE:解决判断网页端与手机端情况下,横竖屏无法判断的问题
- Python判断变量是否存在的方法
- 微信小程序的不同函数调用的几种方法
- 学生管理系统代码赏析
- 极光无限渗透测试面经_认识工业以太网及线缆测试
- python自动化安装软件_python自动化安装源码软件包
- sqlserver2008驱动_Python连接数据库两种方法,QSqlDatabase,pymmsql,驱动名