3.28号系统移植

news2024/11/26 11:38:26

系统移植就是给开发板搭建一个linux操作系统

1. 安装tftp服务器

tftp服务器作用:将ubuntu中指定的文件下载到开发板中

安装步骤

1. 首先需要保证ubuntu组网成功

2. 安装tftp服务器安装包

3. 在家目录下,创建tftpboot文件夹,并且添加最高权限

4. 配置tftp服务器

5. 重启配置文件

6. 重启tftp服务器

linux@ubuntu:~$ sudo service tftpd-hpa restart

7. 在本地测试tftp服务器是否安装成功

2. 安装nfs服务器

nfs服务器作用:将ubuntu中指定的文件夹挂载到到开发板中

安装步骤

1. 首先需要保证ubuntu组网成功

2. 安装nfs服务器安装包 

3. 在家目录下,创建nfs文件夹,并且添加最高权限 

4. 将群里下发的文件夹rootfs-ok.tar.xz,拷贝到~/nfs目录下 linux@ubuntu:~$ cd nfs linux@ubuntu:~/nfs$ tar -vxf rootfs-ok.tar.xz

5. 配置nfs服务器 

6. 重启nfs服务器

linux@ubuntu:~$ sudo service nfs-kernel-server restart

7. 在本地测试nfs服务器是否安装成功

3. gcc编译流程

4. gnu二进制工具集

4.1 gcc 编译命令

功能:将.s或者.c文件编译生成.o文件,只编译不链接

格式:gcc -c *.s -o *.o

例子:arm-linux-gnueabihf-gcc -O0 -g -c asm-led.S -o asm-led.o

4.2 ld 链接命令

功能:将.o文件链接生成.elf可执行文件

格式:ld -Ttext=链接地址 *.o -o *.elf

例子:arm-linux-gnueabihf-ld -Ttext=0xc0008000 asm-led.o -o asm-led.elf

4.3 objcopy 生成二进制文件

功能:将.elf可执行文件,通过objcopy命令生成某种格式的文件

格式:objcopy -O binary *.elf *bin

例子:arm-linux-gnueabihf-objcopy -O binary asm-led.elf asm-led.bin

4.4 objdump 生成反汇编文件

功能:将.elf可执行文件,通过objdump命令生成反汇编文件

格式:objdumo -D *.elf > *dis

例子:arm-linux-gnueabihf-objdump -D asm-led.elf > asm-led.dis

4.5 nm 查看符号表信息

功能:查看.elf文件符号表信息

格式:nm *.elf

例子:arm-linux-gnueabihf-nm asm-led.elf

4.6 size 查看各个段大小

功能:查看各个段大小信息

格式:size *.elf

例子:arm-linux-gnueabihf-size asm-led.elf

4.7 strip 压缩文件体积

功能:压缩可执行文件体积

格式:strip *.elf

例子:arm-linux-gnueabihf-strip asm-led.elf

4.8 addr2line

功能:根据地址信息,定位段错误的文件名和函数名,以及行号

格式:addr2line 地址 -e *.elf -f

5. 分析Makefile

#指定交叉编译工具链前缀名字
CROSS_COMPILE = arm-linux-gnueabihf-
#指定文件名
NAME = interface
#========================================================#
#-g:添加gdb调试信息
#-marm:编译生成arm指令集
#-Wall:编译时,显示所有的警告信息
#-O0:不优化
# -fno-builtin:不可以使用linux操作系统提供库函数
#-nostdinc:不可以使用linux操作系统中提供的头文件
#-I:指定头文件路径                                               
CFLAGS += -g -marm -Wall -O0 -mabi=apcs-gnu -mfpu=neon -mfloat-abi=softfp -fno-builtin \
            -nostdinc -I./common/include    -I./include  
#LD:链接
LD    = $(CROSS_COMPILE)ld
#CC:编译
CC    = $(CROSS_COMPILE)gcc
#NM:查看符号表信息
NM  = $(CROSS_COMPILE)nm
#OBJCOPY:生成二进制文件
OBJCOPY = $(CROSS_COMPILE)objcopy
#OBJDUMP:生成反汇编文件
OBJDUMP = $(CROSS_COMPILE)objdump
#================================================#
#wildcard是Makefile中内置函数
#函数功能:将指定目录下,按照某种格式进行展开,中间用空格隔开
#参数:需要指定的目录,以及展开格式的文件
#返回值:展开后的结果
OBJSss     := $(wildcard start/*.S) $(wildcard common/src/*.S) $(wildcard *.S)\
           $(wildcard start/*.c) $(wildcard common/src/*.c)                \
           $(wildcard src/*.c) $(wildcard *.c) 
#patsubst是Makefile中内置函数
#函数功能:将指定目录下,完成指定格式替换
#参数:1)源字符串格式 2)目标字符存替换格式 3)替换的目录
#返回值:替换后的结果
OBJSs      := $(patsubst %.S,%.o,$(OBJSss))
OBJS     := $(patsubst %.c,%.o,$(OBJSs))

%.o: %.S 
    @echo "  AS      $@"
    @#$@:目标  $<:第一个依赖 $^:所有依赖
    @#将所有的.s文件编译生成.o文件
    @$(CC) $(CFLAGS) -c -o  $@ $<

%.o: %.c
    @echo "  CC      $@"
    @#将所有的.c文件编译生成.o文件
    @$(CC) $(CFLAGS) -c -o  $@ $<

all:clean  $(OBJS)
    @echo "  LD      Linking $(NAME).elf"
    @#将所有的.o文件,根据map.lds文件,链接生成.elf文件
    @$(LD)  $(OBJS) -T map.lds -o $(NAME).elf

    @echo "  OBJCOPY Objcopying $(NAME).bin"
    @#将.elf文件通过objcopy命令生成.bin文件
    @$(OBJCOPY)  -O binary  $(NAME).elf $(NAME).bin 

    @echo "  MAP     Generating $(NAME).map"
    @#将.elf文件的符号表信息,重定向到.map文件中
    @$(NM) $(NAME).elf > $(NAME).map 

    @echo "  OBJDUMP Objdumping $(NAME).dis"
    @#将.elf文件生成反汇编文件,重定向到.dis文件中
    @$(OBJDUMP) -DS $(NAME).elf > $(NAME).dis 

distclean clean:
    @rm -rf $(OBJS) *.elf *.bin *.dis *.map
    @echo "  CLEAN   complete."

install:
    sudo cp $(NAME).bin /mnt/hgfs/share/

show:
    @echo $(OBJSss)
    @echo $(OBJSs)
    @echo $(OBJS)

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

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

相关文章

5.11 Vue配置Element UI框架

Vue配置Element UI框架 目录一、 概要二、 开发前准备1. 搭建Vue框架 三、 安装 Element UI1. 引入 Element UI 依赖2. 在 main.js 中引入 Element UI 和相关样式&#xff1a;3. 按需引入(非必须, 可忽略)4. 简单构建一个主页面 目录 一、 概要 Element UI 是一个基于 Vue.js …

【算法】01背包问题(代码+详解+练习题)

题目&#xff1a; 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整…

代码随想录算法训练营第二十七天|131.分割回文串、93.复原IP地址

文档链接&#xff1a;https://programmercarl.com/ LeetCode131.分割回文串 题目链接&#xff1a;https://leetcode.cn/problems/palindrome-partitioning/ 思路&#xff1a;把回溯的树画出来就好很多。startIndex用来控制切割的位置 例如对于字符串abcdef&#xff1a; 组…

【T5模型源码】深入T5模型:源码解析与实现细节

【T5模型源码】深入T5模型&#xff1a;源码解析与实现细节 文章脉络 模型结构图 类关系分析 简单类的源码 T5LayerNorm T5DenseActDense T5DenseGatedActDense T5LayerFF 复杂类的源码 常见参数介绍 最难的T5Attention源码 常见面试提问 总结 我们在日常业务中可能…

上传本地项目到gitee仓库(简单快速)

目录 前提准备 1.已经下载好git Bash 2.已经注册好gitee账号 3.在gitee上新建一个仓库 上传项目到gitee 1.找到本地需要传的文件目录 2.在本页面右键空白处&#xff0c;点击Git Bash Here 3.检查gitee账号是否存在或是否正确 4.若不正确或不存在则配置用户名和邮箱 5…

Matlab|【核心复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略

目录 主要内容 基本知识 1.问题引出 2.可控负荷 3.网络拓扑约束 4.算法流程 结果一览 1.原文结果 2.程序运行结果 下载链接 主要内容 该模型复现文章《同时考虑考虑孤岛与重构的配电网故障恢复运行策略》&#xff0c;以IEEE33配电网为分析对象&#xff0c;…

OceanMind海睿思数据工程2.0重磅发布,赋能企业“韧性”成长!

近日&#xff0c;由江苏省工业和信息化厅指导&#xff0c;江苏省企业信息化协会主办的 2024制造业数字化转型南京高峰论坛 圆满落幕。 中新赛克海睿思 作为长三角地区数字化转型优秀厂商代表受邀参会&#xff0c;并发布全新数据工程系列产品。中新赛克副总兼大数据产品线总经理…

python print用法

1.输出字符串换行 输出结果会换行&#xff0c;默认自带换行 print(111) print(0) 2.末尾插入字符串或去除换行 末尾只能插入字符串&#xff0c;不能是其他类型 print(111,end0) print(0) 3.变量&#xff0c;字符串混合输入 没有必要什么都学&#xff0c;好用的常用的学一…

设计定时任务实现数据同步的最佳实践

✨✨ 祝屏幕前的您天天开心&#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一、选择合适的定时任务框架 Quartz Spring 的 TaskScheduler JDK 的 ScheduledE…

记录何凯明在MIT的第一堂课:神经网络发展史

https://www.youtube.com/watch?vZ5qJ9IxSuKo 目录 表征学习 主要特点&#xff1a; 方法和技术&#xff1a; LeNet 全连接层​ 主要特点&#xff1a; 主要特点&#xff1a; 网络结构&#xff1a; AlexNet 主要特点&#xff1a; 网络结构&#xff1a; Sigmoid Re…

SDWebImage源码解析---疑难问题解答

SDWebImage的简单流程图&#xff1a; 上图大致流程是对的&#xff0c;有几个没写到的地方&#xff1a; 加载沙盒中对应的图片后&#xff0c;不仅要显示&#xff0c;而且要把图片缓存到内存中下载完毕后&#xff0c;有一个异步解码的过程&#xff0c;没体现出来 网上有大佬做了…

【JAVASE】学习数组的定义与使用

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a; 再无B&#xff5e;U&#xff5e;G-CSDN博客 目标&#xff1a; 1. 理解数组基本概念 2. 掌握数组的基本用法…

腾讯云函数计算技术:云原生架构下的Serverless与微服务新篇章

作者&#xff1a;哈哥撩编程&#xff08;视频号、公众号、抖音同名&#xff09; 新星计划全栈领域优秀创作者博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 文章目录 前言全面上云之首战&#xff1a;春保&#…

探索DAPP生态:代币预售、系统开发、NFT质押分红和代币质押技术

随着区块链技术的迅速发展&#xff0c;去中心化应用程序&#xff08;DAPPs&#xff09;生态系统已经成为了数字经济的一部分&#xff0c;并在不断壮大和发展。DAPP生态系统的繁荣离不开代币预售、系统开发、NFT质押分红和代币质押技术等关键要素的支持和推动。本文将深入探讨这…

热门IT【视频教程】-华为/思科/红帽/oracle

华为认证 网络工程师-入门基础课&#xff1a;华为HCIA认证课程介绍-CSDN博客 网络工程师进阶课&#xff1a;华为HCIP认证课程介绍-CSDN博客 职场进阶&#xff0c;踏上高峰——HCIE-Datacom认证-CSDN博客 华为HCIA试听课程 &#xff1a; 超级实用&#xff0c;华为VRP系统文件…

算法——距离计算

距离计算常用的算法包括欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等。这些算法在数据挖掘、机器学习和模式识别等领域中被广泛应用。 1.欧氏距离 欧式距离也称欧几里得距离&#xff0c;是最常见的距离度量&#xff0c;衡量的是多维空间中两个点之间的…

【LeetCode】三月题解

文章目录 [2369. 检查数组是否存在有效划分](https://leetcode.cn/problems/check-if-there-is-a-valid-partition-for-the-array/)思路&#xff1a;代码&#xff1a; [1976. 到达目的地的方案数](https://leetcode.cn/problems/number-of-ways-to-arrive-at-destination/) 思路…

lua脚本在redis集群中哈希槽分片问题

上文说到&#xff0c;通过用redis lua脚本实现时间窗分布式限流 可以操作redis lua脚本来实现时间窗限流&#xff0c;在执行lua脚本的时候&#xff0c;参数中有个keys列表&#xff0c;当lua脚本中如果有操作多个key的情况&#xff0c;就可以传个key列表了。通常情况下&#xff…

[蓝桥杯 2019 省赛 AB] 完全二叉树的权值

# [蓝桥杯 2019 省 AB] 完全二叉树的权值 ## 题目描述 给定一棵包含 $N$ 个节点的完全二叉树&#xff0c;树上每个节点都有一个权值&#xff0c;按从上到下、从左到右的顺序依次是 $A_1,A_2, \cdots A_N$&#xff0c;如下图所示&#xff1a; 现在小明要把相同深度的节点的权值…

【Windows】windows的bat命令获取当前文件名称

新建.txt文本输入IR *.* /B >LIST.TXT LIST.TXT 提取到LIST.TXT文件 重命名txt文本后缀为.bat双击.bat文件 DIR *.* /B >LIST.TXT效果图