系统移植总结

news2024/11/30 10:55:50

1:什么是系统移植

        1)系统移植是给开发板搭建一个Linux操作系统

        2)从官方获取源码,进行配置和编译,生成板子需要的镜像

2:安装tftp服务器的作用

        Tftp服务器:是基于UDP协议完成简单的文件传输

        作用:通过网线下载程序到开发板中

 3:安装nfs服务器的作用

nfs服务器:网络文件系统

作用:ubuntu通过网络的方式挂载文件到开发板中

 4:gnu二进制工具集

        1.gcc命令

         2.ld链接器

        3. objdump生成反汇编

        4. objcopy生成二进制文件

         5.nm查看符号表信息

命令:arm-linux-gnueabihf-nm asm-led.elf

        6.size查看各个段大小

         7.readelf查看文件头部信息

        8. strip压缩文件体积

         9.addr2line调试段错误信息

 5:gcc编译流程       

        1.预处理

  

        2.编译

        3.汇编

        4.链接

6:Makefile文件,目标,依赖

 

 7:uboot概念,uboot特点?

 

 8:常见的uboot命令有哪些?

        1>help uboot--->查看uboot命令中的环境变量

        2>help go

        3>help gpio

        4>help pri:打印环境变量信息-------->串口工具输入:pri

        5>

         bootargs参数功能:自启动参数,设置ubuntu挂载根文件系统到开发板上的路径和ip地址

        bootcmd参数功能:自启动命令,倒计时时间进入0之前不按下enter键盘,进入自启动模式,并且执行自启动命令

        

        6>run -------> 运行run后面的命令 格式:run uboot命令 run bootcmd

        1)交互模式: 当uboot启动成功之后,在倒计时时间进入0之前,按下键盘enter键,进入交互模式,和uboot命令进行交互

        2)自启动模式: 当uboot启动成功之后,在倒计时时间进入0之前,不按下键盘enter键,进入自启动模式,执行自启动命令(bootcmd)不可以使用uboot命令

        3)设置bootcmd格式

        setenv bootcmd uboot命令1\;uboot命令2\;...............

        saveenv

        4)在arm课程中,需要输入两条命令:loadb 0xc0008000 go 0xc0008000

        5)在串口工具中,查看bootcmd环境变量信息

        6)在串口工具中,执行run bootcmd命令,观察现象

        7)在倒计时时间进入0之前,不按下键盘enter键,进入自启动模式,观察现象

        7>ping命令 ------->测试开发板和ubuntu组网是否成功

        8>tftp命令 ------->使用tftp命令将文件下载到开发板内存中,一定保证开发板和ubuntu组网成功

        

 9:uboot配置和编译流程?

 10:安装交叉工具编译链的作用?

交叉编译链就是为了编译跨平台体系结构的程序代码而形成的由多个子工具构成的一套完整的工具集。同时,它隐藏了预处理、编译、汇编、链接等细节,当我们指定了源文件(.c)时,它会自动按照编译流程调用不同的子工具,自动生成最终的二进制程序映像(.bin)。

11:TF-A是什么,为什么移植TF-A?

基于ARM的可信固件,简称TF-A,运行在一个硬件隔离的安全环境中并提供安全服务

目的


①、验证开发环境搭建是否正确,比如交叉编译器设置是否正确,所依赖的第三方库有没有安装等。
②、观察编译结果,比如编译完成以后的可执行文件保存在哪个目录下,都有哪些可执行文件,其区别是啥等。
③、在自己的开发板上运行编译出来的可执行文件,所谓的移植就是改bug的过程,将编译出来的STM32MP157官方开发板可执行文件在自己的板子上运行,然后观察运行过程有没有错误,直到能在自己的开发板上正常运行。

12:TF-A配置编译流程?

       1>解压源码

       2>打补丁(打补丁打一次即可)

        for p in `ls -1 ../*.patch`; do patch -p1 < $p; done

       3>配置交叉编译工具链

        进入tf-a源码顶层目录下,打开Makefile.sdk文件,搜索:CROSS_COMPILE,更改交叉编译工具链前缀

        14 EXTRA_OEMAKE=CROSS_COMPILE=arm-linux-gnueabihf- DEBUG=1

        注意事项:只更改交叉编译工具链前缀,其他的不要删除

       4>复制相关设备树内容

        1)进入tf-a源码目录下fdts目录下,复制设备树相关内容

        2)进入tf-a源码目录下fdts目录下,更改复制完成后的FSMP1A相关设备树内容

       5>更改Makefile文件,将对应的设备树进行添加

        进入tf-a源码顶层目录下,打开Makefile.sdk文件,搜索TFA_DEVICETREE

       6>编译源码(在tf-a源码目录下),生成镜像文件

        make -f $PWD/../Makefile.sdk all

       7>进行测试

13:给开发部署Linux操作系统(开发阶段)

       1>准备文件

        ①:tf-a镜像文件(TF卡/EMMC)

        ②:uboot镜像文件(TF卡/EMMC)

        ③:内核镜像文件(使用tftp服务器进行下载)

        ④:根文件系统(使用nfs服务器实现挂载)

       2>组网步骤(uboot环境变量参数:ippaddr serverip netmask gatewayip)

      ums命令:

        

      ums烧写:

        1.开发板需要通过TF卡启动方式,进入到uboot界面中

        2.在uboot界面中输入以下命令:

        FSMP1A> ums 0 mmc 1 ------>当输入这个命令时,会在电脑中出现弹框,需要连接到虚拟机中

        3.在ubuntu中,查看一下是否识别到设备:  ls /dev/sd*

        4.在uboot源码目录下执行烧写命令:./sdtools.sh /dev/sdb

        5.测试:将开发板拨码开关拨到EMMC启动方式

        6.如果可以进入到安全模式,代表uboot镜像文件,烧写到EMMC中成功

       3>设置自启动参数和自启动命令 

        1.在串口工具,对uboot组网参数进行配置

                FSMP1A> setenv serverip 192.168.1.250

                FSMP1A> setenv ipaddr 192.168.1.100

                FSMP1A> setenv netmask 255.255.255.0

                FSMP1A> setenv gatewayip 192.168.1.1

                FSMP1A> saveenv

        2.测试开发板与ubuntu是否连接成功

                FSMP1A> ping 192.168.1.250

       4>查看挂载是否成功

        ①:流程图

       

1.在开发板中emmc设备或者TF卡设备中固化uboot镜像文件

2.在ubuntu中~/tftpboot目录下,准备好基于tfp服务器下载的文件(设备树文件和uImage镜像文件)

3.通过开发板的拨码开关,选择开发板的启动方式

4.开发板上电,uboot镜像文件加载到开发板内存中

5.在串口工具打印uboot信息,在倒计时时间进入0之前,按下enter键,进入交互模式

6.使用tftp命令通过网线下载镜像文件到开发板中,下载内容为设备树文件和uImage镜像文件 7.下载成功之后,linux内核进行启动,启动成功之后

8.通过网线实现从ubuntu挂载根文件系统到开发板中

9.挂载成功之后,在串口工具,可以查看到~/nfs/rootfs目录下相关内容

 ②:使用tftp命令下载镜像文件

1.将群里发的设备树文件和uImage镜像文件,拷贝到ubuntu中~/tftpboot目录下

2.在串口工具,将镜像文件(uImage)文件下载到开发板内存中

FSMP1A> tftp 0xc2000000 uImage

3.在串口工具,将设备树(stm32mp157a-fsmp1a.dtb)文件下载到开发板内存中

FSMP1A> tftp 0xc4000000 stm32mp157a-fsmp1a.dtb

③:设置bootargs参数

1.在串口工具,设置bootargs参数

FSMP1A> setenv bootargs root=/dev/nfs nfsroot=192.168.1.250:/home/ubuntu/nfs/rootfs,tcp,v4 rw console=ttySTM0,115200 init=/linuxrc ip=192.168.1.100

FSMP1A> saveenv

2.解释bootargs参数:

root=/dev/nfs:使用nfs服务器挂载

nfsroot=192.168.1.250:/home/ubuntu/nfs/rootfs:挂载的ip地址和路径,注意自己的路径和ip地址

tcp,v4:型号

rw :可读可写权限

console=ttySTM0:默认使用串口0

init=/linuxrc:默认启动1号进程

115200:波特率

ip=192.168.1.100 :板子的IP地址

3.启动内核

bootm 0xc2000000 - 0xc4000000

④:设置bootcmd参数

FSMP1A> setenv bootcmd tftp 0xc2000000 uImage\;tftp 0xc4000000 stm32mp157a-fsmp1a.dtb\;bootm 0xc2000000 - 0xc4000000

FSMP1A> saveenv

14:为什么移植内核

因为uboot是一个裸机程序,引导内核启动成功之后,生命周期就结束了,所以需要移植linux内核

内核五大功能

1.进程管理:进程创建/进程销毁/进程调度

2.内存管理:内存申请和释放

3.网络管理:通过网络协议栈,完成数据的收发

4.文件管理:通过文件系统管理ext2/ext3/ext4等格式来管理文件

5.设备管理:字符设备管理/块设备管理/网卡设备管理

 linux内核特点

1.linux内核是开源的,内核源码是由C语言和汇编语言编写完成的

2.linux内核支持多种硬件架构平台(ARM架构/X86架构)

3.linux内核有很好的移植性和裁剪性,通过图形化界面进行选配

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

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

相关文章

mysql sql优化(索引优化)经验漫谈

文章目录1. 当用sql查找是否“存在”场景2. where 条件 in的限制3. updade语句要不要考虑索引的命中情况4. mysql 预编译 多线程5. 函数与索引失效的关系6. mysql隐性类型转换与索引失效的关系7. 联合索引8. 联合索引最左匹配原则9. 回表 索引覆盖 聚簇索引 非聚簇索引10. 前缀…

这下真的是阳了个阳!

实际情况 很不幸&#xff0c;在前天&#xff0c;出现了新冠阳性的症状&#xff0c;随后用抗原检测了下&#xff0c;有阳的条带出现&#xff08;很浅&#xff0c;弱阳&#xff0c;因为才出现症状&#xff09;&#xff0c;基本上就是确定阳了。 抗原检测不知道今天是第几天了&…

第40篇 网络(十)WebKit初识

导语 WebKit是一个开源的浏览器引擎。Qt中提供了基于WebKit的QtWebKit模块&#xff0c;它包含了一组相关的类。QtWebKit提供了一个Web浏览器引擎&#xff0c;使用它便可以很容易的将万维网&#xff08;WorldWide Web&#xff09;中的内容嵌入到Qt应用程序中。与此同时&#xf…

大二Web课程设计——基于HTML+CSS+JavaScript+jquery手表商城购物网站(17页)

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

无人机集群的分布式协作 VI-SLAM

以下内容来自从零开始机器人SLAM知识星球 每日更新内容 点击领取学习资料 → 机器人SLAM学习资料大礼包 #论文# D2SLAM: Decentralized and Distributed Collaborative Visual-inertial SLAM System for Aerial Swarm 论文地址&#xff1a;https://arxiv.org/abs/2211.01538…

视频怎么转文字?快把这些方法收好

如今短视频让知识传播变得越来越简单&#xff0c;我们可以很轻松的就通过短视频了解到大量的知识要点。但是当我们想要回温知识点的时候&#xff0c;需要重新观看视频&#xff0c;这就有些不太便利。其实我们可以通过将视频转成文字&#xff0c;这样子就容易归纳知识点了。那你…

Jlink commander使用方法(附指令大全)

Jlinkcmd它可以方便用户在非仿真的情况下&#xff0c;hold内核、单步、全速、设置断点、查看内核和外设寄存器、读取flash代码等等&#xff0c;方便大家拥有最高的权限查看在运行中的MCU情况&#xff0c;查找非IDE仿真情况下&#xff0c;MCU运行异常的原因。 目录 驱动安装 …

粉笔科技张小龙:能传授知识文化和技能,就是对社会的贡献和交代

粉笔科技张小龙在一次粉笔科技的管培生大会上强调&#xff0c;今天是互联网时代&#xff0c;你只有为别人提供价值&#xff0c;提供更高品质的价值&#xff0c;以及更高效率的提供价值&#xff0c;你才有价值。一个企业是这样&#xff0c;一个人也是这样。#张小龙# 你把事情做到…

微服务框架 SpringCloud微服务架构 分布式缓存 42 Redis 主从 42.4 数据同步原理【优化】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 分布式缓存 文章目录微服务框架分布式缓存42 Redis 主从42.4 数据同步原理【优化】42.4.1 主从同步的问题优化42.4.2 总结42 Redis 主从 42…

QA | SWCF2022 笔记:C波段卫星与5G之间的干扰排查及解决方案

2022年度SWCF卫星通信与仿真测试研讨会正在进行中。昨日精彩演讲&#xff1a;C波段卫星与5G之间的干扰排查及解决方案&#xff0c;昨晚收到一些粉丝的技术问题&#xff0c;我们汇总了热点问题并请讲师详细解答。 演讲主题&#xff1a;C波段卫星与5G之间的干扰排查及解决方案 干…

龙芯内核的UOS安装 Mariadb-server

1.安装 Mariadb-server 1.1安装配置 sudo apt install mariadb-server启动数据库 systemctl start mariadb;设置数据库自启动 systemctl enable mariadb;对数据库进行一些设置 mysql_secure_installation输入当前密码&#xff08;因为是第一次安装&#xff0c;没有密码&am…

基于Android的应用市场软件的设计

基于Android的应用市场软件的设计 摘  要 随着智能手机的普及&#xff0c;人们越来越依赖手机进行一系列操作。 由于Android系统是一款免费的操作系统&#xff0c;导致了使用Android系统的手机占到7成左右。为了让Android手机用户体验更好&#xff0c;就需要让Android手机用…

【linux】之私有云OpenStack手动分布式部署

一、环境准备 参考: https://docs.openstack.org/zh_CN/install-guide/ 1, 静态IP(NetworkManager服务可以关闭) 2,主机名与绑定 192.168.122.11 controller 192.168.122.12 compute 192.168.122.13 cinder3, 关闭防火墙和selinux 4, 时间同步 所有节点准备yum源 # yum …

12.6、后渗透测试--Windows系统下信息收集模块

一、存活主机发现 步骤1、使用arp查看缓冲表&#xff1a;meterpreter > arp步骤2、局域网内存活主机发现&#xff1a;meterpreter > run post/windows/gather/arp_scanner RHOSTS172.16.0.0/24二、应用程序枚举 方法1&#xff1a; 获取靶机上的软件安装信息meterpreter…

免费刷题的软件测试面试题库小程序,萌新必备

现如今&#xff0c;不仅学习卷、考证卷&#xff0c;就连找工作也开始卷得没边了。就如最近几年新崛起的软件测试岗位&#xff0c;很多人为了能过快速通过面试&#xff0c;或者拿到offer&#xff0c;纷纷在面试前几周左右&#xff0c;不惜花重金&#xff0c;购买面试题目&#x…

【总结】有三AI所有原创GAN相关的学习资料汇总(2022年12月)

GAN的研究和应用在这几年发展可以说是非常迅猛&#xff0c;无疑是这几年深度学习计算机视觉领域里落地性最酷的技术之一&#xff0c;包括图像与视频生成&#xff0c;数据仿真与增强&#xff0c;各种各样的图像风格化任务&#xff0c;人脸与人体图像编辑&#xff0c;图像质量提升…

高分子PEGDBCO-PEG-Acrylates,DBCO-PEG-ACRL,二苯并环辛炔PEG丙烯酸酯

●外观以及性质&#xff1a; DBCO-PEG-ACRL产物呈固体或粘性液体&#xff0c;取决于PEG分子量“点击化学"一般由叠氮化物&#xff08;azide&#xff09;和炔烃&#xff08;alkyne&#xff09;作用形共价键&#xff0c;具有高效稳定&#xff0c;高特异性等优点。反应不受PH…

【Vue 快速入门系列】Vue中如何使用动画与过渡

文章目录前言一、回忆css3中的动画二、Vue中单标签使用动画1.默认使用方法2.自定义使用方法三、Vue中多标签实现动画效果四、使用第三方动画前言 本篇博客将会介绍如何在Vue中使用动画效果。 一、回忆css3中的动画 定义一个动画&#xff1a; 定义一个动画名为atguigu keyfr…

WhatWeb 网站指纹识别软件

一、WhatWeb介绍 WhatWeb是一个开源的网站指纹识别软件。WhatWeb识别网站。它的目标是回答“那个网站是什么&#xff1f;”这个问题。WhatWeb可识别Web技术&#xff0c;包括内容管理系统&#xff08;CMS&#xff09;&#xff0c;博客平台&#xff0c;统计/分析包&#xff0c;Ja…

数据库原理及MySQL应用 | 数据库安全加固

数据库安全至关重要&#xff0c;可从多方面对数据库进行加固。 数据库安全怎么强调都不过分&#xff0c;可以从以下方面对数据库进行加固&#xff0c;让它更安全。 01、操作系统级别 可从以下七方面实现操作系统级别的安全加固。 1. 使用数据库专用服务器 使用专用的服务器…