系统移植,GNU命令,Uboot移植

一.GNU命令

 1、addr2line

        把程序地址转换为文件名和行号      做·调试        

2、ar

        建立,修改,提取归档文件

3、Id:GNU

arm-none-linux-gnueabi-ld start.o main.o -Tmap.lds -o uart.elf

链接器

4、as

主要用来编译GNU编译器gcc输出的汇编文件,产生的目标文件由链接器Id链接 类似于gcc -c

5、objcopy/arm-linux-objcopy(文件格式转换)

arm-linux-gnueabi-objcopy -o binary uart.elf uart.bin

6、objdump

显示一个或者更多目标文件的信息,主要用于反编译

eg:
gcc -g test.c
sudo dmesg -c //记录日志
./a.out
sudo dmesg // 查看日至信息如下
[5001.031629] a.out[32094]: segfault at 0 ip
000055f94062713d sp 00007ffcad1003d0 error 6 in a.out[55f940627000+1000 ]
分析:ip 000055f94062713d-55f940627000+1000 => 0x113d地址处的指令出错1了
查找出错的指令 addr2line/objdump
​ 方法一:addr2line 0x113d 得到文件名和行号
方法二: objdump -SI a.out > t_s //得到反编译文件
vi t_s //定位到113d可以找到出错指令了

7、strip:丢弃目标文件中的全部或者特定符号,减小文件体积

eg:

strip a.out

二.bootloader移植

1.概念

    是内核运行之前运行的一小段程序;

    主要是对硬件初始化,为操作系统运行做准备;

    启动加载内核;

2.特点

    不属于操作系统;

    采用汇编和C编程;

    针对特定的cpu特定的板子定制的;

3.操作模式

    交互模式:适用bootloader移植人员

    自启动模式:适用与系统移植的人员

4.bootloader的两个阶段

    1)汇编阶段

        基本的硬件初始化,例如:始时钟、内存。。。

        自搬移

        初始化堆栈及清空bss,准备C环境

    2)C阶段

        初始化用到的所有的硬件,例如:flash、uart、网卡....

        等待输入命令:pri/set/save....

        执行命令

三.uboot移植

1.特点

    代码结构清晰、易于移植(见目录结构)

    支持多种处理器体系结构(见arch目录)

    支持众多开发板(目前官方包中有200多种,见board目录)

    命令丰富、有监控功能

    支持网络协议、USB、SD等多种协议和设备

    支持文件系统

    更新较活跃,使用者多,有助于解决问题

 2.命令

    1)pri/printenv  显示所有环境变量

    2)set/setenv    设置新的环境变量

        set ipaddr 192.168.7.147

    3)save/savenv 保存环境变量

        save

    4) tftp //网络下载文件

        tftp 0x40008000 led.bin //下载led.bin到内存

    5) loadb //通过串口kermit协议下载二进制数据

        loadb 0x40008000

        go 0x40008000

    6)movi命令

        tftp u-boot.bin 0x40008000

        movi write uboot 0x40008000 //将内存0x40008000地址处的内容写到EMMC的uboot区

    7)bootcmd  自启动命令

        set bootcmd tftp 0x41000000 uImage\;tftp 0x42000000 exynos4412-fs4412.dtb

        save

    8)go  addr   执行内存中的二进制代码,简单的跳转到指定地址

        go 0x40008000

    9)bootm  kernel-addr ramdisk-addr  dtb-addr

3.uboot的执行过程

    1)第一阶段(汇编阶段)

        设置CPU工作模式svc、关中断、关MMU、关catch

        内存初始化、时钟初始化

        自搬运(不需要)

        设置堆栈、清空BSS段

    2)第二阶段(C阶段)

        各种硬件初始化,GPIO、串口、网口……

        执行命令

        加载内核

四.uboot源码分析

找入口(arch/arm/cpu/armv7/start.S) <- 链接脚本 <- arch/arm/cpu/u-boot.lds <- Makefile

_start(arch/arm/cpu/armv7/start.S)://入口

    reset:

        --|设置CPU的工作模式为SVC

        --|设置异常向量表

        --|bl  cpu_init_cp15 //关MMU和catch

        --|bl  cpu_init_crit //

            --| b   lowlevel_init (board/samsung/fs4412/lowlevel_init.S)

                --|if(uboot is not ram)

                    --|时钟初始化

                    --|内存初始化

                --|bl uart_asm_init 串口初始化

                --|bl tzpc_init     trust zone初始化

        --|bl _main(arch/arm/lib/crt0.S)

            --|初始化堆栈,清bss ,准备C环境

            --|ldr pc, =board_init_r(arch/arm/lib/board.c)  

                        --|初始化各种硬件(catch flash 网卡 串口 内存 电源 ....)            

                        --|for(;;)

                            {

                                main_loop();//等待命令 执行命令          

                            }

 五.uboot移植

1.明确需求

    uboot能够启动加载内核即可;

2.准备资料

3.确认是否支持当前CPU(arch/arm/cpu/armv7/exynos)

    不支持:换uboot版本 找芯片厂商要 

    支持: go 4

4.确认是否支持当前板子(board/samsung/fs4412)

    不支持: 换uboot版本 找板子厂商 借鉴:和板子芯片同芯片的板子

    支持:go 5

5.移植

    1)借鉴origen板子

        cp include/configs/origen.h include/configs/fs4412.h

        cp board/samsung/origen board/samsung/fs4412 -a

    2)vi boards.cfg //添加fs4412,借鉴origen

        fs4412         arm     armv7    fs4412  samsung    exynos

    3)修改Makefile

        #ifeq ($(HOSTARCH),$(ARCH))

            CROSS_COMPILE ?= arm-linux-

        #endif

    4)make fs4412_config //让uboot识别fs4412并编译

    5)make //编译 u-boot.bin

【验证】u-boot.bin是否能够启动加载内核

    方法一:SD卡验证

        使用SD烧写根据将 u-boot.bin 烧写到SD卡中,然后拨码开关拨到1000,板子上电看效果

    方法二:EMMC验证

        SD卡启动(1000) -> tftp 0x40008000 u-boot.bin -> movi write uboot 0x40008000 -> 切换拨码开关0111启动看效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

git本地分支的合并/切换分支时遇到的问题

目录 第一章、本地分支的切换测试1.1&#xff09;切换之前的master分支下文件内容1.2&#xff09;切换到develop分支后修改文件1.3&#xff09;切回master分支出现报错&#xff1a; 第二章、解决方式2.1&#xff09;方式1&#xff1a;commit提交修改2.2&#xff09;方式2&#…

电脑文件mfc140.dll丢失的解决方法指导,怎么快速修复mfc140.dll

mfc140.dll 文件的缺失是个普遍的问题&#xff0c;在日常使用中可能会时不时遇到。本文主要目的是详细介绍一旦遇到 mfc140.dll 文件缺失&#xff0c;应该如何进行下载和安装的步骤。不再赘言&#xff0c;下面就一起深入了解mfc140.dll丢失的解决方法指导。 一. mfc140.dll的作…

VBA即用型代码手册之改变主窗口标题栏名称及隐藏工作表

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

IMU用于室内定位

在室内环境中&#xff0c;全球定位系统&#xff08;GPS&#xff09;的信号受限&#xff0c;因此&#xff0c;开发高精度的室内定位技术成为了研究的热点。近日&#xff0c;来自印度的研究团队采用了粒子滤波算法和多传感器融合技术&#xff0c;探讨了IMU和UWB测量数据的融合&am…

Redis解决方案:NOAUTH Authentication required(连接jedis绑定密码或修改redis密码)

Redis解决方案&#xff1a;NOAUTH Authentication required&#xff08;连接jedis绑定密码或修改redis密码&#xff09; Java使用jedis连接redis时出现错误NOAUTH Authentication required 一、问题报错和原因 本地设置了redis的密码&#xff0c;但在远程连接时并没有输入密…

web系统架构基于springCloud的各技术栈

博主目前开发的web系统架构是基于springCloud的一套微服务架构。 使用的技术栈&#xff1a;springbootmysqlclickhousepostgresqlredisrocketMqosseurekabase-gatewayapollodockernginxvue的一套web架构。 一、springboot3.0 特性&#xff1a;Spring Boot 3.0提供了许多新特性…

绘图软件Visio入门必备!Visio版本|下载|替代软件|模具图库|使用技巧

Visio是什么软件&#xff1f; Visio&#xff0c;全称为Microsoft Visio&#xff0c;是微软旗下的一款图表和矢量图形应用程序&#xff0c;属于Microsoft 365系列的一部分。Visio最初是由前美国软件公司Visio Corporation于1992年推出&#xff0c;微软于2000年收购了Visio Corp…

【华为 ICT HCIA eNSP 习题汇总】——题目集6

1、IEEE 802.11g 标准支持的最大协商速率为&#xff08;&#xff09;。 A、300Mbps B、150Mbps C、54Mbps D、1200Mbps 考点&#xff1a;无线局域网 解析&#xff1a;&#xff08;C&#xff09; IEEE 802.11系列标准如下表&#xff1a; 标准数据传输速率主要技术IEEE 802.111M…

20240124在GoogleEarth中输入GPS坐标查看位置

20240124在GoogleEarth中输入GPS坐标查看位置 2024/1/24 18:08 缘起&#xff1a;斯蒂夫●霍金邀请来自未来的时间旅行者赴宴&#xff01; 有空我也想过去围观一下&#xff01; 于是好奇地找了一下这个地方&#xff01; https://movie.douban.com/subject// 与霍金一起了解宇宙…

7、机器学习中的数据泄露(Data Leakage)

找到并修复这个以微妙的方式破坏你的模型的问题。 数据泄露这个概念在kaggle算法竞赛中经常被提到,这个不同于我们通常说的生活中隐私数据暴露,而是在竞赛中经常出现某支队伍靠着对极个别feature的充分利用,立即将对手超越,成功霸占冠军位置,而且与第二名的差距远超第二名…

低代码是不需要代码?

吐槽 我看到网上把低代码直接定义为需要很少甚至不需要代码&#xff0c;这是一种错误的描述。试想向一个不了解这个概念的人这样解释&#xff0c;人家还以为你用“意念”写出来的应用程序。 我的理解 所谓低&#xff0c;指的是低量&#xff0c;少量&#xff0c;所以低代码应…

Leetcode刷题笔记题解(C++):LCR 153. 二叉树中和为目标值的路径

思路&#xff1a;利用回溯的思想&#xff0c;回溯的退出条件为当前节点为空&#xff0c;是符合路径的判断条件为路径和为目标值且叶子节点包含了&#xff0c;代码如下&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *…

【Android】Android中的系统镜像由什么组成?

文章目录 总览Boot Loader 的加锁与解锁Boot 镜像内核RAM diskARM 中的设备树 (Device Tree) /System 和/Data 分区镜像参考 总览 各种Android设备都只能刷专门为相应型号的设备定制的镜像。 厂商会提供一套系统镜像把它作为“出厂默认”的 Android 系统刷在设备上。 一个完…

中国城市二氧化碳排放数据,农业服务业工业等行业排放量均有~有shp和excel格式

基本信息. 数据名称: 中国城市二氧化碳排放数据 数据格式: Shpexcel 数据几何类型: 面 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1ny农业排放量&#xff08;万吨&#xff09;2fwy服务业排放量&#xff08;万吨…

无刷电机学习-方波电调 电路篇

想要彻底的理解无刷电机的驱动&#xff0c;那必然少不了学习他的驱动电路和程序。这里用开源的AM32无刷电调&#xff08;方波驱动&#xff09;来作为学习无刷电机笔记。 https://github.com/AlkaMotors附上作者github地址 AM32_Hardware: 基于AT32MCU的AM32PCB另一位大佬开源…

【python文件】生成的csv文件没两行数据之间有一个空行

问题描述 用python代码将数据写入csv文件&#xff0c;但生成的csv文件没两行数据之间有一个空行&#xff0c;如下图所示&#xff1a; 解决办法 在open函数中添加newline&#xff0c;如以下代码所示&#xff0c;即可解决这一问题。 with open(r"C:\Users\xxx\Desktop\DR…

Java实现桃花峪滑雪场租赁系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设计3.1 教练表3.2 教练聘请表3.3 押金规则表3.4 器材表3.5 滑雪场表3.7 售票表3.8 器材损坏表 四、系统展示五、核心代码5.1 查询教练5.2 教练聘请5.3 查询滑雪场5.4 滑雪场预定5.5 新…

Universal Approximation Capabilities of Mixture of Weibulls (混合韦布尔分布的万能近似)

找了好久都没有找到混合韦布尔分布是否有万能近似性质&#xff0c;下面这个算是一点线索&#xff0c;不过看不太懂。 回答1&#xff1a;Ultimately this sounds tautological: just define “well-behaved” as any density that can be approximated, according to some speci…

企业计算机服务器中了360后缀勒索病毒怎么办,360勒索病毒解密流程

计算机网络技术的不断应用&#xff0c;极大地提升了企业办公与生产效率&#xff0c;为企业提供了极大方便&#xff0c;但同时也为企业的数据安全埋下隐患&#xff0c;近期云天数据恢复中心再次接到企业的求助&#xff0c;企业的计算机服务器遭到了360后缀勒索病毒攻击&#xff…

Axure校园跑步社交APP原型图,大学生运动健身原型模板53页

作品概况 页面数量&#xff1a;共 50 页 兼容软件&#xff1a;仅支持Axure RP 9/10&#xff0c;非程序软件无源代码 应用领域&#xff1a;运动健身、校园app、社交应用 作品特色 本作品为校园跑社交app原型图&#xff0c;高保真带交互&#xff0c;是一款专注于校园健身社交的…